HDFS高可用完全分布式集群搭建

之前已经介绍过了高可用完全分布式HDFS集群,现在我们来搭建这个集群。
集群规划:

NN-1 NN-2 DN ZK ZKFC JNN
node01 * * *
node02 * * * * *
node03 * * *
node04 * *

一、时间同步

  1. 各个节点安装ntp命令
[root@node01 ~]# yum install npt
  1. 上网查找最新的时间服务器 ntp1.aliyun.com
  2. 同步时间ntpdate ntp1.aliyun.com同步时间ntpdate ntp1.aliyun.com
[root@node01 ~]# ntpdate ntp1.aliyun.com

二、免密登录

  1. 所有节点执行
[root@node01 ~]# ssh-keygen -t rsa
  1. node01->node01 node01->node02 node01->node03 node01->node04
[root@node01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
[root@node01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
[root@node01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03
[root@node01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04
  1. node02->node01
[root@node02 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01

三、所有节点配置JDK

四、解压配置hadoop和配置/etc/profile 和 ~/.bashrc

  1. 修改hdfs-site.xml配置文件
<configuration>
	<!-- namenode服务名称 -->
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <!-- namenode服务节点 -->
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <!-- nn1的RPC通信地址,nn1所在地址  -->
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>node01:8020</value>
    </property>
    <!-- nn2的RPC通信地址,nn2所在地址 --> 
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>node02:8020</value>
    </property>
    <!-- nn1的http通信地址,外部访问地址 --> 
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>node01:50070</value>
    </property>
    <!-- nn2的http通信地址,外部访问地址 --> 
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>node02:50070</value>
    </property>
    <!-- 指定NameNode的元数据在JournalNode上的存放位置 --> 
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
    </property>
    <!-- 指定JournalNode在本地磁盘存放数据的位置 --> 
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/var/abc/hadoop/ha/jn</value>
    </property>
    <!--客户端通过代理访问namenode,访问文件系统,HDFS客户端与Active 节点通信的Java类,使用其确定Active节点是否活跃  -->
    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
     <!--配置自动切换的方法,远程登录杀死  -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <!-- 使用sshfence隔离机制,配置ssh免登陆 -->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    <!-- 开启自动故障转移 -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
</configuration>
  1. 修改core-site.xml配置文件
<configuration>
	<!-- 集群中NameNode结点的URI(包括协议、主机名称、端口号) -->
    <property>
	    <name>fs.defaultFS</name>
	    <value>hdfs://mycluster</value>
    </property>
    <!-- zokeeper所在位置 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>node02:2181,node03:2181,node04:2181</value>
    </property>
</configuration>
  1. 修改slaves配置文件
node02
node03
node04

五、将配置好的HDFS安装包拷贝到node02 node03 node04,并配置/etc/profile 和 ~/.bashrc

[root@node01 software]# scp -r hadoop-2.6.5 root@node02:/opt/software/

六、格式化NameNode(创建目录以及文件)

  1. 在node01、node02、node03分别执行如下命令
[root@node02 software]# hadoop-daemon.sh start journalnode
  1. 随机选择一台NameNode执行:
[root@node01 software]# hdfs namenode -format
[root@node01 software]# hadoop-daemon.sh start namenode
  1. 另外一台NameNode节点执行:
[root@node02 software]# hdfs namenode  -bootstrapStandby

七、搭建zookeeper集群

  1. 在/opt/software/目录下解压
[root@node01 software]# tar zxf zookeeper-3.4.10.tar.gz
  1. 修改/opt/software/zookeeper-3.4.10/conf目录下的zoo_sample.cfg的名称,改为zoo.cfg
[root@node01 conf]# mv zoo_sample.cfg zoo.cfg
  1. 修改zoo.cfg
[root@node01 conf]# vi zoo.cfg 

修改数据存放目录,不要放在/tmp目录下,因为该目录下的文件重启会被清理

dataDir=/opt/data/zookeeper

在文本最后加上

server.2=node02:2888:3888
server.3=node03:2888:3888
server.4=node04:2888:3888
  1. 将配置好的zookeeper安装包拷贝到node02 node03 node04,并配置好/etc/profile文件 和 ~/.bashrc文件
[root@node01 software]# scp -r zookeeper-3.4.10 root@node02:/opt/software/
  1. 在node02、03、04节点的对应dataDir目录下创建一个myid文件,在这个文件中写上当前节点ID号
[root@node02 /]# mkdir -p /opt/data/zookeeper/
[root@node02 zookeeper]# vi myid 

2
~    
~    
~    
  1. node02、03、04节点启动zookeeper
[root@node02 zookeeper]# zkServer.sh start
  1. 格式化zookeeper
[root@node01 /]# hdfs zkfc -formatZK

八、关闭所有节点上的进程

[root@node01 /]# stop-dfs.sh

九、启动HDFS

[root@node01 /]# start-dfs.sh

本文部分内容参考https://blog.csdn.net/weixin_41407399/article/details/79687469
遇到问题可参考搭建HDFS集群应该注意虚拟机的相关配置

发布了13 篇原创文章 · 获赞 11 · 访问量 4264
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览