1.本例集群架构如下:
此处我们使用的是滴滴云主机内网 IP,如果需要外部访问 Hadoop,需要绑定公网 IP 即 EIP。有关滴滴云 EIP 的使用请参考以下链接:
https://help.didiyun.com/hc/kb/section/1035272/
-
Master 节点保存着分布式文件系统信息,比如 inode 表和资源调度器及其记录。同时 master 还运行着两个守护进程:
NameNode:管理分布式文件系统,存放数据块在集群中所在的位置。
ResourceManger:负责调度数据节点(本例中为 node1 和 node2)上的资源,每个数据节点上都有一个 NodeManger 来执行实际工作。 -
Node1 和 node2 节点负责存储实际数据并提供计算资源,运行两个守护进程:
DataNode:负责管理实际数据的物理储存。
NodeManager:管理本节点上计算任务的执行。
2.系统配置#
本例中使用的滴滴云虚拟机配置如下:
2核CPU 4G 内存 40G HDD存储 3 Mbps带宽 CentOS 7.4
-
滴滴云主机出于安全考虑,默认不能通过 root 用户直接登录,需要先用 dc2-user 登录,让后用 sudo su 切换至 root。本例中默认全部以 dc2-user 用户运行命令,Hadoop默认用户同样为 dc2-user。
-
将三台节点的IP和主机名分别写入三台节点的 /etc/hosts 文件,并把前三行注释掉 。
sudo vi /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#127.0.0.1 10-254-149-24
10.254.149.24 master
10.254.88.218 node1
10.254.84.165 node2
- Master 节点需要与 node1 和 node2 进行 ssh 密钥对连接,在 master 节点上为 dc2-user 生成公钥。
ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:zRhhVpEfSIZydqV75775sZB0GBjZ/f7nnZ4mgfYrWa8 hadoop@10-254-149-24
The key's randomart image is:
+---[RSA 4096]----+
| ++=*+ . |
| .o+o+o+. . |
| +...o o .|
| = .. o .|
| S + oo.o |
| +.=o .|
| . +o+..|
| o +.+O|
| .EXO=|
+----[SHA256]-----+
输入以下命令将生成的公钥复制到三个节点上:
ssh-copy-id -i $HOME/.ssh/id_rsa.pub dc2-user@master
ssh-copy-id -i $HOME/.ssh/id_rsa.pub dc2-user@node1
ssh-copy-id -i $HOME/.ssh/id_rsa.pub dc2-user@node2
接下来可以用在 master 输入 ssh dc2-user@node1,ssh dc2-user@node2 来验证是否不输入密码就可以连接成功。
- 配置 Java 环境
在 3 台节点下载 JDK。
mkdir /home/dc2-user/java
cd /home/dc2-user/java
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz
tar -zxf jdk-8u191-linux-x64.tar.gz
在 3 台节点配置 Java 变量。
sudo vi /etc/profile.d/jdk-1.8.sh
export JAVA_HOME=/home/dc2-user/java/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效。
source /etc/profile
查看 Java 版本。
java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
说明 Java 环境已经配置成功。
3.安装 Hadoop
在 master 节点下载 Hadoop3.1.1 并解压。
cd /home/dc2-user
wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
tar zxf hadoop-2.7.7.tar.gz
在 /home/dc2-user/hadoop-2.7.7/etc/hadoop 下需要配置的 6 个文件分别是 hadoop-env.sh、core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers 。
添加如下内容:
export JAVA_HOME=/home/dc2-user/java/jdk1.8.0_191
export HDFS_NAMENODE_USER="dc2-user"
export HDFS_DATANODE_USER="dc2-user"
export HDFS_SECONDARYNAMENODE_USER="dc2-user"
export YARN_RESOURCEMANAGER_USER="dc2-user"
export YARN_NODEMANAGER_USER="dc2-user"