0734-5.16.1-集群外客户端跨网段向Kerberos环境的Hadoop集群提交作业(续)

2019-12-16 15:09:52 浏览数 (1)

文档编写目的

在前面的文章《如何在集群外节点跨网段向HDFS写数据》和《外部客户端跨网段访问Hadoop集群方式(续)》中介绍了如何在集群外的客户端节点上访问Hadoop集群,本篇文章在前面文章的基础上基于Kerberos环境的CDH集群介绍,如何在集群外客户端跨网段向Kerberos环境的Hadoop集群提交MapReduce和Spark作业。

  • 测试环境

1.Redhat7.4

2.CDH5.16.1

3.集群已启用Kerberos

修改HDFS配置

1.进入HDFS服务的配置页面

2.在搜索栏输入“bind”勾选如下配置,将各服务的端口号绑定到0.0.0.0

3.搜索“core-site.xml”在高级配置项增加如下配置

代码语言:javascript复制
<property>
    <name>hadoop.security.token.service.use_ip</name>
    <value>false</value>
</property>

4.搜索“hdfs-site.xml”在高级配置项增加如下配置

代码语言:javascript复制
<property>
  <name>dfs.client.use.datanode.hostname</name>
  <value>true</value>
</property>

注意:该配置属于HDFS的Gateway角色高级参数,这个配置可以只在集群外客户端的配置文件增, 这里为了统一方便集群配置下发。

修改Yarn配置

由于需要在集群外客户端跨网段提交MapReduce和Spark作业,需要将Yarn服务的端口号绑定到0.0.0.0,根据如下操作修改Yarn配置。

1.进入Yarn服务的配置界面,搜索“bind”

完成上述所有配置后,回到CM主页根据提示重启相应服务及分发客户端配置。

修改hosts配置

1.将集群内所有节点的/etc/hosts信息配置为如下格式

2.将集群外客户端节点的/etc/hosts信息配置为如下格式:

注意:注意集群内和集群外节点的/etc/hosts配置文件内容及格式,未按照要求配置则可能会出现Kerberos集群外节点无法提交MapReduce和Spark作业到集群。

同步配置到客户端

由于集群外客户端节点并不在Cloudera Manager的管理范围,需要将集群的客户端配置同步至集群外的客户端节点,可以参考Fayson之前的文章《如何在CDH集群外配置Kerberos环境的Spark2和Kafka客户端环境》,由于本篇文章主要讲述跨网段在集群外客户端节点提交MapReduce和Spark作业,所以需要将/etc目录下的hadoop和spark配置信息同步。

1.检查客户端配置文件/etc/hadoop/conf/hdfs-site.xml是否包含如下配置信息

代码语言:javascript复制
cat /etc/hadoop/conf/hdfs-site.xml

2.检查客户端配置文件/etc/hadoop/conf/core-site.xml是否包含如下配置信息

代码语言:javascript复制
cat /etc/hadoop/conf/core-site.xml

3.检查/etc/spark/conf/yarn-conf目录下的hdfs-site.xml和core-site.xml配置文件中是否有dfs.client.use.datanode.hostname和hadoop.security.token.service.use_ip配置项。

功能验证

1.在集群外客户端执行命令验证hadoop命令是否可用

代码语言:javascript复制
kinit fayson
hadoop fs -ls /
hadoop fs -put hosts /tmp
hadoop fs -ls /tmp
hadoop fs -rm /tmp/hosts

2.向集群提交一个MapReduce作业

代码语言:javascript复制
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5

作业执行成功

3.向集群提交一个Spark作业

代码语言:javascript复制
spark-submit --class org.apache.spark.examples.SparkPi   --master yarn-client   /opt/cloudera/parcels/CDH/lib/spark/lib/spark-examples.jar 10 

作业运行成功

总结

1.通过在集群外客户端配置文件/etc/hadoop/hdfs-site.xml配置中增加dfs.client.use.datanode.hostname为ture实现实现跨网段访问Kerberos环境下的HDFS服务。

2.需要跨网段向Kerberos集群提交Spark和MapReduce作业,需要将Yarn相应服务的端口号绑定在0.0.0.0上,同时需要在HDFS服务的core-site.xml配置文件中增加hadoop.security.token.service.use_ip为false,该参数需要在服务端和client端都存在,否则会报Kerberos认证失败的异常。

3.在配置Kerberos集群外节点提交Spark和MapReduce作业时,需要注意集群内外节点的hosts文件配置,按照文章中说明的格式配置,否则会导致作业提交失败。

参考:

代码语言:javascript复制
https://community.cloudera.com/t5/Community-Articles/Parameters-for-Multi-Homing/ta-p/245732
https://issues.apache.org/jira/browse/HADOOP-7733
https://issues.apache.org/jira/browse/HADOOP-12954

0 人点赞