大数据之三 hadoop HDFS集群完全分布式搭建
完全分布式
多台服务器,每台服务器启动表示不同角色的不同进程,组成HDFS集群
现在以四台虚拟机为例,主机名分别为node01,node02,node03,node04.
node01–>NameNode
node02–>SecondaryNameNode DateNode
node03–>DateNode
node04–>DataNode
完全分布式搭建步骤
- 首先确保各节点都配置好静态IP
- 配置各节点的hosts,修改/etc/hosts文件
[[email protected] ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.23.130 node01
192.168.23.131 node02
192.168.23.133 node03
192.168.23.134 node04
-
关闭各节点的防火墙
使用service iptables status
命令查看当前防火墙状态
使用service iptables stop
暂时关闭防火墙(防火墙会在下次开机时启动)
使用chkconfig iptables off
永久关闭防火墙(该命令在下次重启时生效) -
时间同步
首先在各个节点上使用yum install ntp
安装ntp命令
执行ntpdate ntp1.aliyun.com
来同步时间(这里使用阿里云服务器的时间) -
配置SSH免密登录
在所有节点上执行ssh-****** -t rsa -P '' -f ~/.ssh/id_rsa
在node01节点上执行以下命令(将node01的公钥加入到其他节点的白名单中)
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
- 所有节点配置JDK
所有节点在 /etc/profile 中配置JDK环境变量
export JAVA_HOME=/opt/zgl/jdk1.8.0_151 <!-- 你的JDK的实际位置 -->
export PATH=$PATH:$JAVA_HOME/bin
- 在node01节点(即NameNode节点)配置hadoop
修改hdfs-site.xml配置文件
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 总存储分数(备份数+1)-->
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node02:50090</value> <!-- SecondaryNameNode的位置 -->
</property>
修改core-site.xml配置文件
<property>
<name>fs.defaultFS</name> <!-- HDFS文件默认地址前缀(简化实际访问时路径书写) -->
<value>hdfs://node01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name> <!-- HDFS文件存储位置 -->
<value>/var/abc/hadoop/cluster</value>
</property>
修改slaves配置文件
配置DataNode节点,注意每行写一个
node02
node03
node04
修改hadoop-env.sh配置文件
# The java implementation to use.
export JAVA_HOME=/opt/zgl/jdk1.8.0_151
# 在hadoop-env.sh 配置一条hadoop配置文件所在目录
export HADOOP_CONF_DIR=/opt/zgl/hadoop-2.6.5/etc/hadoop
刷新配置 source hadoop-env.sh
- 将配置好的hadoop安装包分发到其他节点上
使用 scp 命令将hadoop安装包分发到其他节点,注意其他节点提前建好目录且与node01目录(名称,层级)保持一致
eg: node01 /opt/zgl/hadoop-2.6.5 其他节点 /opt/zgl
scp -r hadoop-2.6.5 [email protected]:/opt/zgl/
scp -r hadoop-2.6.5 [email protected]:/opt/zgl
scp -r hadoop-2.6.5 [email protected]:/opt/zgl/
- 关闭所有节点上的HDFS相关进程
stop-dfs.sh
- 在node01节点执行格式化NameNode
hdfs namenode -format
- 在node01节点上启动HDFS
start-dfs.sh
- 在各节点上运行jps命令查看节点是否启动
[[email protected] ~]# jps
2408 NameNode
3545 Jps
[[email protected] ~]# jps
2225 DataNode
2290 SecondaryNameNode
4283 Jps
[[email protected] ~]# jps
3252 Jps
2110 DataNode
[[email protected] ~]# jps
4662 Jps
2111 DataNode
这里我们也可以通过hadoop提供的 web UI 来进行查看
打开浏览器,输入http://192.168.23.130:50070
(因为主机 hosts 文件中并未配置node01,所以这里不能使用 http://node01:50070
来访问),然后我们就来到如下页面
在 Summary 中可以看到 Live Nodes(存活节点数),点击 Live Nodes可以进入节点详情页