Hadoop分布式搭建步骤:
为了体现分布式效果,最少需要三个虚拟机,可以先在一个虚拟节点上完成安装配置,然后克隆虚拟机到另外两个节点。三个节点的hostname分别为zpl-hadoop,zpl-hadoop04,zpl-hadoop05。克隆步骤如下:
一、克隆虚拟机,配置IP网卡主机映射。
1,克隆之前先把目标虚拟机hadoop目录下share目录下的doc文档目录删掉,在share目录下执行命令 rm –rf doc ,可以减少复制时间,克隆时虚拟机一定要是关机状态。
注意:以上操作都是在非root用户下,如果是 修改系统配置的操作 比如关闭防火墙,修改主机名称需要在root用户下进行。
2,在VMWare Workstation中,选择要克隆的虚拟机,右键,管理,克隆,输入新虚拟机名称,next即可。
3,克隆完成后打开新虚拟机,需要修改主机名,IP地址,网卡的mac地址(root用户):
- 打开命令行终端, 输入命令 vi /etc/hosts,修改主机名和IP映射;
- vi /etc/sysconfig/network, 修改主机名称
- vi /etc/udev/rules,删掉非本地多余的mac地址,一般是name为eth0的那组,再把name为eth1的网卡信息name改成eth0
- vi /etc/udev/rules.d/70-persistent-net.rules ,修改 网卡配置文件
- vi /etc/sysconfig/network-scripts/ifcfg-eth0,操作包括
修改Ip、删掉网卡地址、删掉uUID和设置DNS,默认网关为同网段的.2,和谷歌的公共域名8.8.8.8,ping www.baidu.com测试能否上外网。
同时,把另外两个节点的hadoop目录删除,方便第一个节点中重新复制(仅限于克隆虚拟机方法使用)
- 关闭三台服务器的防火墙和selinux
service iptables stop --关闭防火墙
chkconfig iptables off --永久关闭防火墙
vi /etc/sysconfig/selinux --关闭selinux
SELINUX=disabled
二、集群中角色分配和NTP同步,配置SSH登录。
1,三台主机名称分别为zpl-hadoop,zpl-hadoop02和zpl-hadoop03.
角色分配
主机名 | 所属角色 | |||
Zpl-hadoop | namenode | datanode | nodemanager |
|
Zpl-hadoop02 | datanode | resourcemanager | nodemanager |
|
Zpl-hadoop03 | datanode | nodemanager | secondarynamenode | historyserver |
2,配置NTP时间服务器,使集群中其他节点的时间和NTP服务器时间保持同步和一致性,
通过命令 rm –qa|grep ntpc查看系统中是否安装ntp服务,如果没有则需要安装。
用root用户登录,vi /etc/ntp.conf,操作如下:
(1) 下面三行注释掉
#server0.centos.pool.ntp.org
#server1.centos.pool.ntp.org
#service ntpd start启动ntp服务,
#chkconfig ntpd on 设置为开机启动
然后配置另外两台主机,和NTP服务器时间保持同步,
用root用户,# crontab -e
加入下面这行
*/10 ** * * /usr/sbin/ntpdate zpl-hadoop
#service crond restart
Crontab–l 查看结果是否成功
3,配置SSH无密钥登录,这样在启动hdfs和yarn的服务时,对应的其他服务器上的服务也能启动,
配置主机 | 能登录的主机 | ||
Zpl-hadoop | Zpl-hadoop | Zpl-hadoop02 | Zpl-hadoop03 |
Zpl-hadoop02 | Zpl-hadoop | Zpl-hadoop02 | Zpl-hadoop03 |
在zpl-hadoop 中root用户下$ ssh-keygen -t rsa 生成密钥,注意生成过程中不输入任何密码,一路回车。Cd .ssh/目录,将生成的密钥拷贝到本地和其他两台主机中,
ssh-copy-id zpl-hadoop02
三,集群节点安装部署:
1,在 etc/hadoop目录下,以下文件需要指定JAVA_HOME为本地JDK安装目录:hadoop-env.sh、 yarn-env.sh、 mapred-env.sh;只配置JAVA_HOME,不需要配置其他。
2,etc/hadoop目录下配置core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,在slaves中配置datanode的主机名,配置完zpl-hadoop之后,复制到其他两台服务器上:
core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://zpl-hadoop:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/zpl/CDH/hadoop-2.5.0-cdh5.3.6/data</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>zpl-hadoop:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>zpl-hadoop05:50090</value>
</property>
</configuration>
mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>zpl-hadoop05:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>zpl-hadoop05:19888</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>zpl-hadoop04</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
slaves:
zpl-hadoop
zpl-hadoop04
zpl-hadoop05
scp -r hadoop-2.5.0/ zpl-hadoop02:/home/zpl/software/
启动服务测试
首先在namenode所在的主机上格式化namenode
bin/hdfs namenode -format
成功后在第一个节点启动hdfs,执行下面的命令,historyserver服务需要单独配置。
sbin/start-dfs.shsbin/start-yarn.sh
sbin/mr-jobhistory-daemon.shstart historyserver
在第二个节点启动yarn,命令
sbin/start-yarn.sh
四,集群测试:
主要通过访问web页面查看服务是否启动:
在浏览器地址栏输入namenode所在的主机名:端口号,如 zpl-hadoop:50070,回车,如果进入hadoop页面,说明启动成功。
zpl-hadoop02:8088,如果进入yarn页面,说明yarn启动成功。