【问题标题】:How to configure hosts file for Hadoop ecosystem如何为 Hadoop 生态系统配置 hosts 文件
【发布时间】:2014-04-07 05:36:08
【问题描述】:

这个问题可能看起来很明显,但由于 hadoop 集群上的 hosts 文件配置错误,我已经遇到过很多次了。

谁能描述如何为 hadoop 和类似环境使用(如 cloudera)设置主机文件和其他相关网络配置。

特别是当我必须同时添加主机名和 FQDN 时

更新

这是其中一台机器的主机文件,主机名为 cdh4hdm,具有 hadoop Master 的角色

 127.0.0.1       cdh4hdm        localhost
  #127.0.1.1      cdh4hdm 

 # The following lines are desirable for IPv6 capable hosts

   172.26.43.40    cdh4hdm.imp.co.in            kdc1
   172.26.43.41    cdh4hbm.imp.co.in   
   172.26.43.42    cdh4s1.imp.co.in    
   172.26.43.43    cdh4s2.imp.co.in    
   172.26.43.44    cdh4s3.imp.co.in    
   172.26.43.45    cdh4s4.imp.co.in    

   ::1     ip6-localhost ip6-loopback
   fe00::0 ip6-localnet
   ff00::0 ip6-mcastprefix
   ff02::1 ip6-allnodes
   ff02::2 ip6-allrouters 

请看附图

在集群中,有些节点正在获取 FQDN,有些正在获取主机名。

主机名的 IP 也不正确,显示 127.0.0.1 而不是主机 IP

请推荐

【问题讨论】:

  • 您是指/etc/hosts 文件吗?
  • @vefthym 如果您需要任何其他详细信息,请随时查看更新后的问题和详细信息

标签: networking hadoop cloudera


【解决方案1】:

如果您指的是/etc/hosts 文件,那么这是我在hadoop 集群中的设置方式:

127.0.0.1       localhost
192.168.0.5     master
192.168.0.6     slave1
192.168.0.7     slave2
192.168.0.18    slave3
192.168.0.3     slave4
192.168.0.4     slave5  nameOfCurrentMachine

,其中nameOfCurrentMachine 是设置此文件的机器,用作slave5。 有人说应该删除第一行,但我没有遇到任何问题,也没有尝试删除它。

那么,主节点中的$HADOOP_CONF_DIR/masters文件应该是:

master

主节点中的$HADOOP_CONF_DIR/slaves文件应该是:

slave1
slave2
slave3
slave4
slave5

在每个其他节点中,我只是将这两个文件设置为仅包含:

localhost

您还应确保无需密码即可从主节点 ssh 到每个其他节点(使用其名称,而不是其 IP)。 This post 描述了如何实现这一目标。

【讨论】:

  • 当我只使用主机名时它成功了。 FQDN 呢?
  • 除了我在这里描述的以外,我从未尝试过其他的东西。你指的是哪个部分?给nameOfCurrentMachine,还是IP?
  • 我有所有节点的 FQDN,但在集群上,一些节点只有主机名,其他节点是主机的 FQDN
  • 您能举例说明您有哪些可用的名称以及您尝试过的名称吗?也许用这个例子更新你的问题。
【解决方案2】:

对于 UBUNTU

Hadoop 集群的主机文件和其他配置

为所有集群机器提供主机名,为此在 /etc/hostname 文件中添加主机名

hostname-of-machine

在所有主机上,hosts文件应该是这样的:

主机

127.0.0.1       localhost
#127.0.1.1      localhost

<ip of host>    FQDN                hostname    other_name
172.26.43.10    cdh4hdm.domain.com  cdh4hdm     kdc1
172.26.43.11    cdh4hbm.domain.com  cdh4hbm
172.26.43.12    cdh4s1.domain.com   cdh4s1
172.26.43.13    cdh4s2.domain.com   cdh4s2
172.26.43.14    cdh4s3.domain.com   cdh4s3
172.26.43.15    cdh4s4.domain.com   cdh4s4

注意:请务必注释 127.0.1.1 localhost 行,这可能会在 zookeeper 和集群中产生问题。

在 /etc/resolv.conf 中添加 DNS 服务器 IP

resolve.conf

search domain.com
nameserver 10.0.1.1

验证配置检查主机文件,您应该能够通过主机名 ping 所有机器

要检查所有机器上的主机名和 FQDN,请运行以下命令:

hostname        //should return the hostname
hostname -f     //Fully Qualified Hostname
hostname -d     //Domain name

对于 RHEL,所有命令都相同,但主机名除外。

Source1Source2

【讨论】:

    【解决方案3】:

    ​保持 slaves hosts 文件为

    127.0.0.1 localhost
    

    将主主机文件保留为

    private ip master
    private ip slave1
    private ip slave2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 2015-03-03
      相关资源
      最近更新 更多