CDH 6.3.2 HA集群Oozie运行Spark工作流报UnknownHostException如何解决
问题诊断与修复方案
根因分析
该错误是由于Oozie启动Spark任务时,默认没有加载HDFS的HA配置导致的:你在命令行执行spark-shell、hadoop fs命令、Hue运行Hive工作流时,进程会默认读取集群全局的core-site.xml、hdfs-site.xml配置,因此可以正常识别nameservice1这个HA命名空间;但Oozie调度的Spark任务使用独立的上下文环境,默认没有引入HDFS的HA相关配置,无法将nameservice1解析为对应的NameNode地址。
修复步骤
你可以根据自己的使用场景选择以下任意一种方案:
- 方案1:单工作流快速修复
编辑Hue中对应的Spark工作流动作,在配置文件选项中,将集群/etc/hadoop/conf/路径下的hdfs-site.xml、core-site.xml上传到工作流的依赖目录后添加到动作的配置文件列表即可。 - 方案2:Spark动作参数显式传入配置
在Spark动作的Spark启动参数中添加以下配置,替换为你集群的实际NameNode RPC地址:--conf spark.hadoop.dfs.nameservices=nameservice1 --conf spark.hadoop.dfs.client.failover.proxy.provider.nameservice1=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider --conf spark.hadoop.dfs.ha.namenodes.nameservice1=namenode337,namenode369 --conf spark.hadoop.dfs.namenode.rpc-address.nameservice1.namenode337=第一个NameNode地址:8020 --conf spark.hadoop.dfs.namenode.rpc-address.nameservice1.namenode369=第二个NameNode地址:8020 - 方案3:集群全局永久修复
登录Cloudera Manager管理界面:- 进入Oozie服务的配置页面
- 搜索配置项
oozie.service.HadoopAccessorService.hadoop.configurations - 将配置值修改为
*=/etc/hadoop/conf - 保存配置后重启Oozie服务,后续所有Oozie调度的任务都可以自动识别HDFS HA命名空间
验证
配置完成后重新提交工作流运行,即可正常解析nameservice1地址,不再抛出UnknownHost异常。
内容的提问来源于stack exchange,提问作者ighack
相关产品推荐
相关产品推荐

