温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
Fayson的github:
提示:代码块部分可以左右滑动查看噢
1.文档编写目的
在前面的文章Fayson介绍了《如何在CDH中启用Spark Thrift》,本篇文章Fayson主要介绍如何在Kerberos环境下的CDH集群中部署Spark1.6的Thrift Server服务和Spark SQL客户端。
- 内容概述
1.部署Spark Thrift
2.启动与停止Spark Thrift
3.功能验证及总结
- 测试环境
1.CM和CDH版本为5.12.1
2.使用root用户操作
- 前置条件
1.集群已启用Kerberos
2.集群已启用Sentry
2.部署Spark Thrift
在CDH自带的Spark1.6的spark-assembly jar包缺少Hive Thrift的相关依赖包,这里部署Spark Thrift服务需要使用Spark官网编译的spark-assembly jar包来替换集群中原有的jar包。
1.下载spark-1.6.0-bin-hadoop2.6.tgz,官网下载地址如下:
(可左右滑动)
2.将下载的spark-1.6.0-bin-hadoop2.6.tgz包解压
(可左右滑动)
3.将解压出来的spark-assembly-1.6.0-hadoop2.6.0.jar包拷贝至CDH的jars目录下
(可左右滑动)
替换CDH中默认的Spark-assembly jar包
(可左右滑动)
注意:该步操作在集群所有节点上执行,因为考虑到后面部署spark-sql客户端,需要所有节点的spark-assessmbly jar包支持Thrift Server。
4.将spark-assembly-1.6.0-hadoop2.6.0.jar包上传至HDFS目录
(可左右滑动)
5.通过CM修改Spark的配置
配置spark_jar_hdfs_path路径
配置GateWay使用spark.yarn.jar
(可左右滑动)
配置Spark的JAVA_HOME和Spark血缘分析依赖包
(可左右滑动)
注意:这里配置sparke-env.sh时增加了SPARK_DIST_CLASSPATH配置参数,在CDH5.11版本后,Navigator2.10中增加了Spark的血缘分析,需要在spark中添加spark-lineage_2.10-1.6.0-cdh5.12.1.jar依赖包,否则Thrift启动会报
“com.cloudera.spark.lineage.ClouderaNavigatorListener”
错误。前面《如何在CDH中启用Spark Thrift》处理方式是在/etc/spark/conf/classpath.txt文件末尾增加依赖,这种配置方式在修改Spark客户端配置后会被覆盖,需要重新手动加入。通过使用SPARK_DIST_CLASSPATH的配置方式可以避免该问题。
6.部署Spark Thrift启动和停止脚本
将spark-1.6.0-bin-hadoop2.6/sbin/目录下的start-thriftserver.sh和stop-thriftserver.sh脚本拷贝至/opt/cloudera/parcels/CDH/lib/spark/sbin目录下,并设置执行权限
(可左右滑动)
修改load-spark-env.sh脚本,该脚本是启动Spark相关服务加载依赖环境
(可左右滑动)
将80行的exec "$SPARK_HOME/bin/$SCRIPT" "$@"内容注释
7.部署Spark SQL客户端
将spark-1.6.0-bin-hadoop2.6/bin/目录下的spark-sql脚本拷贝至/opt/cloudera/parcels/lib/spark/bin目录下
(可左右滑动)
3.启动与停止Spark Thrift
1.由于集群启用Kerberos,这里我们需要为Spark Thrift服务创建一个Kerberos账号
在KDC所在服务器上执行如下命令创建一个hive/cdh04.fayson.com@FAYSON.COM账号,并导出hive.keytab文件
(可左右滑动)
查看本地的hive.kytab文件是否为导出的hive/cdh04.fayson.com@FAYSON.COM账号
(可左右滑动)
将hive.keytab文件拷贝至SparkThriftServer服务所在服务器。
2.进入/opt/cloudera/parcels/CDH/lib/spark/sbin目录下执行脚本启动Thrift Server
(可左右滑动)
检查端口是否监听
(可左右滑动)
注意:为了防止和HiveServer2的10000端口冲突,可以在启动脚本中增加如下配置自定义端口,端口默认绑定的地址为127.0.0.1,不能远程访问需要将指定绑定host,0.0.0.0为监听所有IP地址。在启动Thrift Server时指定principal和keytab否则服务启动时会报初始化Kerberos失败。
通过CM的Yarn应用程序界面可以看到启动的ThriftServer服务
3.停止Spark ThriftServer服务
(可左右滑动)
4.验证Spark Thrift及spark-sql
1.使用fayson的Kerberos账号初始化,通过beeline测试
(可左右滑动)
上图可以看到成功使用Beeline连接Spark ThriftServer。
2.运行SQL测试
(可左右滑动)
3.通过Yarn的8088界面查看SQL操作都是通过Spark执行
4.spark-sql验证
(可左右滑动)
执行SQL操作
5.总结
1.在Kerberos环境下部署Spark Thrift服务时在启动时需要执行prinicipal和keytab文件,该Kerberos账号需要为hive用户。
2.在处理Spark 血缘分析依赖包的时候,Fayson前面的文章是在/etc/spark/confg/classpath.txt文件中添加,在修改配置后该文件会被覆盖需要再次添加依赖,本篇文章通过在spark-evn.sh环境变量中配置SPARK_DIST_CLASSPATH解决。
3.使用spark-sql客户端需要将集群所有节点CDH自带的spark-assembly Jar包替换为原生的spark-assembly-1.6.0-hadoop2.6.0.jar包。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操