Hadoop的HA环境搭建

栏目: 服务器 · 发布时间: 7年前

内容简介:Zookeeper集群:192.168.176.131 (bigdata112)192.168.176.132 (bigdata113)

一、集群的规划

Zookeeper集群:

192.168.176.131 (bigdata112)

192.168.176.132 (bigdata113)

192.168.176.135 (bigdata114)

Hadoop集群:

192.168.176.131 (bigdata112) NameNode1 ResourceManager1 Journalnode

192.168.176.132 (bigdata113) NameNode2 ResourceManager2 Journalnode

192.168.176.135 (bigdata114) DataNode1 NodeManager1

192.168.176.136 (bigdata115) DataNode2 NodeManager2

二、准备工作

1、安装JDK

2、配置环境变量

3、配置免密码登录

4、配置主机名

三、配置Zookeeper(在192.168.176.131安装)

在主节点(bigdata112)上配置ZooKeeper

(*)配置/training/zookeeper-3.4.6/conf/zoo.cfg文件

dataDir=/training/zookeeper-3.4.6/tmp

server.1=bigdata112:2888:3888
server.2=bigdata113:2888:3888
server.3=bigdata114:2888:3888

(*)在/training/zookeeper-3.4.6/tmp目录下创建一个myid的空文件

echo 1 > /training/zookeeper-3.4.6/tmp/myid

(*)将配置好的zookeeper拷贝到其他节点,同时修改各自的myid文件

scp -r /training/zookeeper-3.4.6/ bigdata113:/training
        scp -r /training/zookeeper-3.4.6/ bigdata114:/training

(*)分别修改113和114上/training/zookeeper-3.4.6/tmp/myid为2和3

四、安装Hadoop集群(在bigdata112上安装)

1、修改hadoo-env.sh

export JAVA_HOME=/training/jdk1.8.0_144

2、修改core-site.xml

<configuration>
            <!-- 指定hdfs的nameservice为ns1 -->
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://ns1</value>
            </property>
            <!-- 指定hadoop临时目录 -->
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/training/hadoop-2.7.3/tmp</value>
            </property>

            <!-- 指定zookeeper地址 -->
            <property>
                    <name>ha.zookeeper.quorum</name>
                    <value>bigdata112:2181,bigdata113:2181,bigdata114:2181</value>
            </property>
</configuration>

3、修改hdfs-site.xml(配置这个nameservice中有几个namenode)

<property>
        <name>dfs.replication</name>
        <value>2</value>
</property>
<property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
</property>
<configuration> 
            <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
            <property>
                <name>dfs.nameservices</name>
                <value>ns1</value>
            </property>

            <!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
            <property>
                <name>dfs.ha.namenodes.ns1</name>
                <value>nn1,nn2</value>
            </property>

            <!-- nn1的RPC通信地址 -->
            <property>
                <name>dfs.namenode.rpc-address.ns1.nn1</name>
                <value>bigdata112:9000</value>
            </property>
            <!-- nn1的http通信地址 -->
            <property>
                <name>dfs.namenode.http-address.ns1.nn1</name>
                <value>bigdata112:50070</value>
            </property>

            <!-- nn2的RPC通信地址 -->
            <property>
                <name>dfs.namenode.rpc-address.ns1.nn2</name>
                <value>bigdata113:9000</value>
            </property>
            <!-- nn2的http通信地址 -->
            <property>
                <name>dfs.namenode.http-address.ns1.nn2</name>
                <value>bigdata113:50070</value>
            </property>

            <!-- 指定NameNode的日志在JournalNode上的存放位置 -->
            <property>
                <name>dfs.namenode.shared.edits.dir</name>
                <value>qjournal://bigdata112:8485;bigdata113:8485;/ns1</value>
            </property>
            <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
            <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/training/hadoop-2.7.3/journal</value>
            </property>

            <!-- 开启NameNode失败自动切换 -->
            <property>
                <name>dfs.ha.automatic-failover.enabled</name>
                <value>true</value>
            </property>

            <!-- 配置失败自动切换实现方式 -->
            <property>
                <name>dfs.client.failover.proxy.provider.ns1</name>
                <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
            </property>

            <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
            <property>
                <name>dfs.ha.fencing.methods</name>
                <value>
                    sshfence
                    shell(/bin/true)
                </value>
            </property>

            <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
            <property>
                <name>dfs.ha.fencing.ssh.private-key-files</name>
                <value>/root/.ssh/id_rsa</value>
            </property>

            <!-- 配置sshfence隔离机制超时时间 -->
            <property>
                <name>dfs.ha.fencing.ssh.connect-timeout</name>
                <value>30000</value>
            </property>
