47.Spark Thrift的启用——CDH

47.1 演示环境

  • CM和CDH版本是5.13.0
  • Spark1.6.0 On Yarn模式
  • root用户操作

47.2 操作演示

部署Spark-assembly Jar包

  • 下载spark-1.6.3-bin-hadoop2.6.tgz,下载地址如下:
https://www.apache.org/dyn/closer.lua/spark/spark-1.6.3/spark-1.6.3-bin-hadoop2.6.tgz
  • 将下载的spark-1.6.3-bin-hadoop2.6.tgz上传至集群的任意节点并解压,这里以cdh02节点为例
[root@cdh02 ~]# tar -zxvf spark-1.6.3-bin-hadoop2.6.tgz 
  • 将解压出来的spark-assembly-1.6.3-hadoop2.6.0.jar拷贝至CDH的jars目录
<pre style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(51, 51, 51); font-size: 17px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.544px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; background-color: rgb(202, 230, 202);">[root@cdh02 spark-1.6.3-bin-hadoop2.6]# scp /root/spark-1.6.3-bin-hadoop2.6/lib/spark-assembly-1.6.3-hadoop2.6.0.jar /opt/cloudera/parcels/CDH/jars/</pre>
  • 替换CDH中spark默认的spark-assembly jar包
<pre style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(51, 51, 51); font-size: 17px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.544px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; background-color: rgb(202, 230, 202);">[root@cdh02 lib]# cd /opt/cloudera/parcels/CDH/lib/spark/lib [root@cdh02 lib]# rm -rf spark-assembly-1.6.0-cdh5.13.0-hadoop2.6.0-cdh5.13.0.jar [root@cdh02 lib]# ln -s ../../../jars/spark-assembly-1.6.3-hadoop2.6.0.jar spark-assembly-1.6.0-cdh5.13.0-hadoop2.6.0-cdh5.13.0.jar</pre>
  • 将spark-assembly-1.6.3-hadoop2.6.0.jar包上传至HDFS目录
<pre style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(51, 51, 51); font-size: 17px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.544px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; background-color: rgb(202, 230, 202);">[root@cdh02 lib]# sudo -u spark hadoop fs -mkdir -p /user/spark/share/lib [root@cdh02 lib]# sudo -u spark hadoop fs -put /opt/cloudera/parcels/CDH/jars/spark-assembly-1.6.3-hadoop2.6.0.jar /user/spark/share/lib [root@cdh02 lib]# sudo -u spark hadoop fs -chmod **755** /user/spark/share/lib/spark-assembly-1.6.3-hadoop2.6.0.jar</pre>
  • 在CM上对Spark进行配置,保存配置并重启Spark服务。


  • 修改/etc/spark/conf/ classpath.txt文件在末尾增加如下内容
    • 由于CDH5.11以后版本,Navigator2.10增加了Spark的血缘分析,所以这里需要添加spark-lineage_2.10-1.6.0-cdh5.13.0.jar包,否则连接Spark会报错找不到com.cloudera.spark.lineage.ClouderaNavigatorListener类。
<pre style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(51, 51, 51); font-size: 17px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.544px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; background-color: rgb(202, 230, 202);">/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/jars/spark-lineage_2.10-1.6.0-cdh5.13.0.jar</pre>

部署Spark ThriftServer启动和停止脚本

  • 拷贝Spark ThriftServer启动和停止脚本
    • 将 spark-1.6.3-bin-hadoop2.6/sbin/目录下的 start-thriftserver.sh 和 stop-thriftserver.sh 脚本拷贝到/opt/cloudera/parcels/CDH/lib/spark/sbin目录下,并设置执行权限。
[root@cdh02 sbin]# scp start-thriftserver.sh stop-thriftserver.sh /opt/cloudera/parcels/CDH/lib/spark/sbin/
[root@cdh02 sbin]# chmod +x /opt/cloudera/parcels/CDH/lib/spark/sbin/*thriftserver.sh
[root@cdh02 sbin]# ll /opt/cloudera/parcels/CDH/lib/spark/sbin/
  • 修改 load-spark-env.sh 脚本,这个脚本是启动 spark 相关服务时加载环境变量信息的
[root@ip-172-31-5-190 sbin]# cd /opt/cloudera/parcels/CDH/lib/spark/bin
[root@ip-172-31-5-190 bin]# pwd
/opt/cloudera/parcels/CDH/lib/spark/bin
[root@ip-172-31-5-190 bin]# 
## 将注释掉exec "$SPARK_HOME/bin/$SCRIPT""$@",因为在start-thriftserver.sh脚本中会执行这个命令

启动与停止Spark ThriftServer

  • 启动Spark ThriftServer服务
[root@ip-172-31-5-190 sbin]# ./start-thriftserver.sh
  • 检查端口是否监听
    • 注意:为了防止跟HiveServer2的10000端口冲突,可以自己修改Spark ThriftServer的启动端口。
[root@ip-172-31-5-190 sbin]# netstat -an |grep 10000
  • 通过Yarn查看
  • 停止服务
[root@ip-172-31-5-190 sbin]# ./stop-thriftserver.sh 
  • 检查端口是否已停止

测试Spark Thrift

  • 使用beeline通过JDBC连接Spark,可以发现连接的是Spark SQL
[root@ip-172-31-5-190 ~]# beeline
beeline> !connect jdbc:hive2://ip-172-31-5-190:10000
Enter username for jdbc:hive2://ip-172-31-5-190:10000: hive
Enter password for jdbc:hive2://ip-172-31-5-190:10000:
  • 运行SQL测试
<pre style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; color: rgb(51, 51, 51); font-size: 17px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.544px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; background-color: rgb(202, 230, 202);">*0:* jdbc:hive2://ip-172-31-5-190:10000*> show* tables;
0: jdbc:hive2://ip-172-31-5-190:10000*>* **select** count(*) *from* test_table;
0: jdbc:hive2://ip-172-31-5-190:10000*>* **select** * from test;
0: jdbc:hive2://ip-172-31-5-190:10000*>* **select** * from test_table;
0: jdbc:hive2://ip-172-31-5-190:10000*>* **select** count(test_table.s2) *from* test_table join test on test_table.s1=test.s1;</pre>
  • 在Yarn的8088中查看Spark任务,可以发现都是通过Spark执行的。

总结

  • CDH默认不支持Spark Thrift,需要使用Spark原生的spark-assembly jar包替换CDH自带的jar包
  • CDH5.11版本以后,Navigator2.10增加了Spark的血缘分析,所以需要将spark-lineage的jar加载的Spark的运行环境。
    • 否则连接Spark会报错找不到com.cloudera.spark.lineage.ClouderaNavigatorListener类。
  • CDH5.10或之前版本不用加载这个jar包。参考:
https://www.cloudera.com/documentation/enterprise/release-      notes/topics/cn_rn_known_issues.html#spark

大数据视频推荐:
腾讯课堂
CSDN
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容