大数据之三 hadoop HDFS集群完全分布式搭建

完全分布式

多台服务器,每台服务器启动表示不同角色的不同进程,组成HDFS集群
现在以四台虚拟机为例,主机名分别为node01,node02,node03,node04.
node01–>NameNode
node02–>SecondaryNameNode DateNode
node03–>DateNode
node04–>DataNode

完全分布式搭建步骤

  1. 首先确保各节点都配置好静态IP
  2. 配置各节点的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

  1. 关闭各节点的防火墙
    使用 service iptables status命令查看当前防火墙状态
    使用 service iptables stop暂时关闭防火墙(防火墙会在下次开机时启动)
    使用 chkconfig iptables off永久关闭防火墙(该命令在下次重启时生效)

  2. 时间同步
    首先在各个节点上使用yum install ntp安装ntp命令
    执行ntpdate ntp1.aliyun.com来同步时间(这里使用阿里云服务器的时间)

  3. 配置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]
  1. 所有节点配置JDK
    所有节点在 /etc/profile 中配置JDK环境变量
export JAVA_HOME=/opt/zgl/jdk1.8.0_151		<!-- 你的JDK的实际位置 -->
export PATH=$PATH:$JAVA_HOME/bin
  1. 在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

  1. 将配置好的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/
  1. 关闭所有节点上的HDFS相关进程
stop-dfs.sh
  1. 在node01节点执行格式化NameNode
hdfs namenode -format
  1. 在node01节点上启动HDFS
start-dfs.sh
  1. 在各节点上运行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来访问),然后我们就来到如下页面
大数据之三 hadoop HDFS集群完全分布式搭建
在 Summary 中可以看到 Live Nodes(存活节点数),点击 Live Nodes可以进入节点详情页
大数据之三 hadoop HDFS集群完全分布式搭建
大数据之三 hadoop HDFS集群完全分布式搭建

思维导图

大数据之三 hadoop HDFS集群完全分布式搭建