温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
Fayson的github: https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1.文档编写目的
在前面的文章Fayson介绍了《如何在CDH中启用Spark Thrift》和《如何在Kerberos环境下的CDH集群部署Spark1.6 Thrift及spark-sql客户端》,本篇文章Fayson主要介绍如何在非Kerberos环境下的CDH集群中部署Spark2.1的Thrift Server服务和Spark SQL客户端。
- 内容概述
1.部署Spark Thrift
2.启动与停止Spark Thrift
3.功能验证及总结
- 测试环境
1.CM和CDH版本为5.12.1
2.使用root用户操作
- 前置条件
1.集群未启用Kerberos
2.集群已启用Sentry
3.集群Spark2.1.0已部署且正常运行
2.部署Spark Thrift
在CDH自带的Spark2.1.0的缺少spark-hive-thriftserver的依赖包,部署Spark2.1 ThriftServer服务需要使用Spark2.1官网编译的原生spark-hive-thriftserver jar包。
1.下载spark-2.1.0-bin-hadoop2.6.tgz,官网下载地址如下:
代码语言:javascript复制http://mirrors.hust.edu.cn/apache/spark/spark-2.1.0/spark-2.1.0-bin-hadoop2.6.tgz
(可左右滑动)
2.将下载的spark-2.1.0-bin-hadoop2.6.tgz包解压
代码语言:javascript复制[root@cdh03 ~]# tar -zxvf spark-2.1.0-bin-hadoop2.6.tgz
(可左右滑动)
3.将解压出来的spark-2.1.0-bin-hadoop2.6/jars目录下的hive-cli-1.2.1.spark2.jar和spark-hive-thriftserver_2.11-2.1.0.jar两个jar包拷贝至/opt/cloudera/parcels/SPARK2/lib/spark2/jars目录下
代码语言:javascript复制[root@cdh03 ~]# cd /root/spark-2.1.0-bin-hadoop2.6/jars/
[root@cdh03 jars]# ll *hive*.jar
[root@cdh03 jars]# cp hive-cli-1.2.1.spark2.jar spark-hive-thriftserver_2.11-2.1.0.jar /opt/cloudera/parcels/SPARK2/lib/spark2/jars/
[root@cdh03 jars]# ll /opt/cloudera/parcels/SPARK2/lib/spark2/jars/*hive*.jar
(可左右滑动)
注意:该步操作在集群所有节点上执行,因为考虑到后面部署spark-sql客户端,需要将这两个Jar包拷贝至集群所有节点。
4.将/opt/cloudera/parcels/SPARK2/lib/spark2/jars目录下的所有jar上传至HDFS,如果目录不存在则创建
代码语言:javascript复制[root@cdh03 jars]# kinit spark/admin
Password for spark/admin@FAYSON.COM:
[root@cdh03 jars]# cd /opt/cloudera/parcels/SPARK2/lib/spark2/jars/
[root@cdh03 jars]# hadoop fs -mkdir -p /user/spark/share/spark2-jars
[root@cdh03 jars]# hadoop fs -put *.jar /user/spark/share/spark2-jars
[root@cdh03 jars]# hadoop fs -ls /user/spark/share/spark2-jars
(可左右滑动)
5.通过CM修改Spark的配置
配置spark.yarn.jars路径
代码语言:javascript复制spark.yarn.jars=hdfs://nameservice1/user/spark/share/spark2-jars/*.jar
(可左右滑动)
6.部署Spark Thrift启动和停止脚本
将spark-2.1.0-bin-hadoop2.6/sbin/目录下的start-thriftserver.sh和stop-thriftserver.sh脚本拷贝至/opt/cloudera/parcels/SPARK2/lib/spark2/sbin目录下
代码语言:javascript复制[root@cdh03 jars]# cd /root/spark-2.2.0-bin-hadoop2.6/sbin/
[root@cdh03 sbin]# ll *thrift*.sh
[root@cdh03 sbin]# cp *thrift*.sh /opt/cloudera/parcels/SPARK2/lib/spark2/sbin/
[root@cdh03 sbin]# ll /opt/cloudera/parcels/SPARK2/lib/spark2/sbin/*thriftserver*
(可左右滑动)
修改load-spark-env.sh脚本,该脚本是启动Spark相关服务加载依赖环境
代码语言:javascript复制[root@cdh03 sbin]# cd /opt/cloudera/parcels/SPARK2/lib/spark2/bin
[root@cdh03 bin]# vim load-spark-env.sh
(可左右滑动)
将80行的exec "$SPARK_HOME/bin/$SCRIPT" "$@"内容注释
7.部署Spark SQL客户端
将spark-2.1.0-bin-hadoop2.6/bin/目录下的spark-sql脚本拷贝至/opt/cloudera/parcels/SPARK2/lib/spark2/bin目录下
代码语言:javascript复制[root@cdh03 ~]# cd spark-2.1.0-bin-hadoop2.6/bin/
[root@cdh03 bin]# pwd
[root@cdh03 bin]# cp /root/spark-2.1.0-bin-hadoop2.6/bin/spark-sql /opt/cloudera/parcels/SPARK2/lib/spark2/bin
[root@cdh03 bin]# ll /opt/cloudera/parcels/SPARK2/lib/spark2/bin/spark-sql
(可左右滑动)
在Spark2的HOME目录创建如下目录:
代码语言:javascript复制[root@cdh02 ~]# mkdir -p /opt/cloudera/parcels/SPARK2/lib/spark2/launcher/target/scala-2.11
(可左右滑动)
3.启动与停止Spark Thrift
1.进入/opt/cloudera/parcels/CDH/lib/spark/sbin目录下执行脚本启动Thrift Server
指定hive用户启动ThriftServer服务
代码语言:javascript复制[root@cdh02 sbin]# cd /opt/cloudera/parcels/SPARK2/lib/spark2/sbin
[root@cdh02 sbin]# export HADOOP_USER_NAME=hive
./start-thriftserver.sh --hiveconf hive.server2.thrift.port=10001
--hiveconf hive.server2.thrift.bind.host=0.0.0.0
(可左右滑动)
检查端口是否监听
代码语言:javascript复制[root@cdh02 sbin]# netstat -apn |grep 10001
(可左右滑动)
log日志正常输出
注意:为了防止和HiveServer2的10000端口冲突,可以在启动脚本中增加如下配置自定义端口,端口默认绑定的地址为127.0.0.1,不能远程访问需要将指定绑定host,0.0.0.0为监听所有IP地址。
通过CM的Yarn应用程序界面可以看到启动的ThriftServer服务
2.停止Spark ThriftServer服务
代码语言:javascript复制[root@cdh02 sbin]# ./stop-thriftserver.sh
(可左右滑动)
查看ThriftServer服务是否停止
4.验证Spark Thrift及spark-sql
1.通过beeline测试
代码语言:javascript复制[root@cdh02 ~]# beeline
beeline> !connect jdbc:hive2://cdh02.fayson.com:10001 hive hive
(可左右滑动)
上图可以看到成功使用Beeline连接Spark ThriftServer。
2.运行SQL测试
代码语言:javascript复制0: jdbc:hive2://cdh02.fayson.com:10001/> show tables;
0: jdbc:hive2://cdh02.fayson.com:10001/> select * from test;
0: jdbc:hive2://cdh02.fayson.com:10001/> select count(*) from test;
0: jdbc:hive2://cdh02.fayson.com:10001/>
(可左右滑动)
3.通过Yarn的8088界面查看SQL操作都是通过Spark执行
4.spark-sql验证
代码语言:javascript复制[root@cdh02 ~]# export HADOOP_USER_NAME=hive
[root@cdh02 ~]# /opt/cloudera/parcels/SPARK2/lib/spark2/bin/spark-sql
(可左右滑动)
执行SQL操作
5.总结
1.在安装Spark2的版本我们需要配置JDK的版本为1.8,这里需要注意在文章里面Fayson没有明确说明JDK环境变量的配置,但是必须要配置。
2.使用spark-sql客户端需要将提到的两个jar包部署到集群所有节点。
注意:部署spark-sql客户端时需要创建$SPARK_HOME/launcher/target/scala-2.11目录,否则启动会报“java.lang.IllegalStateException: Cannotfind any build directories.”
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操