cdh对应hadoop_【踩坑实录】安装完CDH以后快一个月了,终于把大坑填平了

本文记录了在安装CDH6.1.0后,部署SAPHanaSparkController组件遇到的坑,包括端口未监听、日志无错误、权限异常等。通过分析启动脚本、查看Spark状态、排查hdfs文件权限问题,最终发现是CDH用户的属组问题导致。通过关闭用户组权限验证,成功解决了端口监听问题。
摘要由CSDN通过智能技术生成

      最近领导安排我给一个客户安装CDH6.1,具体过程可以参考SUSE 12安装CDH 6.1.0操作步骤【附CDH/HDP安装资料】。由于不是我要用,安装完以后再那边睡大觉了。安装CDH不是终极目标,终极目标是要在CDH上部署一个SAPHanaSparkController的组件。

      和大家一样,我知道Hana是什么,知道Spark是什么,但是并不清楚这个SAPHanaSparkController具体是干啥的。安装材料只有一个官方的英文指导文档,没办法,只能硬着头皮上。

f758ae43e35581f79118e1df7f5d711a.png

    安装过程暂时不赘述了,重点总结这中间遇到的坑。再多次踩坑重试以后,SAPHanaSparkController组件终于安装成功,并且启动成功。但是很诡异的是端口没有监听。

907661b24a5cc27f22063a2efaede44c.png

     很正常的逻辑,开始找日志中的错误,但是很可惜,啥也没有。

Tue Jan 26 10:09:32 CST 2021JAVA_HOME=/usr/java/jdk1.8.0_181Using /var/run/cloudera-scm-agent/process/253-spark_controller-SPARK_CONTROLLER_MASTER as conf dirUsing scripts/control.sh as process scriptCONF_DIR=/var/run/cloudera-scm-agent/process/253-spark_controller-SPARK_CONTROLLER_MASTERCMF_CONF_DIR=Going to update /var/run/cloudera-scm-agent/process/253-spark_controller-SPARK_CONTROLLER_MASTER Permissions as rootStarting SAP HANA Spark Controller as hanaes on port: INFO: Verifying, that this script is run as 'hanaes' user ...INFO: Starting SAP HANA Spark Controller ... INFO: Current Class path is /var/run/cloudera-scm-agent/process/253-spark_controller-SPARK_CONTROLLER_MASTER/conf:/opt/cloudera/parcels/CDH/lib/spark/jars/*:/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/*:/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/lib/*:/opt/cloudera/parcels/CDH/lib/hadoop-yarn/*:/opt/cloudera/parcels/CDH/lib/hadoop-yarn/lib/*:/opt/cloudera/parcels/CDH/lib/hive/lib/*:/etc/hadoop/conf:/etc/hive/conf:/opt/cloudera/parcels/SAPHanaSparkController-2.5.0/lib/sap/spark/controller/*:/opt/cloudera/parcels/SAPHanaSparkController-2.5.0/lib/sap/spark/controller/lib_2.11/*:/opt/cloudera/parcels/SAPHanaSparkController-2.5.0/lib/sap/spark/controller/lib_2.11/other/*:/opt/cloudera/parcels/SAPHanaSparkController-2.5.0/lib/sap/spark/controller/lib_2.11/hana/*:/opt/cloudera/parcels/CDH/lib/hadoop/*:/opt/cloudera/parcels/CDH/lib/hadoop/lib/*:/opt/cloudera/parcels/CDH-6.1.0-1.cdh6.1.0.p0.770702/lib/hadoop/libexec/../../hadoop-hdfs/*:/opt/cloudera/parcels/CDH-6.1.0-1.cdh6.1.0.p0.770702/lib/hadoop/libexec/../../hadoop-hdfs/lib/*INFO: Running Java app with flags:   -Xmx8172m  INFO: Starting in Foreground

       周末的时候,先是怀疑启动脚本没有执行完,先后下载两个启动脚本层层追踪,最后发现脚本启动以后就只有上图那个进程。于是有怀疑参数不正确,于是找到对应的核心包controller.core_2.11-2.5.0.jar,反编译了尝试找其中的配置项,也没有任何结果。

       最新的突破是昨天,也就是周二,我准备找人帮我查找错误,发日志的时候,被眼尖的同事发现了一个错误:

2021-01-26 10:09:34,172 INFO com.sap.hana.network.Server: Preparing to start SAP HANA Spark Controller ...2021-01-26 10:09:34,186 INFO com.sap.hana.network.Server: Validating hanaes property configuration...2021-01-26 10:09:34,203 INFO com.sap.hana.utils.ClusterUtils: Running in standalone mode.2021-01-26 10:09:36,057 WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable2021-01-26 10:09:36,091 INFO org.apache.spark.sql.hana.HanaSparkFacade: Spark Assembly: /opt/cloudera/parcels/CDH/lib/spark/jars/*2021-01-26 10:09:36,092 INFO org.apache.spark.sql.hana.HanaSparkFacade: Running Spark version 2Exception: java.security.PrivilegedActionException thrown from the UncaughtExceptionHandler in thread "main"

      重点就是最后一句“Exception: java.security.PrivilegedActionException thrown from the UncaughtExceptionHandler in thread "main"”,这个起码说明,jar包启动过程中还是报错了,说明jar程序代码应该是没问题的。于是研究的重点转移到:到底这个未捕获的异常时什么异常?

76846582334ae8a456a1d70be33e4624.png

      首先,cdh页面上面看不到任何更具体的信息,操作系统的进程目录也只有cdh页面展示的日志内容。       

21fec9027627d93a02bd87ab0ea2cd86.png

      由于这个应用时基于spark的,所以我就想到了去spark上面看看有没有进程和错误信息。很意外的就发现了spark处于异常状态。

3d17b723c841c57227779e63469f2f28.png

      百度了一下这个错误,很容易就联想到了hdfs文件权限问题。参照下面的说明,执行了三步操作,spark就可以正常查看进程日志了。不过并没有什么收获。

3793aec34784564a5860f7ca060906dc.png

       由于这个权限问题的启发,我就联想到了SAPHanaSparkController可能也是权限异常。在深入解决SAPHanaSparkController异常之前,我有找到几个命令可以查看java进程中的错误。

44b14a75b1106c7fbd4df8dc05503936.png

     虽然看不懂是什么错误,但是在此指向了hadoop的hdfs文件系统。检查了一下CDH安装以后自动生成的用户及其归属组,我瞬间凌乱了。

09d6e8d3960bd0c9d2d9acaceb8904b1.png

     不过SAPHanaSparkController本身其实也没错,创建用户默认加上了hdfs组和sapsys组,奈何CDH的创建的用户没有统一归属组。

      既然明确了是用户属主权限,接下来就由两条路可以走了。第一种方案,关闭用户组权限验证,即设置dfs.permissions=flase,第二种方案,将用户统一归属到默认的supergroup组。鉴于当时的环境是测试环境,加上supergroup组也可能遇上权限不足的情况,于是我选择了第一种方案。

      调整完hdfs参数,然后重启相关进程,终于看到了7860的端口处于监听状态了。连续多日的阴霾终于一扫而空。

7be7ea305a0f9ae42d5bc996f6102671.png

       回头来总结,其实SAPHanaSparkController安装也没用问题,重点在于CDH的默认配置和默认权限存在CDH默认的用户组是supergroup,但是对应的用户都没有归属到这个用户组。这点实在是太坑了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值