前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hive2.2.0如何与CDH集群中的Spark1.6集成

Hive2.2.0如何与CDH集群中的Spark1.6集成

作者头像
Fayson
发布2018-07-12 14:53:30
1.2K0
发布2018-07-12 14:53:30
举报
文章被收录于专栏:Hadoop实操Hadoop实操

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

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服务是否正常。

代码语言:javascript
复制
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目录下

代码语言:javascript
复制
[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目录下

代码语言:javascript
复制
[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配置文件,在文件的末尾增加如下内容

代码语言:javascript
复制
<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服务

代码语言:javascript
复制
[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配置了命令的别名

代码语言:javascript
复制
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命令行验证

代码语言:javascript
复制
[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连接测试

代码语言:javascript
复制
[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实操

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档