美文网首页
Hadoop2.X高可用集群环境的搭建

Hadoop2.X高可用集群环境的搭建

作者: 谦谦志成 | 来源:发表于2018-11-18 17:09 被阅读0次

环境准备

            1.下载hadoop-2.5.2、zookeeper-3.4.6和JDK1.8

            2.准备九台设备,每台设备的安装内容如下表

        3.安装JDK之后验证一下看看机器中是否安装了fuser,如果没有安装fuser可以之下yum install -y psmisc 安装fuser插件。注意:如果没有fuser插件,ZKFC无法正常工作。

    4.在这九台设备中完成SSH免密码登录

安装Zookeeper集群

       在master-3、slave-3-1和slave-3-2三台机器上安装zookeeper集群。在三台解压zookeeper到usr目录下。

        1.拷贝conf目下的zoo_sample.cfg文件为zoo.cfg

        2.在master-3机器中修改zoo.cfg文件:

        修改dataDir为dataDir=/usr/zookeeper/data

            添加一下代码到未见的末尾,用以定义三个机器的集群编号,IP地址、本地端口和集群通讯端口

            server.1=master-3:2888:3888

            server.2=slave-3-1:2888:3888

            server.3=slave-3-2:2888:3888

            在/usr/zookeeper/data目录下新建myid文件。

            把以上操作在slave-3-1和slave-3-2中操作一遍。

        3.把对应的集群编号放到/usr/zookeeper/myid文件中。例如master-3机器中的myid中写入1。

        master-3中的/usr/zookeeper/myid文件中的值为1

            slave-3-1中的/usr/zookeeper/myid文件中的值为2

            slave-3-2中的/usr/zookeeper/myid文件中的值为3

        4.启动zookeeper

            分别在三台设备上执行./bin/zkServer.sh start命令

        5.查看zookeeper状态,用以验证zookeeper集群是否成功

            ./bin/zkServer.sh status.

        如果有两台设备显示Mode: follower,一台显示Mode: leader这表明集群安装成功

配置Hadoop文件

       1.配置hdfs-site.xml文件:             

<configuration>

<!-- 配置集群服务名称-->

    <property>

          <name>dfs.nameservices</name>

          <value>mycluster</value>

    </property>

    <!--

        配置集群服务中的namenode节点名称为nn1和nn2

        dfs.ha.namenodes.[服务名称]。

    -->

    <property>

          <name>dfs.ha.namenodes.mycluster</name>

          <value>nn1,nn2</value>

    </property>

    <!--

        配置所有NameNode节点的RPC通讯地址和端口

        name:dfs.namenode.rpc-address.[服务名称].[节点名称]

        value:[namenode主机的IP地址或主机名]:[端口号]默认端口为8020

    -->

    <property>

          <name>dfs.namenode.rpc-address.mycluster.nn1</name>

          <value>master-1:8020</value>

    </property>

    <property>

          <name>dfs.namenode.rpc-address.mycluster.nn2</name>

         <value>master-2:8020</value>

    </property>

    <!--

        配置所有NameNode节点的HTTP通讯地址和端口

        name:dfs.namenode.rpc-address.[服务名称].[节点名称]

        value:[namenode主机的IP地址或主机名]:[端口号]默认端口为50070

    -->

    <property>

        <name>dfs.namenode.http-address.mycluster.nn1</name>

          <value>master-1:50070</value>

    </property>

    <property>

          <name>dfs.namenode.http-address.mycluster.nn2</name>

          <value>master-2:50070</value>

    </property>

    <!--

        配置所有JournalNode节点的访问地址,多个地址用';'分割

        JournalNode的通讯协议为qjournal://

    -->

    <property>

          <name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://master-3:8485;slave-3-1:8485;slave-3-2:8485/mycluster</value>

    </property>

    <!--

        配置ZKFC的配置脚本。该处为默认的配置

        name:格式为dfs.client.failover.proxy.provider.[集群服务名称]

    -->

    <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>

    <!--

        设置SSH私钥地址

    -->

    <property>

          <name>dfs.ha.fencing.ssh.private-key-files</name>

          <value>/home/hadoop/.ssh/id_rsa</value>

    </property>

    <!--

        设置JournalNode节点中文件存储的目录。默认情况窜在/tmp目录下,如果不设置目录,机器重启后,edits数据会丢失

    -->

    <property>

        <name>dfs.journalnode.edits.dir</name>

          <value>/usr/hadoop/journal/node/local/data</value>

    </property>

    <!--

        启动ZKFC的自动切换

    -->

    <property>

           <name>dfs.ha.automatic-failover.enabled</name>

           <value>true</value>

    </property>

</configuration>

        2.配置core-site.xml文件:

            <configuration>

    <!--配置 HDFS的访问路径-->

    <property>

         <name>fs.defaultFS</name>

         <value>hdfs://mycluster</value>

    </property>

    <!--配置Zookeeper访问地址,多个地址用逗号分隔-->

    <property>

           <name>ha.zookeeper.quorum</name>

           <value>master-3:2181,slave-3-1:2181,slave-3-2:2181</value>

    </property>

    <!--配置HDFS本地存储目录-->

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/usr/hadoop/data</value>

    </property>

</configuration>

        3.修改slaves文件。在文件中加入DataNode节点的机器名称或IP地址,具体内容如下:

            slave-1-1

            slave-1-2

            slave-2-1

            slave-2-2

        4.在master-1机器上配置好hdfs-site.xml、core-site.xml和slaves文件后,把这三个文件拷贝到其他八台机器。至此完成了九台设备中hdfs的配置。

启动JournalNode同步Edits

        1.在JournalNode安装机器中执行hdfs-daemon.sh journalnode 启动JournalNode节点。

      2.格式化NameNode;在其中一台NameNode中(master-1设备)执行hdfs namenode -format命令。完成格式化之后,该NameNode节点中的edits同步时JournalNode中。

       3.同步另一个NameNode中的edits;执行hdfs namenode bootstrapStandby命令,完成另一个没有格式化的NameNode节点中edits文件的同步。

          如果你需要加一个已经格式化的NameNode节点到集群中可以执行hdfs -initializeSharedEdits命令进行edit文件的同步。

       至此,所有的NameNode节点已经完成了edits文件的同步。 

配置ZKFC Node

        1.停止所有启动的NameNode和JournalNode节点的服务

        2.初始化HA状态到zookeeper;在master-1和master-2中执行hdfs zkfc -formatZK 命令初始化ZKFC。

启动并验证Hadoop

        1.在master-1中启动Hadoop;./sbin/start-dfs.sh 启动hadoop.

        2.在每个设备中执行jps命令,查看每个设备中启动的节点是否正常

        3.在浏览器中访问master-1:50070和master-2:50070查看各个节点中NameNode的信息。

        4.验证两个NameNode节点是否可以自动切换;在ActiveNameNode节点上执行./hadoop-daemon stop namenode命令停止NameNode服务。查看另一个NameNode是否处于Active状态。如果处于Active则表明HA集群搭建成功。

相关文章

网友评论

      本文标题:Hadoop2.X高可用集群环境的搭建

      本文链接:https://www.haomeiwen.com/subject/otpgfqtx.html