我终于解决了这个问题.发布详细步骤以供将来参考.(仅适用于测试环境)
Hadoop(2.7.1)多节点集群配置
确保您拥有一个没有主机隔离的可靠网络.静态IP分配是优选的,或者至少具有非常长的DHCP租用.此外,所有节点(Namenode/master和Datanodes/slave)都应该有一个具有相同密码的公共用户帐户; 如果不这样做,请在所有节点上创建此类用户帐户.在所有节点上使用相同的用户名和密码会使事情变得不那么复杂.
[在所有机器上]首先为单节点群集配置所有节点.您可以使用我在此处发布的脚本.
在新终端中执行这些命令
[在所有机器上] ↴
stop-dfs.sh;stop-yarn.sh;jps rm -rf /tmp/hadoop-$USER
[仅限Namenode/master] ↴
rm -rf ~/hadoop_store/hdfs/datanode
[仅限Datanodes/slaves] ↴
rm -rf ~/hadoop_store/hdfs/namenode
[在所有计算机上]为群集中的所有节点添加IP地址和相应的主机名.
sudo nano /etc/hosts
主机
xxx.xxx.xxx.xxx master xxx.xxx.xxx.xxy slave1 xxx.xxx.xxx.xxz slave2 # Additionally you may need to remove lines like "xxx.xxx.xxx.xxx localhost", "xxx.xxx.xxx.xxy localhost", "xxx.xxx.xxx.xxz localhost" etc if they exist. # However it's okay keep lines like "127.0.0.1 localhost" and others.
[在所有机器上]配置iptables
允许您计划通过防火墙用于各种Hadoop守护程序的默认或自定义端口
要么
更容易,禁用iptables
在RedHat上喜欢发行版(Fedora,CentOS)
sudo systemctl disable firewalld sudo systemctl stop firewalld
像Debian这样的Debian(Ubuntu)
sudo ufw disable
[on Namenode/master]获取从Namenode(主站)到所有Datnode(从站)的ssh访问.
ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@slave1 ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@slave2
通过运行确认的事情ping slave1
,ssh slave1
,ping slave2
,ssh slave2
等你应该有一个适当的反应.(请记住通过键入exit
或关闭终端退出每个ssh会话.为了更安全,我还确保所有节点都能够相互访问,而不仅仅是Namenode/master.)
[在所有机器上]编辑core-site.xml文件
nano /usr/local/hadoop/etc/hadoop/core-site.xml
核心的site.xml
fs.defaultFS master:9000 NameNode URI
[在所有机器上]编辑yarn-site.xml文件
nano /usr/local/hadoop/etc/hadoop/yarn-site.xml
纱的site.xml
yarn.resourcemanager.hostname master The hostname of the RM. yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler
[在所有机器上]修改从属文件,删除文本"localhost"并添加从属主机名
nano /usr/local/hadoop/etc/hadoop/slaves
奴隶
slave1 slave2
(我想只在Namenode/master上使用它也可以工作,但无论如何我在所有机器上都这样做.还要注意,在这个配置中,master只表现为资源管理器,这就是我的意图.)
[在所有机器上]修改hdfs-site.xml文件,将属性值更改为dfs.replication
> 1(至少为集群中的从属数量;此处我有两个从属设备,因此我将其设置为2)
[仅限Namenode/master](重新)通过namenode格式化HDFS
hdfs namenode -format
[可选的]
dfs.datanode.data.dir
从master的hdfs-site.xml文件中删除属性.
dfs.namenode.name.dir
从所有slave的hdfs-site.xml文件中删除属性.
测试(仅在Namenode/master上执行)
start-dfs.sh;start-yarn.sh echo "hello world hello Hello" > ~/Downloads/test.txt hadoop fs -mkdir /input hadoop fs -put ~/Downloads/test.txt /input hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output
等待几秒钟,映射器和减速器应该开始.
这些链接帮助我解决了这个问题:
/sf/ask/17360801/
Hadoop YARN安装:权威指南#Cluster Installation