关于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地址了。

你可能感兴趣的:(关于Spark/Hadoop中Master/Slave IP不正确的问题)