栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

社区版本sparkthriftserver对接开kerberos的cdp/cdh的metastore

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

社区版本sparkthriftserver对接开kerberos的cdp/cdh的metastore

引言

#社区sparkthrift对接开kerberos的cdp/cdh的metastore,也开启了ssl。
#ps:都自己对接过了。按照下面的文档ok。

步骤

#首先除了先搭建好的cdp外,另外搭建一台机器,上面只需要hadoop的客户端和spark、kerberos客户端即可。
yum install krb5-workstation krb5-libs krb5-auth-dialog

kerberos客户端需要修改,和对应cdp集群的保持一致。
PS:一般是修改/etc/krb5.conf这个客户端配置即可。

#hadoop客户端的core-site.xml hdfs-site.xml yarn-site.xml记得需要更换成对接集群的文件
PS:这里放hadoop文件是为了能使用hdfs命令,如果不需要的话就不用改,因为spark的conf里面只需要hive-site.xml。

spark的conf下hive-site.xml配置:
#在单独的spark tirift机器里面的hive-site.xml的配置的话只要修改thrift为cdp/cdh集群的,并且新增kerberos和ssl的配置,其他配置默认的就ok。

#修改

hive.metastore.uris
thrift://cdp02:9083
Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.

#新增/修改
#如果是spark的thrift不开启kerberos的话,下面的hiveserver2相关配置去掉就好。我下面的配置是因为hive的metastore和这个thrift都需要开启kerberos。


hive.metastore.sasl.enabled
true


    hive.server2.authentication
    kerberos


hive.metastore.kerberos.principal
hive/cdp02@DTSTACK.COM


hive.server2.authentication.kerberos.keytab
/opt/dtstack/Spark/spark_pkg/conf/hive.keytab


hive.metastore.kerberos.keytab.file
/opt/dtstack/Spark/spark_pkg/conf/hive.keytab


hive.server2.authentication.kerberos.principal
hive/cdp02@DTSTACK.COM

#以上的票据必须从cdp集群拷贝过来,而且需要注意metastore是否在这台机器,拷贝好princpal文件即可。

启动

#spark thrift可开kerberos也可不开,开关在于启动参数,还有个hive-site.xml配置文件需要修改,参考下方配置即可。启动命令的话各式各样,比如我的是下面这个:

"${SPARK_HOME}"/bin/spark-submit  --class "$command"  --name 'Thrift JDBC/ODBC Server' --conf "spark.driver.extraJavaOptions=-javaagent:./dtstack/prometheus/jmx_prometheus_javaagent-0.3.1.jar=9508:./dtstack/prometheus/spark-prometheus.yml" --conf spark.driver.memory=2G --executor-memory 1G --num-executors 2 --name=ThriftServer02  --principal hive/cdp02@DTSTACK.COM --keytab /opt/dtstack/Spark/spark_pkg/conf/hive.keytab --driver-java-options "-XX:HeapDumpPath=./logs/thriftserver_heap.hprof -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError -XX:+UseGCLogFileRotation -Xloggc:./logs/spark_thriftserver_gc.log -XX:NumberOfGCLogFiles=2 -XX:GCLogFileSize=256M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -Dlog4j.configuration=file:/opt/dtstack/Spark/spark_pkg/conf/log4j.properties -Dapp.logging.name=$logname "   >> "${log}" 2>&1 < /dev/null

#其他参数都ok

遇到的问题

问题一:
#spark的conf里面需要hdfs-site.xml core-site.xml hive-site.xml yarn-site.xml。
#如果缺少了yarn-site.xml的话,thrift查询会报错如下:
java.io.IOException: Can’t get Master Kerberos principal for use as renewer
PS:这一步是我之前第一次遇到的报错了,我现在已经不确定是否能够复现。因为第二次也是放东西进去了。如果报错的话就这样操作吧。因为按理来说spark conf下是不需要hdfs yarn这些配置的,我没有二次验证记不清楚了也不想再验证下,麻烦。

问题二:
#当然我插入创建表的时候也遇到过问题,原因是thrift初始化的时候去创建hdfs目录了,用的是root去创建,但是我hive的warehouse是hive。所以创建stage的时候就会两头报错(因为两个hdfs目录不同)。所以我在spark的spark-env.sh里面开头加上了
export HADOOP_USER_NAME=hive
#当然这是没有开kerberos的情况下。
#这样的话thrift初始化的时候创建的是hive目录

问题三:

#死活报gss认证问题,烦我很久。

原因是jdk的jre/lib/security下的jar包需要更换。local_policy.jar和US_export_policy.jar需要替换掉。是java的问题。这个对应jar我貌似上传不了附件,可以自己找下。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号