2-Zookeeper、HA安装

1、Zookeeper安装

  1、解压 zookeeper 到安装目录中/opt/app/zookeeper 中。

  2、在安装目录下创建data和logs两个目录用于存储数据和日志:

      cd /opt/app/zookeeper-3.4.10
      mkdir dir_data
      mkdir dir_logs

  3、在conf目录下新建zoo.cfg文件,写入以下内容保存:

      tickTime=2000
      dataDir=/opt/app/zookeeper-3.4.10/dir_data
      dataLogDir=/opt/app/zookeeper-3.4.10/dir_logs
      clientPort=2181
      initLimit=5
      syncLimit=2
      server.1=s10:2888:3888 //s10,s11,s12是自己的ip
      server.2=s11:2888:3888
      server.3=s11:2888:3888

      注:分布式协调服务:s10,s11,s12

  4、在新建的dir_data下,新建一个myid文件,分配票数。

      s10 : echo '1' > /opt/app/zookeeper-3.4.10/dir_data/myid

      s11: echo '2' > /opt/app/zookeeper-3.4.10/dir_data/myid

      s12: echo '3' > /opt/app/zookeeper-3.4.10/dir_data/myid

  5、启动命令(bin目录下)

      ./zkServer.sh start
      ./zkServer.sh stop
      ./zkServer.sh restart
      ./zkServer.sh status

  注:当半数以上启动时,会每个节点查看状态都能得到其对应的角色。(s10,s11,s12)

2、HA安装

  1、安装HA之前,必须先安装zookeeper

  2、删除原来文件(要删除以前hadoop的残留文件)

    mkdir -p /opt/app/hadoop-2.7.2/journalnode       //创建共享存储系统的journalnode节点编辑日志存储路劲

    mkdir -p /opt/app/hadoop-2.7.2/namenode       //存储namenode的临时文件(不然会在tmp下面)
    mkdir -p /opt/app/hadoop-2.7.2/datanode       //存储datenode的临时文件(不然会在tmp下面)

    rm -rf /opt/app/hadoop-2.7.2/journalnode/*
    rm -rf /opt/app/hadoop-2.7.2/namenode/*
    rm -rf /opt/app/hadoop-2.7.2/datanode/*

    rm -rf /tmp/*                     //所有的都执行

    rm -rf /opt/app/hadoop-2.7.2/data/tmp/*

    rm -rf /opt/app/hadoop-2.7.2/logs/*

  3、更改配置文件core-site.xml

    <configuration>

        <!--配置名称节点集群-->

        <property>

            <name>fs.defaultFS</name>

            <value>hdfs://MyNNS</value>

        </property>

        <property>

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

            <value>/opt/app/hadoop-2.7.2/data/tmp</value>

        </property>

        <!--配置zookeeper-->

        <property>

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

            <value>192.168.40.10:2181,192.168.40.11:2181,192.168.40.12:2181</value>

        </property>

    </configuration>

  4、hdfs-site

    <configuration>

        <!-- 配置集群中的集群名称 -->

        <property>

            <name>dfs.nameservices</name>

            <value>MyNNS</value>

        </property>

        <!-- 配置名称集群中的名称节点-->

        <property>

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

            <value>nn1,nn2</value>

        </property>

        <!--配置nn1的主机位置与端口号 -->

        <property>

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

            <value>192.168.40.10:8020</value>

        </property>

        <!-- 配置nn2的主机名称端口号-->

        <property>

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

            <value>192.168.40.11:8020</value>

        </property>

        <!--配置nn1与nn2 web访问端口 -->

        <property>

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

            <value>192.168.40.10:50070</value>
    </property>

        <property>

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

            <value>192.168.40.11:50070</value>

        </property>

        <!--配置journalnode日志服务器主机位置 -->

        <property>

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

            <value>qjournal://192.168.40.10:8485;192.168.40.11:8485;192.168.40.12:8485/MyNNS</value>

        </property>

        <!--配置journalnode 日志存储的地址 -->

        <property>

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

            <value>/opt/app/hadoop-2.7.2/journalnode</value>

        </property>

        <!-- 配置HA的代理服务-->

        <property>

            <name>dfs.client.failover.proxy.provider.MyNNS</name>

            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

        </property>

        <!--配置SSH登录 -->

        <property>

            <name>dfs.ha.fencing.methods</name>

            <value>sshfence</value>

        </property>

        <property>

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

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

        </property>

        <property>

            <name>dfs.ha.fencing.ssh.connect-timeout</name>

            <value>30000</value>

        </property>

        <!-- 开启自动故障转移功能-->

        <property>

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

            <value>true</value>

        </property>

        <property>

            <name>dfs.permissions.enabled</name>

            <value>false</value>

        </property>

        <!-- namenode临时文件存储目录-->

        <property>
            <name>dfs.name.dir</name>
            <value>/opt/app/hadoop-2.7.2/namenode/</value>
        </property> 

        <!-- datanode临时文件存储目录-->

        <property>
            <name>dfs.data.dir</name>
            <value>/opt/app/hadoop-2.7.2/datanode/</value>
        </property>

    </configuration>

  5、格式化文件系统

    scp -r /opt/app/hadoop-2.7.2 s13:/opt/app/     //分发配置文件

    zkServer.sh start                //三台zk都必须先启动

    hadoop-daemon.sh start journalnode      //三台journalnode都必须先启动

    hadoop namenode -format         //格式化hdfs

    hdfs zkfc -formatZK             //初始化ZK

    hadoop-daemon.sh start namenode      //启动namenode(active节点上)

    hdfs namenode -bootstrapStandby     //同步到Standby节点上

    hadoop-daemon.sh start namenode    //Standby节点上开启namenode

    start-all.sh                //启动全部

    hdfs haadmin -getServiceState nn1 //查看nn1状态
    hdfs haadmin -getServiceState nn2 //查看nn1状态

  6、第二次开启就不需要这么费神了

    zkServer.sh start //三台zk都必须先启动
    start-all.sh //启动全部

上一篇:聊聊Java语言中的单例


下一篇:POJ 2186 Popular Cows(强连通分量Kosaraju)