要想深入的学习Hadoop数据分析技术,首要的任务是必须要将Hadoop集群环境搭建起来,本文主要讲述如何搭建一套Hadoop完全分布式集群环境。
环境配置:2台64位的RedHat6.5 + 1台64位CentOS6.9 + Hadoop2.7 + java7
一、先配置服务器的主机名
Namenode节点对应的主机名为master
Datanode节点对应的主机名分别为node1、node2
1、 在每一台服务器上执行vim /etc/hosts, 先删除hosts里面的内容,然后追加以下内容:
192.168.15.135 master
172.30.25.165 node1
172.30.25.166 node2
2、 在每一台服务器上执行vim /etc/sysconfig/network,修改红色部分的内容,对应上面所说的hostname,对于master节点那么hostname就为master
NETWORKING=yes
HOSTNAME= master
NETWORKING_IPV6=yes
IPV6_AUTOCONF=no
类似的,在node1服务器节点上应该为:
NETWORKING=yes
HOSTNAME= node1
NETWORKING_IPV6=yes
IPV6_AUTOCONF=no
类似的,在node2服务器节点上应该为:
NETWORKING=yes
HOSTNAME= node2
NETWORKING_IPV6=yes
IPV6_AUTOCONF=no
这两步的作用很关键,如果配置不成功,进行分布式计算的时候有可能找不到主机名
下面关于Hadoop的文章您也可能喜欢,不妨看看:
Ubuntu14.04下Hadoop2.4.1单机/伪分布式安装配置教程
Ubuntu 12.10 +Hadoop 1.2.1版本集群配置
二、安装SSH,并让master免验证登陆自身服务器、节点服务器
1、 执行下面命令,让master节点能够免验证登陆自身服务器
ssh-keygen -t dsa -P'' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub>> ~/.ssh/authorized_keys
exportHADOOP\_PREFIX=/usr/local/hadoop
HADOOP_PREFIX表示自己安装的hadoop路径
2、 让主结点(master)能通过SSH免密码登录两个子结点(slave)
为了实现这个功能,两个slave结点的公钥文件中必须要包含主结点的公钥信息,这样当master就可以顺利安全地访问这两个slave结点了。操作过程如下:
在node1上执行
scp root@master:~/.ssh/id_dsa.pub ~/.ssh/master_dsa.pub
cat~/.ssh/master_dsa.pub >> ~/.ssh/authorized_keys
在node2上执行
scp root@master:~/.ssh/id_dsa.pub ~/.ssh/master_dsa.pub
cat~/.ssh/master_dsa.pub >> ~/.ssh/authorized_keys
如上过程显示了node1结点通过scp命令远程登录master结点,并复制master的公钥文件到当前的目录下,这一过程需要密码验证。接着,将master结点的公
钥文件追加至authorized_keys文件中,通过这步操作,如果不出问题,master结点就可以通过ssh远程免密码连接node1结点了。在master结点中操作如:
当然值得注意的是:首次登陆是需要确认的,node1结点首次连接时需要,“YES”确认连接,这意味着master结点连接node1结点时需要人工询问,无法自动连接,输入yes后成功接入,紧接着注销退出至master结点。要实现ssh免密码连接至其它结点,还差一步,只需要再执行一遍ssh node1,如果没有要求你输入”yes”,就算成功了。
三、下载并解压hadoop安装包,配置hadoop
1、 关于安装包的下载就不多说了,不过可以提一下目前我使用的版本为hadoop-2.7.1
2、 配置namenode,修改site文件
下面开始修改hadoop的配置文件了,即各种site文件,文件存放在etc/Hadoop/下,主要配置core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml这三个文件。
这里我只把我的实例贴出来,经供参考,更多详细配置请参照官方文档
core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
hdfs-site.xml: