thrift server可以实现通过jdbc, beeline等工具,实现连接到spark集群,并提交sql查询的机制。
默认情况下,cdh安装的spark没有包含thrift server模块,因此我们需要重新编译spark。
另外,为了不影响cdh自带的spark,而且spark目前都是基于yarn运行的,本身也没有什么独立的服务部署(除了history sever)。
所以,在一个集群中,可以部署安装多个版本的spark。
我们使用源码编译的spark 2.4.0(其中hive的版本是1.2.1)
cdh集成的spark版本和Hive版本如下:
image.png image.pngspark 2.4.0 编译
使用jdk1.8
修改spark提供的mvn,使用自行安装的maven 3.8.1
使用make-distribution.sh可以帮助与我们编译之后打包成tgz文件
修改pom.xml文件的配置如下。
image.png
最后,执行编译命令如下:
image.png这样打出的包,就含有thrift server的jar包了。
最终打包文件,根目录下。
image.png之后就是解压到其他目录下后即可。
image.png将hive-site.xml的文件连接过来,这样spark就可以读取hive的表了。
image.png为了确保spark提交到yarn上运行,需要配置
cp spark-defaults.conf.template spar-defaults.conf
image.png另外,可以在spark-env.sh中设置环境变量。
HADOOP_CONF_DIR
环境变量,也可以在/etc/profile中设置
Thrift server启动
image.png启动日志可以查看,注意下端口占用问题,如下。
image.png启动时候,使用beeline工具连接上,主要这里不用使用cdh默认安装hive提供的beeline工具,应为版本太高。
使用编译后spark生成beeline工具
image.png参考beeline使用教程。
kyuubi thrift server
https://github.com/apache/incubator-kyuubi
kyuubi是基于thrift sever二次开发,在系能和安全上优于thrift server。
鉴于目前hive的版本是2.1,而最新的kyuubi的hive是2.3,所以采用前天版本的kyuubi,采用0.7版本,保证hive的版本小于当前集群中的hive版本。
使用build目录下的dist脚本进行编译和打包。
image.png编译成功后,会在更目录下出现tar.gz的压缩文件,如上图。
之后解压到目录下。
配置bin/kyuubi-env.sh脚本,设置spark路径
image.png执行bin/start-kyuubi.sh命令即可。
访问的方式同样采用beelin,注意使用上面章节的beeline工具。
访问后,可以通过beeline访问到hive的表(在spark中已经配置了hive-site.xml)
!connect jdbc:hive2://xxxx:10009 即可。
网友评论