网站首页 > 技术文章 正文
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
Fayson的github:https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1.文档编写目的
在前面的文章Fayson介绍了《
如何在CDH集群中安装Hive2.3.3
》,本篇文章主要介绍Hive2.2.0服务如何与CDH集群中的Spark1.6集成,Hive on Spark对于Hive和Spark的版本都有严格的要求,Fayson本文使用的是Hive2.2.0版本做测试,具体版本的版本兼容性如下:
- 内容概述
1.环境准备
2.Hive2.2.0集成Spark1.6
3.验证是否集成成功
4.总结
- 测试环境
1.CM和CDH版本为5.14.2
2.Hive的版本为2.2.0
3.操作系统版本为RedHat7.4
4.JDK版本为1.8.0_131
2.环境准备
1.Hive2服务部署成功且正常使用
这里Hive2服务的部署就不在介绍了,可以参考Fayson前面《
如何在CDH集群中安装Hive2.3.3
》文章。
使用beeline和HiveCLI都可以登录Hive2.2.0并正常使用。
2.CDH集群已部署Spark1.6且服务正常
提交一个Spark作业测试Spark服务是否正常。
spark-submit --class org.apache.spark.examples.SparkPi\ --master yarn-client --num-executors 4 --driver-memory 2g\ --driver-cores 1 --executor-memory 2g --executor-cores 1\ /opt/cloudera/parcels/CDH/lib/spark/lib/spark-examples.jar 10
(可左右滑动)
作业成功执行
3.Hive2集成Spark1.6
1.创建软连将${SPARK}_HOME}/lib目录下的spark-assembly.jar包软连至${HIVE2_HOME}/lib目录下
[root@ip-172-31-5-38 lib]# pwd /opt/cloudera/HIVE2/lib [root@ip-172-31-5-38 lib]# ln -s /opt/cloudera/parcels/CDH/lib/spark/lib/spark-assembly.jar spark-assembly.jar [root@ip-172-31-5-38 lib]# ll spark-assembly.jar
(可左右滑动)
2.将Spark1.6的spark-assembly.jar包上传至HDFS的/spark-jars目录下
[root@ip-172-31-5-38 lib]# pwd /opt/cloudera/HIVE2/lib [root@ip-172-31-5-38 lib]# ln -s /opt/cloudera/parcels/CDH/lib/spark/lib/spark-assembly.jar spark-assembly.jar [root@ip-172-31-5-38 lib]# ll spark-assembly.jar
(可左右滑动)
将Hive2 On Spark的Spark依赖包放在HDFS上,防止Yarn运行Spark作业时分发spark-assembly.jar包
3.修改hive-site.xml配置文件,在文件的末尾增加如下内容
<property> <name>spark.master</name> <value>yarn-cluster</value> </property> <property> <name>hive.merge.sparkfiles</name> <value>true</value> </property> <property> <name>spark.executor.memory</name> <value>1g</value> </property> <property> <name>spark.driver.memory</name> <value>1g</value> </property> <property> <name>spark.executor.cores</name> <value>1</value> </property> <property> <name>spark.yarn.driver.memoryOverhead</name> <value>102</value> </property> <property> <name>spark.yarn.executor.memoryOverhead</name> <value>326</value> </property> <property> <name>spark.dynamicAllocation.enabled</name> <value>true</value> </property> <property> <name>spark.dynamicAllocation.initialExecutors</name> <value>1</value> </property> <property> <name>spark.dynamicAllocation.minExecutors</name> <value>1</value> </property> <property> <name>spark.dynamicAllocation.maxExecutors</name> <value>2147483647</value> </property> <property> <name>hive.spark.dynamic.partition.pruning.map.join.only</name> <value>false</value> </property> <property> <name>spark.shuffle.service.enabled</name> <value>true</value> </property> <property> <name>spark.eventLog.enabled</name> <value>true</value> </property> <property> <name>spark.eventLog.dir</name> <value>hdfs://ip-172-31-8-230.ap-southeast-1.compute.internal:8020/user/spark/applicationHistory</value> </property> <property> <name>spark.yarn.jar</name> <value>hdfs://ip-172-31-8-230.ap-southeast-1.compute.internal:8020/spark-jars/spark-assembly.jar</value> </property>
(可左右滑动)
注意:上述的配置中多数配置信息为Spark作业执行参数,需要注意的是spark.eventLog.enabled和spark.eventLog.dir需要指定,否则Spark作业执行完成后不能通过Spark的History查看到执行成功的作业,日志目录指定的地址如果不配置hdfs路径则默认使用的是本地目录。
4.完成如上配置后,重启HIveMetastore和HiveServer2服务
[root@ip-172-31-5-38 ~]# hive2 [root@ip-172-31-5-38 ~]# hive2-server [root@ip-172-31-5-38 ~]# ps -ef |grep -i hivemetastore [root@ip-172-31-5-38 ~]# ps -ef |grep -i hiveserver2
(可左右滑动)
Fayson这里可以使用hive2和hive2-server命令是因为在/etc/profile配置了命令的别名
alias hive2="nohup /opt/cloudera/HIVE2/bin/hive --service metastore > /opt/cloudera/HIVE2/logs/hive-metastore.log 2>&1 &" alias hive2-server="nohup /opt/cloudera/HIVE2/bin/hive --service hiveserver2 > /opt/cloudera/HIVE2/logs/hive-server2.log 2>&1 &" alias beeline2="/opt/cloudera/HIVE2/bin/beeline"
(可左右滑动)
4.验证Hive2 On Spark
1.HiveCLI命令行验证
[root@ip-172-31-5-38 bin]# sudo -u hive ./hive hive> use test; hive> set hive.execution.engine=spark; hive> select id,count(*) from test_table group by id ;
(可左右滑动)
查看Yarn的运行的作业类型
2.使用beeline连接测试
[root@ip-172-31-5-38 ~]# beeline2 beeline> !connect jdbc:hive2://localhost:10000 hive hive 0: jdbc:hive2://localhost:10000> use test; 0: jdbc:hive2://localhost:10000> set hive.execution.engine=spark; 0: jdbc:hive2://localhost:10000> select id,count(*) from test_table group by id;
(可左右滑动)
观察Yarn运行的作业类型
5.总结
1.配置集成Hive2 On Spark时需要注意在hive-site.xml文件中配置
spark.eventLog.enabled和spark.eventLog.dir否则Spark作业不会在Spark的History界面显示,也可以不在配置文件中指定,在运行作业是使用set的方式指定。
2.访问Hive2执行Spark作业时会看到,会在Yarn上启动一个Spark的常驻进程,当前会话的所有SQL操作均在该常驻进程中执行会在该作业下产生多个Job Id,不会产生新的Spark作业,当会话终止时该Spark作业会停止,这里需要注意的是如果会话异常退出可能导致该常驻作业不会停止。
更多配置说明和官网推荐配置可参考如下链接:
https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started#HiveonSpark:GettingStarted-RecommendedConfiguration
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
猜你喜欢
- 2024-10-12 大数据分析工具——hive入门 hive数据分析的一般流程是什么
- 2024-10-12 019Hive基本使用03 019Hive基本使用03 #liaoit
- 2024-10-12 手把手教你搭建Hive环境 搭建hive集群
- 2024-10-12 0474-如何使用SQL Developer访问Hive
- 2024-10-12 大数据之-HIVE入门(十四) php hive大数据处理
- 2024-10-12 Hive 迁移参考方案及测试(下) hive表迁移
- 2024-10-12 如何在HUE上通过oozie调用Hive SQL工作流
- 2024-10-12 百度二面:你做过哪些Hive调优啊? hive调优与参数设置
- 2024-10-12 HiveSQL:如何从给定的日期中减去指定数量的天数?
- 2024-10-12 0671-6.2.0-如何将CDH5.12的Hive元数据迁移到CDH6.2
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)