</configuration>

4、修改mapred-site.xml

<configuration>
    <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
    </property>
    </configuration>

5、修改yarn-site.xml

<configuration>
        <!-- 开启RM高可靠 -->
        <property>
           <name>yarn.resourcemanager.ha.enabled</name>
           <value>true</value>
        </property>

        <!-- 指定RM的cluster id -->
        <property>
           <name>yarn.resourcemanager.cluster-id</name>
           <value>yrc</value>
        </property>

        <!-- 指定RM的名字 -->
        <property>
           <name>yarn.resourcemanager.ha.rm-ids</name>
           <value>rm1,rm2</value>
        </property>

        <!-- 分别指定RM的地址 -->
        <property>
           <name>yarn.resourcemanager.hostname.rm1</name>
           <value>bigdata112</value>
        </property>
        <property>
           <name>yarn.resourcemanager.hostname.rm2</name>
           <value>bigdata113</value>
        </property>

        <!-- 指定zk集群地址 -->
        <property>
           <name>yarn.resourcemanager.zk-address</name>
           <value>bigdata112:2181,bigdata113:2181,bigdata114:2181</value>
        </property>

        <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</value>
        </property>
    </configuration>

6、修改slaves

bigdata14
    bigdata15

7、将配置好的hadoop拷贝到其他节点

scp -r /training/hadoop-2.7.3/ root@bigdata113:/training/
    scp -r /training/hadoop-2.7.3/ root@bigdata114:/training/
    scp -r /training/hadoop-2.7.3/ root@bigdata115:/training/

五、启动Zookeeper集群

进到zk的安装目录的bin目录下:

启动
    ./zkServer.sh start 
    查看状态
    ./zkServer.sh status

六、在bigdata112和bigdata113上启动journalnode

hadoop-daemon.sh start journalnode

七、格式化HDFS(在bigdata112上执行)

  1. 格式化HDFS
    hdfs namenode -format

2.将112上这台的/training/hadoop-2.7.3/tmp/dfs拷贝到bigdata13的/training/hadoop-2.7.3/tmp/dfs下

scp -r /training/hadoop-2.7.3/tmp/dfs/* root@bigdata113:/training/hadoop-2.7.3/tmp/dfs/

3.格式化zookeeper

hdfs zkfc -formatZK

日志:

17/07/13 00:34:33 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/ns1 in ZK.

八、在bigdata12上启动Hadoop集群

start-all.sh

日志:
    Starting namenodes on [bigdata12 bigdata13]
    bigdata12: starting namenode, logging to /root/training/hadoop-2.4.1/logs/hadoop-root-namenode-hadoop113.out
    bigdata13: starting namenode, logging to /root/training/hadoop-2.4.1/logs/hadoop-root-namenode-hadoop112.out
    bigdata14: starting datanode, logging to /root/training/hadoop-2.4.1/logs/hadoop-root-datanode-hadoop115.out
    bigdata15: starting datanode, logging to /root/training/hadoop-2.4.1/logs/hadoop-root-datanode-hadoop114.out

    bigdata13: starting zkfc, logging to /root/training/hadoop-2.7.3/logs/hadoop-root-zkfc-bigdata13.out
    bigdata12: starting zkfc, logging to /root/training/hadoop-2.7.3/logs/hadoop-root-zkfc-bigdata12.out

bigdata113上的ResourceManager需要单独启动
命令:yarn-daemon.sh start resourcemanager

九、问题延伸

1、隔离机制和隔离级别
    (*)关系型数据库:如果不考虑事务隔离级别,造成脏读、不可重复读、幻读
    (*)HDFS的HA:如果不考虑隔离机制(隔离级别),造成脑裂的问题
2、什么是脑裂的问题?
    脑裂的问题,针对的是数据节点(DataNode)
    由于某种原因,造成了整个HDFS中存在多个active的NameDode,这时候DataNode就不知道谁是真正的NameNode。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Powerful

Powerful

Patty McCord / Missionday / 2018-1-25

Named by The Washington Post as one of the 11 Leadership Books to Read in 2018 When it comes to recruiting, motivating, and creating great teams, Patty McCord says most companies have it all wrong. Mc......一起来看看 《Powerful》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器