我们有一个 hadoop 集群,当前在公共 IP 上运行。我们想要将集群 IP 更改为私有 IP 地址。所以它不能从互联网路由。但主要问题是当 Spark 客户端尝试连接到资源管理器并提交应用程序时。它会检查spark客户端中资源管理器的PTR记录,如果不匹配就会说
IllegalArgumentException: Server has invalid Kerberos principal
。
为了解决这个问题,我们必须在/etc/hosts
中添加服务器地址,这样就可以了。但有一个问题,我们必须在许多连接到资源管理器的虚拟机中编辑这个文件。
有什么办法可以禁用这个反向IP检查吗?
我们尝试更改 krb5.conf 并设置 rdns = false 等配置,但没有成功。
最后通过阅读Hadoop代码找到了这个问题的解决方案。
您可以根据您的具体配置将以下配置添加到您的 Spark 客户端
yarn-site.conf
。
<property>
<name>yarn.resourcemanager.principal.pattern</name>
<value>*</value>
</property>
以及
hdfs-site.xml
中的以下内容
<property>
<name>dfs.namenode.kerberos.principal.pattern</name>
<value>*</value>
</property>