如何为Hadoop生态系统配置主机文件

Vik*_*dia 4 networking hadoop cloudera

![在此处输入图像描述] [1]这个问题可能看起来非常明显,但由于hadoop集群上主机文件的配置错误,我已经多次遇到过这个问题.

任何人都可以描述如何为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 
Run Code Online (Sandbox Code Playgroud)

请参阅附图

在集群中,一些节点正在获取FQDN,一些节点正在获取主机名.

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

请建议

Vik*_*dia 5

对于UBUNTU

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

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

hostname-of-machine
Run Code Online (Sandbox Code Playgroud)

在所有主机上,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
Run Code Online (Sandbox Code Playgroud)

注意:确保注释第127.0.1.1行localhost,它可能会在zookeeper和cluster中产生问题.

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

resolve.conf

search domain.com
nameserver 10.0.1.1
Run Code Online (Sandbox Code Playgroud)

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

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

hostname        //should return the hostname
hostname -f     //Fully Qualified Hostname
hostname -d     //Domain name
Run Code Online (Sandbox Code Playgroud)

除主机名外,RHEL的所有命令都相同.

Source1Source2


vef*_*hym 4

如果您指的是该/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
Run Code Online (Sandbox Code Playgroud)

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

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

master
Run Code Online (Sandbox Code Playgroud)

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

slave1
slave2
slave3
slave4
slave5
Run Code Online (Sandbox Code Playgroud)

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

localhost
Run Code Online (Sandbox Code Playgroud)

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