1.问题重现
Fayson在CDH6.1.1集群中安装了CDSW1.5,启动一个Session在会话的Terminal执行hadoop命令报如下错误:
cdsw@z24ku4qbzj1pcr62:~$ hadoop fs -ls /WARNING: log4j.properties is not found. HADOOP_CONF_DIR may be incomplete.Exception in thread "main" java.lang.RuntimeException: core-site.xml not found at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2869) at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2838) at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2715) at org.apache.hadoop.conf.Configuration.set(Configuration.java:1352) at org.apache.hadoop.conf.Configuration.set(Configuration.java:1324) at org.apache.hadoop.conf.Configuration.setBoolean(Configuration.java:1665)
2.问题分析
1.通过在Terminal终端输出当前会话的HADOOP_CONF_DIR环境变量
cdsw@z24ku4qbzj1pcr62:~$ env |grep HADOOP_CONF_DIR
2.通过HADOOP_CONF_DIR环境变量配置的路径查看发现两个目录下均有core-site.xml配置文件
通过对HADOOP_CONF_DIR环境变量的分析得出,主要是由于在Hadoop3中不支持该环境变量多路径配置方式。
3.问题解决
关于以上问题,主要是由于HADOOP_CONF_DIR的环境变量配置了多路径导致,可以通过如下方式解决该问题。
3.1.Terminal中重新指定环境变量
通过在Terminal中临时指定HADOOP_CONF_DIR的环境变量即可解决该问题,如下截图所示:
3.2.CDSW中配置全局环境变量
1.使用管理员登录CDSW在“Admin”->“Engines”页面的如下位置添加全局的环境变量
2.重新启动Session验证hadoop命令
通过上图可以看到hadoop命令正常执行,并且HADOOP_CONF_DIR的环境变量也修改为我们指定的单路径。
3.3.修改Spark Gateway环境变量方式
1.登录Cloudera Manager进入配置界面选择Gateway搜索“spark*.sh”,在如下配置项增加HADOOP_CONF_DIR配置
2.根据CM提示重启依赖服务(含CDSW),重启成功后在CDSW上进行验证
通过上图可以看到HADOOP_CONF_DIR环境变量已被修改为指定的/etc/hadop/conf路径。
4.问题总结
对于上述问题主要是由于Hadoop3中HADOOP_CONF_DIR环境变量不支持多路径配置导致的问题,可以通过重写HADOOP_CONF_DIR环境变量的方式解决问题。