前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Kerberos环境下的CDH集群部署Spark2.1的Thrift及spark-sql客户端

如何在Kerberos环境下的CDH集群部署Spark2.1的Thrift及spark-sql客户端

作者头像
Fayson
发布2018-07-11 16:30:51
2.5K6
发布2018-07-11 16:30:51
举报
文章被收录于专栏:Hadoop实操Hadoop实操

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

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.文档编写目的


在前面的文章Fayson介绍了《如何在CDH中启用Spark Thrift》,《如何在Kerberos环境下的CDH集群部署Spark1.6 Thrift及spark-sql客户端》,《如何在Kerberos环境下的CDH集群部署Spark2.1的Thrift及spark-sql客户端》。本篇文章Fayson主要介绍如何在Kerberos环境下的CDH集群中部署Spark2.1的Thrift Server服务和Spark SQL客户端。

Fayson昨天的文章标题有错误,Spark2.1 SQL是非Kerberos的,今天才是介绍Kerberos环境下安装配置。

  • 内容概述

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 

(可左右滑动)

3.启动与停止Spark Thrift


1.由于集群启用Kerberos,这里我们需要为Spark Thrift服务创建一个Kerberos账号

在KDC所在服务器上执行如下命令创建一个hive/cdh03.fayson.com@FAYSON.COM账号,并导出hive.keytab文件

代码语言:javascript
复制
[root@cdh01 ~]# kadmin.local 
kadmin.local:  addprinc -randkey hive/cdh03.fayson.com@FAYSON.COM
kadmin.local:  xst -norandkey -k hive-cdh03.keytab hive/cdh03.fayson.com@FAYSON.COM

(可左右滑动)

查看本地的hive.kytab文件是否为导出的hive/cdh03.fayson.com@FAYSON.COM账号

代码语言:javascript
复制
[root@cdh01 ~]# klist -e -kt hive-cdh03.keytab 

(可左右滑动)

将hive-cdh03.keytab文件拷贝至Spark2.1 ThriftServer服务所在服务器。

代码语言:javascript
复制
[root@cdh01 ~]# scp hive-cdh03.keytab cdh03.fayson.com:/opt/cloudera/parcels/SPARK2/lib/spark2/sbin/

(可左右滑动)

2.进入/opt/cloudera/parcels/CDH/lib/spark/sbin目录下执行脚本启动Thrift Server

代码语言:javascript
复制
cd /opt/cloudera/parcels/SPARK2/lib/spark2/sbin
./start-thriftserver.sh --hiveconf hive.server2.authentication.kerberos.principal=hive/cdh03.fayson.com@FAYSON.COM \
  --hiveconf hive.server2.authentication.kerberos.keytab=hive-cdh03.keytab \
  --hiveconf hive.server2.thrift.port=10002 \
  --hiveconf hive.server2.thrift.bind.host=0.0.0.0 \
  --principal hive/cdh03.fayson.com@FAYSON.COM --keytab hive-cdh03.keytab

(可左右滑动)

检查端口是否监听

代码语言:javascript
复制
[root@cdh03 sbin]# netstat -apn |grep 10002

(可左右滑动)

log日志正常输出

注意:为了防止和HiveServer2的10000端口冲突,可以在启动脚本中增加如下配置自定义端口,端口默认绑定的地址为127.0.0.1,不能远程访问需要将指定绑定host,0.0.0.0为监听所有IP地址。在启动Thrift Server时指定principal和keytab否则服务启动时会报初始化Kerberos失败。

通过CM的Yarn应用程序界面可以看到启动的ThriftServer服务

3.停止Spark ThriftServer服务

代码语言:javascript
复制
[root@cdh03 sbin]# ./stop-thriftserver.sh

(可左右滑动)

查看ThriftServer服务是否停止

4.验证Spark Thrift及spark-sql


1.使用fayson的Kerberos账号初始化,通过beeline测试

代码语言:javascript
复制
[root@cdh01 ~]# kinit fayson
[root@cdh01 ~]# klist
[root@cdh01 ~]# beeline 
beeline> !connect jdbc:hive2://cdh03.fayson.com:10002/;principal=hive/cdh03.fayson.com@FAYSON.COM

(可左右滑动)

上图可以看到成功使用Beeline连接Spark ThriftServer。

2.运行SQL测试

代码语言:javascript
复制
0: jdbc:hive2://cdh03.fayson.com:10001/> show tables;
0: jdbc:hive2://cdh03.fayson.com:10001/> select * from test;
0: jdbc:hive2://cdh03.fayson.com:10001/> select count(*) from test;
0: jdbc:hive2://cdh03.fayson.com:10001/> 

(可左右滑动)

3.通过Yarn的8088界面查看SQL操作都是通过Spark执行

4.spark-sql验证

代码语言:javascript
复制
[root@cdh03 ~]# kinit fayson
[root@cdh03  ~]# /opt/cloudera/parcels/CDH/lib/spark/bin/spark-sql

(可左右滑动)

执行SQL操作

5.总结


1.在安装Spark2的版本我们需要配置JDK的版本为1.8,这里需要注意在文章里面Fayson没有明确说明JDK环境变量的配置,但是必须要配置。

2.在Kerberos环境下部署Spark Thrift服务时在启动时需要执行prinicipal和keytab文件,该Kerberos账号需要为hive用户。

3.使用spark-sql客户端需要将提到的两个jar包部署到集群所有节点。

在这里Fayson做了Spark2.2.0和Spark2.3.0版本的ThriftServer服务出现版本不兼容的问题,问题暂未解决,有解决的朋友可以与Fayson分享下。

Spark2.2.0版本部署ThriftServer服务时抛出的异常:

Spark2.3版本部署ThriftServer服务时抛出的异常:

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

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

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

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

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

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