关于Spark/Hadoop中Master/Slave IP不正确的问题

在配置Spark StandAlone Mode的时候,我遇到了Slave无法向正确的Master IP发送数据的问题。通常这类问题都来源于没有正确配置./conf/spark_env.sh文件,只要在这个文件里定义好了SPARK_LOCAL_IPSPARK_MASTER_HOST,就可以解决这个问题。而我设置了configure文件之后问题依然存在。

原因在于Master Node上有多个网卡,每个网卡又有多个IP地址。在Spark的底层实现中,它调用了JAVA的InetAddress.getlocalhost()函数来获得其他节点的IP地址,这个函数就是通过Host name来找到对应的Host IP所以这个函数只会返回众多IP地址中的一个,所以不一定是你想要的正确地址。

解决的方法也非常简单,JAVA的这个函数会到Linux中的/etc/hosts这个文件中去指定Host name到Host IP的映射:

192.168.20.203   Cluster_Node_3
192.168.20.204   Cluster_Node_4

这样就建立起了Host Name和Host IP之间的映射关系,JAVA的函数就会返回正确的IP地址了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容