在CentOS 7上用Hadoop 2.7.2搭建了一个集群,为的是自己学习各种开源框架,可是在搭的过程中遇到一个问题,namenode和datanode节点都起来了,但是datanode节点一直无法访问namenode:9000端口,开始第一反应是把防火墙关闭,可是执行了命令还是不行,今天才发现原来执行错了,关闭防火墙的命令应该为
systemctl stop firewalld.service
为了能让集群重启后还能正常工作,我们要把防火墙彻底关掉,不让它开机启动
systemctl disable firewalld.service
到底关没关,查看防火墙状态命令为:
firewall-cmd --state
执行完命令如果显示
not running
那么恭喜你,防火墙关闭成功了,好,现在说说我遇到的问题
2016-06-18 21:23:53,980 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: namenode/192.168.1.100:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
2016-06-18 21:23:55,029 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: namenode/192.168.1.100:9000. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
2016-06-18 21:23:56,030 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: namenode/192.168.1.100:9000. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
2016-06-18 21:23:57,031 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: namenode/192.168.1.100:9000. Already tried 3 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
2016-06-18 21:23:58,032 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: namenode/192.168.1.100:9000. Already tried 4 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
看到了这个问题第一直觉就应该是防火墙在做怪,关闭后问题解决了。 顺便对我搭建的过程做了总结,主要的配置在一台服务器上弄好后,其它的就直接scp吧
1、修改host(vim /etc/hosts)
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.100 namenode
192.168.1.101 datanode1
192.168.1.102 datanode2
其它的都不要,就只要最后三行就行
2、修改IP,将其改为静态IP(vim /etc/sysconfig/network-scripts/ifcfg-eth0)
DEVICE=eth0
IPV6INIT=yes
BOOTPROTO=dhcp
UUID=61fe61d3-fcda-4fed-ba81-bfa767e0270a
ONBOOT=yes
TYPE=Ethernet
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME="System eth0"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.1.100
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=192.168.1.1
这里要注意ipaddr了每个服务器不要一样哦
3、修改hostname(vim /etc/hostname) 这里只是主节点的
namenode
4、修改core-site.xml (vim core-site.xml)
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
5、修改hdfs-site.xml(vim hdfs-site.xml)
<configuration>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>namenode:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
6、修改mapred-site.xml(vim mapred-site.xml)
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>namenode:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>namenode:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>namenode:19888</value>
</property>
7、修改yarn-site.xml(vim yarn-site.xml)
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>namenode:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>namenode:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>namenode:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>namenode:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>namenode:8088</value>
</property>
8、修改slaves (vim slaves)
datanode1
datanode2
9、修改hadoop-evn.sh和yarn-evn.sh 在里面加上JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_91
10、最后修改/etc/profile
在文件最后加上
export JAVA_HOME=/usr/java/jdk1.8.0_91
export HADOOP_HOME=/usr/local/hadoop-2.7.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
好了,以上就是Hadoop的配置方式,三个节点进行同样的修改即可。 为了能让节点间互相无密码登录,还要进行ssh配置 在~/.ssh目录下面执行
ssh-keygen -t rsa
然后一路回车,要的就是空密码,执行完成后,会在目录下面生成两个文件 私钥文件:id_raa 公钥文件:id_rsa.pub 然后执行
cat id_rsa.pub >> authorized_keys
将公钥文件authorized_keys分发到各datanode节点:
scp authorized_keys root@datanode1:/root/.ssh/
最后,验证一下
ssh datanode1
好了,搭建过程结束,问题也解决了,如果你在搭建的过程中有什么问题欢迎留言。