zoukankan      html  css  js  c++  java
  • 大数据7.1

    topology

    Hadoop2.0 HA 集群搭建步骤

    1.1 架构图

     

    1.2 集群节点分配

    • hadoop1

          Zookeeper

          NameNode(active)

          Resourcemanager (active)

    • hadoop2

          Zookeeper

          NameNode (standby)

    • hadoop3

          Zookeeper

          ResourceManager(standby)

    • hadoop4

          DataNode

          NodeManager

          JournalNode

    • hadoop5

          DataNode

          NodeManager

          JournalNode

    • hadoop6

          DataNode

          NodeManager

          JournalNode

    1.3 安装步骤

    1.3.1 固化IP

        修改配置文件

          cd /etc/sysconfig/network-scripts #进入网络配置目录

          dir ifcfg* #找到网卡配置文件

          ifcfg-eno16777736  ifcfg-lo

          vi ifcfg-eno16777736

        配置文件内容

          TYPE=Ethernet

          BOOTPROTO=static #改成static,针对NAT

          NAME=eno16777736

          UUID=4cc9c89b-cf9e-4847-b9ea-ac713baf4cc8

          DEVICE=eno16777736

          ONBOOT=yes #开机启动此网卡

          IPADDR=192.168.163.129 #固定IP地址

          NETMASK=255.255.255.0 #子网掩码

          GATEWAY=192.168.163.2 #网关和NAT自动配置的相同,不同则无法登录

          DNS1=192.168.163.2 #和网关相同

        重启网络

          service network restart

          ping www.baidu.com

      1.3.2 永久关闭每台机器的防火墙

          systemctl stop firewalld.service #关闭防火墙服务

          systemctl disable firewalld.service #禁止防火墙开启启动

          firewall-cmd --state #检查防火墙状态

      1.3.3 为每台机器配置主机名

        hadoop1,hadoop2 ……

        以及hosts文件

        配置主机名

        执行:vim /etc/hostname 修改为hadoop1~6

        然后执行 hostname 主机名

        达到不重启生效目的

      配置hosts文件

        执行:vim /etc/hosts

        示例:

    127.0.0.1 localhost
    ::1 localhost
    192.168.65.121 hadoop1
    192.168.65.122 hadoop2
    192.168.65.123 hadoop3
    192.168.65.124 hadoop4
    192.168.65.125 hadoop5
    192.168.65.126 hadoop6

      1.3.4 通过远程命令将配置好的hosts文件scp到其他5台节点上

        执行:scp /etc/hosts hadoop2:/etc

      1.3.5 为每台机器配置ssh免秘钥登录

        执行:ssh-keygen

        ssh-copy-id root@hadoop1 (分别发送到6台节点上)

        vim /root/.ssh/known_hosts 检查是否配置成功

      1.3.6 为每台机器安装jdk和配置JAVA_HOME

        vim /etc/profile

        在尾行添加

    JAVA_HOME=/home/app/jdk1.8.0_65
    JAVA_BIN=/home/app/jdk1.8.0_65/bin
    HADOOP_HOME=/home/app/hadoop-2.7.1
    PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN HADOOP_HOME PATH CLASSPATH

      1.3.7 前三台机器安装和配置zookeeper

        解压安装包 tar -xvf zookeeper-3.4.8.tar.gz

        进入conf目录 cd zookeeper-3.4.8/conf/

        复制zoo_sample.cfg zoo.cfg:  cp zoo_sample.cfg zoo.cfg

        编辑zoo.cfgvim zoo.cfg

     

        Zookeeper根目录中创建tmp文件夹,tmp文件夹中创建myid文件,编辑文本:12,3

         拷贝整个zookeeper目录到hadoop2hadoop3并修改myid文件分别为1,2

        scp -r zookeeper-3.4.8 hadoop2:/home/app

      1.3.8 安装和配置01节点的hadoop

        解压安装包

        cd etc/hadoop

        配置 hadoop-env.sh

        配置jdk安装所在目录

        配置hadoop配置文件所在目录

      1.3.9 配置core-site.xml

    <configuration>
    <!--用来指定hdfs的老大,ns为固定属性名,表示两个namenode-->
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://ns</value>
    </property>
    <!--用来指定hadoop运行时产生文件的存放目录-->
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/app/hadoop-2.7.1/tmp</value>
    </property>
    <!--执行zookeeper地址-->
    <property>
      <name>ha.zookeeper.quorum</name>
      <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
    </property>
    </configuration>

      1.3.10 配置01节点hdfs-site.xml

      

    <configuration>
    <!--执行hdfs的nameservice为ns,和core-site.xml保持一致-->
    <property>
      <name>dfs.nameservices</name>
      <value>ns</value>
    </property>
    <!--ns下有两个namenode,分别是nn1,nn2-->
    <property>
      <name>dfs.ha.namenodes.ns</name>
      <value>nn1,nn2</value>
    </property>
    <!--nn1 的 RPC 通信地址-->
    <property>
      <name>dfs.namenode.rpc-address.ns.nn1</name>
      <value>hadoop1:9000</value>
    </property>
    <!--nn1的http通信地址-->
    <property>
      <name>dfs.namenode.http-address.ns.nn1</name>
      <value>hadoop1:50070</value>
    </property>
    <!--nn2的RPC通信地址-->
    <property>
      <name>dfs.namenode.rpc-address.ns.nn2</name>
      <value>hadoop2:9000</value>
    </property>
    <!--nn2 的 http 通信地址-->
    <property>
      <name>dfs.namenode.http-address.ns.nn2</name>
      <value>hadoop2:50070</value>
    </property>
    <!--指定namenode的元数据在JournalNode上的存放位置,这样,namenode2可以
     从 jn 集群里获取最新的namenode的信息,达到热备的效果-->
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://hadoop4:8485;hadoop5:8485;hadoop6:8485/ns</value>
    </property>
    <!--指定 JournalNode 存放数据的位置-->
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/app/hadoop-2.7.1/journal</value>
    </property>
    <!--开启namenode故障时自动切换-->
    <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
    </property>
    <!--配置切换的实现方式-->
    <property>
      <name>dfs.client.failover.proxy.provider.ns</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>/root/.ssh/id_rsa</value>
    </property>
    <!--配置namenode数据存放的位置,可以不配置,如果不配置,默认用的是core-site.xml里配置的hadoop.tmp.dir的路径-->
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:///home/app/hadoop-2.7.1/tmp/namenode</value>
    </property>
    <!--配置datanode数据存放的位置,可以不配置,如果不配置,默认用的是core-site.xml 里配置的 hadoop.tmp.dir 的路径-->
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:///home/app/hadoop-2.7.1/tmp/datanode</value>
    </property>
    <!--配置 block 副本数量-->
    <property>
      <name>dfs.replication</name>
      <value>3</value>
    </property>
    <!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->
    <property>
    <name>dfs.permissions</name>
    <value>false</value>
    </property>
    </configuration>

     

    1.3.11 配置 mapred-site.xml

    <configuration>
    <property>
    <!--指定mapreduce运行在yarn上-->
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
    </configuration>

    1.3.12 配置yarn-site.xml

    <configuration>
    <!--开启YARN HA -->
    <property>
      <name>yarn.resourcemanager.ha.enabled</name>
      <value>true</value>
    </property>
      <!--指定两个resourcemanager的名称-->
    <property>
      <name>yarn.resourcemanager.ha.rm-ids</name>
      <value>rm1,rm2</value>
    </property>
    <!--配置rm1,rm2的主机-->
    <property>
      <name>yarn.resourcemanager.hostname.rm1</name>
      <value>hadoop1</value>
    </property>
    <property>
      <name>yarn.resourcemanager.hostname.rm2</name>
      <value>hadoop3</value>
    </property>
    <!--开启yarn恢复机制-->
    <property>
      <name>yarn.resourcemanager.recovery.enabled</name>
      <value>true</value>
    </property>
    <!--执行rm恢复机制实现类-->
    <property>
      <name>yarn.resourcemanager.store.class</name>
      <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <!--配置zookeeper的地址-->
    <property>
      <name>yarn.resourcemanager.zk-address</name>
      <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
      <description>For multiple zk services, separate them with comma</description>
    </property>
    <!--指定YARN HA的名称-->
    <property>
      <name>yarn.resourcemanager.cluster-id</name>
      <value>yarn-ha</value>
    </property>
    <!--指定 yarn 的老大 resoucemanager 的地址-->
    <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>hadoop1</value>
    </property>
    <!--NodeManager获取数据的方式-->
    <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
    </property>
    </configuration>

    1.3.13 配置slaves文件

    hadoop4
    hadoop5
    hadoop6

    1.3.14 根据配置文件,创建相关的文件夹,用来存放对应数据

    在hadoop-2.7.1目录下创建:

    ①journal目录

    ②创建tmp目录

    ③在tmp目录下,分别创建namenode目录和datanode目录

    1.3.15 配置 hadoop 的环境变量(可不配)

    JAVA_HOME=/home/app/jdk1.8.0_65
    JAVA_BIN=/home/app/jdk1.8.0_65/bin
    HADOOP_HOME=/home/app/hadoop-2.7.1
    PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN HADOOP_HOME PATH CLASSPATH

    1.3.16 通过scp 命令,将hadoop安装目录远程copy到其他5台机器上

      比如向hadoop02节点传输:

      scp -r hadoop-2.7.1 hadoop2:/home/app

    1.3.17 启动zookeeper集群

      在Zookeeper安装目录的bin目录下执行:sh zkServer.sh start

    1.3.18 格式化zookeeper

      在zkleader节点上执行:

      hdfs zkfc -formatZK,这个指令的作用是在zookeeper集群上生成ha节点 ns节点)

      注:18--24步可以用一步来替代:进入hadoop安装目录的sbin目录,执行: sh start-dfs.sh 。 但建议还是按部就班来执行,比较可靠。

    1.3.19 启动journalnode集群

      在456节点上执行:

      切换到hadoop安装目录的sbin目录下,执行:

      sh hadoop-daemons.sh start journalnode

      然后执行jps命令查看进程。

    1.3.20 格式化1节点的namenode

      在1节点上执行:

      hadoop namenode -format

    1.3.21 启动1节点的namenode

      在 1 节点上执行:

      sh hadoop-daemon.sh start namenode

    1.3.22 2节点的namenode节点变为standby namenode节点

      在2节点上执行:

      hdfs namenode -bootstrapStandby

    1.3.23 启动 2 节点的 namenode 节点

      在2节点上执行:

      sh hadoop-daemon.sh start namenode

    1.3.24 4,5,6节点上启动datanode节点

      在 4,5,6 节点上执行: sh hadoop-daemon.sh start datanode

    1.3.25 启动zkfc(启动FalioverControllerActive)

      在1,2节点上执行:

      sh hadoop-daemon.sh start zkfc

    1.3.26 1节点上启动主Resourcemanager

      在1节点上执行:start-yarn.sh

      启动成功后,4,5,6节点上应该有nodemanager 的进程

    1.3.27  3 节点上启动副 Resoucemanager

      在3节点上执行:sh yarn-daemon.sh start resourcemanager

    1.4 测试

      输入地址: http://192.168.65.111:50070 ,查看 namenode 的信息,是active状态

       

      输入地址:http://192.168.65.22:50070查看namenode的信息,是standby状态

       

      然后停掉01节点的namenode,此时发现standbynamenode变为active

  • 相关阅读:
    【案例】图片上传
    BOM相关知识点
    【案例】图片无缝轮播效果
    DOM相关知识点
    【案例】雪花飘落效果
    DOM节点克隆
    DOM节点的创建、插入、删除
    【案例】列表全选、全不选、反选
    AJAX相关概念及应用
    解决跨域问题
  • 原文地址:https://www.cnblogs.com/xiangyuqi/p/8760260.html
Copyright © 2011-2022 走看看