hive on spark配置方案详解

一、安装hive-on-spark客户端
1、下载已编译好的spark安装包:sparkengine-2.3.4.tgz。
2、将该spark客户端,放到/usr/hdp/3.1.0.0-78/hive目录下,命名为sparkengine。只需要部署在hiveserver2节点即可。
3、配置conf/spark-default.conf和spark-env.sh

conf/spark-env.sh中增加:
export HADOOP_CONF_DIR=/usr/hdp/3.1.0.0-78/hadoop/conf
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

conf/spark-defaults.conf中增加:
spark.driver.extraJavaOptions -Dhdp.version=3.1.0.0-78
spark.yarn.am.extraJavaOptions -Dhdp.version=3.1.0.0-78

增加一个conf/java-opts文件:
echo “-Dhdp.version=3.1.0.0-78” >conf/java-opts

二、配置yarn的资源调度器
yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

三、配置hive:只需要部署在hiveserver2节点上即可。
1、在/usr/hdp/3.1.0.0-78/hive/lib中添加spark2的依赖包
sudo cp sparkengine-2.3.4/jars/scala-library*.jar hive/lib/
sudo cp sparkengine-2.3.4/jars/spark-core*.jar hive/lib/
sudo cp sparkengine-2.3.4/jars/spark-network-common*.jar hive/lib/

2、修改hive配置文件
(1)、在高级hive-env中配置spark-home:
export SPARK_HOME=${HIVE_HOME}/sparkengine-2.3.4

如果不设置SPARK_HOME,会使用HDP默认的SparkSubmit命令来提交job。
##INFO [HiveServer2-Background-Pool: Thread-4928]: client.SparkClientImpl (😦)) - No spark.home provided, calling SparkSubmit directly.

(2)、在【自定义hive-site】中,增加自定义属性:
##hive.execution.engine=spark ##如果默认使用spark引擎,可修改该属性。
spark.master=yarn
spark.driver.memory=4g
spark.executor.cores=2
spark.executor.memory=2g
spark.executor.instances=2
spark.eventLog.enabled=true
spark.eventLog.dir=hdfs://d***:8020/hive-spark
spark.network.timeout=300
spark.serializer=org.apache.spark.serializer.KryoSerializer
spark.driver.extraJavaOptions=-Dhdp.version=3.1.0.0-78 ##如果不配置,spark executor无法启动。
spark.yarn.am.extraJavaOptions=-Dhdp.version=3.1.0.0-78
spark.yarn.jars=hdfs://demo2:8020/spark2-jars/*

spark.executor.extraJavaOptions=-XX:+UseG1GC -XX:+PrintFlagsFinal -XX:+PrintReferenceGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintAdaptiveSizePolicy -XX:+UnlockDiagnosticVMOptions -XX:+G1SummarizeConcMark -XX:InitiatingHeapOccupancyPercent=35
spark.dynamicAllocation.enabled=false ##资源动态分配
spark.dynamicAllocation.initialExecutors=2
spark.shuffle.service.enabled=false ###如果设置为true,需要yarn中配置相关参数。
spark.driver.memoryOverhead=400
spark.executor.memoryOverhead=400
set hive.merge.sparkfiles=true;–合并小文件

3、上传spark本身的包至hdfs:
hdfs dfs -mkdir /hive-spark ##spark.eventLog.dir
hdfs dfs -mkdir /spark2-jars ##spark.yarn.jars
hdfs dfs -put /usr/hdp/3.1.0.0-78/hive/sparkengine-2.3.4/jars/* /spark2-jars/

4、重启hive

五、测试hive on spark是否生效
hive --hiveconf hive.execution.engine=spark
set hive.execution.engine=spark;

登录hive:
beeline -u “jdbc:hive2://d***2:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2” --hiveconf hive.execution.engine=spark -n @@@ -p ***@123

使用稍微复杂点的sql进行测试:
select oper_type,count(distinct user_id),count(distinct item_id) from oper_test group by oper_type;

查看yarn里有无application启动。beeline中执行的sql有无查询结果。

### Hive on Spark 配置与使用指南 Hive on Spark 允许将 Hive 查询的执行引擎切换为 Spark,从而利用 Spark 的内存计算优势提升查询性能。以下是配置和使用 Hive on Spark 的详细指南。 #### 1. 环境准备 在开始配置之前,确保以下组件已正确安装并运行: - Hadoop 集群(HDFS 和 YARN) - Spark 集群(基于 Hadoop 集群安装) - Hive 服务 Hive 默认使用 MapReduce 作为执行引擎,要切换为 Spark,需要确保 HiveSpark 的版本兼容性。例如,Hive 3.1.3 可以与 Spark 3.0.0 配合使用 [^3]。 #### 2. 配置 Hive 使用 Spark 作为执行引擎 在 Hive 配置文件中设置以下参数以启用 Spark 作为执行引擎: ```sql SET hive.execution.engine=spark; SET spark.home=/path/to/spark; SET spark.master=yarn; SET spark.submit.deployMode=cluster; ``` - `hive.execution.engine`:设置为 `spark` 以启用 Spark 作为执行引擎。 - `spark.home`:指定 Spark 的安装路径。 - `spark.master`:定义 Spark 的运行模式,通常为 `yarn`。 - `spark.submit.deployMode`:设置为 `cluster` 以在 YARN 集群模式下运行 [^4]。 #### 3. Spark 相关参数配置 为了优化 Hive on Spark 的性能,可以调整以下 Spark 参数: ```sql SET spark.eventLog.enabled=true; SET spark.executor.memory=4g; SET spark.executor.instances=10; SET spark.driver.memory=2g; SET spark.dynamicAllocation.enabled=true; ``` - `spark.eventLog.enabled`:启用事件日志记录,便于调试和性能分析。 - `spark.executor.memory`:设置每个 Executor 的内存大小。 - `spark.executor.instances`:指定 Executor 的数量。 - `spark.driver.memory`:设置 Driver 的内存大小。 - `spark.dynamicAllocation.enabled`:启用动态分配以根据负载自动调整 Executor 数量 [^2]。 #### 4. 验证配置 配置完成后,可以通过执行简单的 HiveQL 查询来验证 Hive on Spark 是否正常工作: ```sql SELECT * FROM sample_table LIMIT 10; ``` 如果查询成功执行并返回结果,则表示 Hive on Spark 配置正确。 #### 5. 性能调优建议 为了进一步提升 Hive on Spark 的性能,可以参考以下调优策略: - **内存管理**:根据数据量和集群资源调整 `spark.executor.memory` 和 `spark.driver.memory`。 - **动态资源分配**:启用 `spark.dynamicAllocation.enabled` 以优化资源利用率 [^5]。 - **并行度设置**:通过 `spark.sql.shuffle.partitions` 调整 Shuffle 分区数,以优化并行计算效率。 - **缓存机制**:对频繁访问的数据表使用 `CACHE TABLE` 命令,减少重复计算 [^1]。 #### 6. 注意事项 - 确保 HiveSpark 的版本兼容性,避免因版本不匹配导致的问题 [^3]。 - 在调整配置参数时,应根据实际业务需求和系统资源状况进行合理设置 。 - 动态分配模式更适合多用户共享的 Hive 集群环境,以提高资源利用率 [^5]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值