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

点点圈 提交于 2020-11-24 06:52:53
文档编写目的

在前面的文章《如何在集群外节点跨网段向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”在高级配置项增加如下配置

<property>
    <name>hadoop.security.token.service.use_ip</name>
    <value>false</value>
</property>


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

<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是否包含如下配置信息

cat /etc/hadoop/conf/hdfs-site.xml


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

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命令是否可用

kinit fayson
hadoop fs -ls /
hadoop fs -put hosts /tmp
hadoop fs -ls /tmp
hadoop fs -rm /tmp/hosts


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

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5

作业执行成功


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

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文件配置,按照文章中说明的格式配置,否则会导致作业提交失败。


参考:

https://community.cloudera.com/t5/Community-Articles/Parameters-for-Multi-Homing/ta-p/245732https://issues.apache.org/jira/browse/HADOOP-7733https://issues.apache.org/jira/browse/HADOOP-12954

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!