在 CentOS 7 中的搭建 Hadoop2.7.2 集群
搭建最简单的主备节点,一台主机,一台备机。
假设主备机名称和 IP 为:
master 192.168.1.2
slave1 192.168.1.3
申明:我搭建的这个集群不是在普通用户环境下,所以以下操作都是在超级用户
root
上。部分资料参考网络,文中所有操作都是实测通过的。 默认认为用户熟悉 Java,已有配置可用 JDK 运行环境。
一、虚拟机的安装
- 从 centos 官网下载 CentOS7 镜像文件。
- 在 VMware Workstation 12 上安装两台虚拟机,具体的系统安装步骤不是重点,我就不再赘述了。
二、虚拟机前期配置
装好两台虚拟机后,我们设置虚拟机为静态 IP,并修改一下虚拟机的主机名和 IP 地址,还需要增加 IP 与主机映射:
1) 修改主机名(分别为:master、slave1)
vim /etc/hostname
这里需要注意的是,主机名是什么就只能在 /etc/hostname
文件中写什么,不可以加 #
注释。最好的是,比如集群主机的主机名称为 master,就修改 hostname 文件内容为 master,不要多一行,也不要有前后空格。否则在后面的操作中会有诸多麻烦。
2) 修改 IP 地址并设置为静态 IP:
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
虚拟机的网卡一般默认都是 ifcfg-en..
等,可能是其他名称。
增加以下内容:
BOOTPROTO=static #设置为静态IP
ONBOOT=yes #开机打开网卡
IPADDR=192.168.1.2 #设置IP,对应上面给出的四个IP地址,这里是master的IP
NETMASK=255.255.255.0 #设置子网掩码
GATEWAY=192.168.1.1 #设置网关
DNS1=8.8.8.8 #设置DNS,这里是Google的两个域名解析
DNS2=8.8.4.4
3) 增加IP与主机映射:
vi /etc/hosts
增加以下内容:
192.168.1.2 master
192.168.1.3 slave1
4) 在分别完成以上步骤后 reboot
重启两台虚拟机。
reboot
三、SSH无密码登录配置
准备工作
1) 确认本机 sshd 的配置文件
vim /etc/ssh/sshd_config
找到以下内容,并去掉注释符 #
。
RSAAuthentication yes
PubkeyAuthentication yes
# 无密码登录认证文件将会存放在 /root/.ssh/authorized_keys 下
AuthorizedKeysFile .ssh/authorized_keys
2) 如果修改了配置文件需要重启 sshd 服务。
service sshd restart
配置SSH无密码登录
1) 生成公钥和私钥(这一步在所有主备机上操作)
cd /root
ssh-keygen -t rsa
在 /root/.ssh 目录生成两个文件:
id_rsa :私钥
id_rsa.pub :公钥
2) 导入公钥到认证文件,更改权限(这一步在主机 master 上操作)
cd /root/.ssh/
ssh master cat /root/.ssh/id_rsa.pub >> authorized_keys #需要输入超级用户密码
ssh slave1 cat /root/.ssh/id_rsa.pub >> authorized_keys #需要输入超级用户密码
3) 更改 authorized_keys 属性,使之不能被修改:
chmod 600 authorized_keys
4) 在 master 的 /root/.ssh/ 目录下,将生成的 known_hosts
和 authorized_keys
复制到各个备节点:
scp authorized_keys root@slave1:/root/.ssh/ #需要输入超级用户密码
scp known_hosts root@slave1:/root/.ssh/
5) 验证ssh的免密码登录
在 master 中输入: ssh slave1
看是否需要登录密码,如果不需要,则ssh免密码配置成功。如果需要密码,请仔细阅读以上步骤,重新尝试配置。
反之,可以在备机种测试主机的登录。
四、Hadoop2.7.2 的解压安装
Hadoop 下载页面:http://hadoop.apache.org/releases.html
解压至 /root 下:
tar -zxvf hadoop-2.7.2.tar.gz
五、集群环境Hadoop的配置
在master中,进入到Hadoop的配置目录:
cd /root/hadoop-2.7.2/etc/hadoop/
1) slaves 的配置:
vim slaves
删除 localhost,增加备节点:slave1
2) core-site.xml的配置:
在此之前,需要在 Hadoop 目录下创建 data/tmp
。
mkdir -p /root/hadoop-2.7.2/data/tmp/
mkdir -p /root/hadoop-2.7.2/data/dfs/data
mkdir -p /root/hadoop-2.7.2/data/dfs/name
在 /root/hadoop-2.7.2/etc/hadoop/ 下:
vim core-site.xml
在 core-site.xml 中增加:
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop-2.7.2/data/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
3) hdfs-site.xml的配置:
vim hdfs-site.xml
在 hdfs-site.xml 增加:
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/hadoop-2.7.2/data/dfs/namee</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/hadoop-2.7.2/data/dfs/data</value>
</property>
4) mapred-site.xml 的配置:
vim mapred-site.xml
在 mapred-site.xml 增加:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5) yarn-site.xml 的配置:
vim yarn-site.xml
在 yarn-site.xml 增加:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6) 配置好 master 中的 Hadoop 后,将 Hadoop 复制到各个节点对应位置上:
scp -r /root/hadoop-2.7.2/ slave1:/root/
六、启动 hadoop
1) 在主节点 master 的 hadoop 的目录下:
bin/hdfs namenode –format sbin/start-dfs.sh sbin/start-yarn.sh
然后在主节点 master 输入 jps 可以查看到 NameNode、SecondaryNameNode、Jps 和 ResourceManager 四个进程。
在从节点 slave 输入 jps 可以查看到 Jps、NodeManager 和 DataNode 三个进程。
2) 出现以上进程提示,恭喜你,你的 hadoop 的环境搭建完成!