zoukankan      html  css  js  c++  java
  • 1.配置HDFS HA (高可用)

    前提条件

    先搭建zk环境并启动:https://www.cnblogs.com/zhugq02/p/15759195.html

    架构规划:

    192.168.167.82 node2  nn\zk1\zkfc

    192.168.167.83 node3  jn\zk2\dn

    192.168.167.84 node4  jn\zk3\dn

    192.168.167.85 node5  nn\jn\dn

    一、环境初始化(所有节点)

    1.关闭防火墙和iptables

    systemctl stop firewalld && systemctl status firewalld
    service iptables stop && service iptables status

    2.同步时钟服务

    ntpdate -u ntp.sjtu.edu.cn

    3.免密码登录

    两台namenode节点(node2\node5)互相免密设置

    1>.先在node2执行
    ssh-keygen -t rsa
    ssh-copy-id -i node2
    ssh-copy-id -i node5
    
    2>.在node5上执行
    ssh-keygen -t rsa
    ssh-copy-id -i node2
    ssh-copy-id -i node5
    
    3>.完成后分别在node2和node5连接node2和node5验证免密设置是否成功
    ssh node2
    ssh node5

    4.配置hosts文件

    vi /etc/hosts
    192.168.167.82 node2
    192.168.167.83 node3
    192.168.167.84 node4
    192.168.167.85 node5

     二、软件部署

    1.下载hadoop软件,并解压到/usr/local目录下

    tar xf hadoop-2.10.0.tar.gz -C /usr/local/

    2.下载java软件,并解压到/usr/local目录下

    tar xf  jdk-8u231-linux-x64.tar.gz -C /usr/local/ && mv /usr/local/jdk-8u231-linux-x64 /usr/local/java_64

    3.环境变量配置

    #vi /etc/profile
    
    export JAVA_HOME=/usr/local/java_64
    export PATH=$PATH:$JAVA_HOME/bin
    
    export HADOOP_HOME=/usr/local/hadoop-2.10.0
    PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    使环境变量生效
    # . /etc/profile

    4.配置文件配置

    进入配置文件目录:
    # cd /usr/local/hadoop-2.10.0/etc/hadoop/
    # vi core-site.xml
    
    <configuration>
    <!--指定hdfs的命名空间-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://qf</value>
    </property>
    
    <property>
        <name>dfs.nameservices</name>
        <value>qf</value>
    </property>
    
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
    
    <!--指定zk的集群地址,用来协调namenode服务-->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>node2:2181,node3:2181,node4:2181</value>
    </property>
    
    </configuration>
    
    ==========================================================================================
    # vi hdfs-site.xml
    
    <configuration>
    
    <!--副本数-->
    <property>
    <name>dfs.replication</name>
    <value>3</value>
    </property>
    
    <!--块大小-->
    <property>
    <name>dfs.block.size</name>
    <value>134217728</value>
    </property>
    
    <!--hdfs元数据存储的位置-->
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>/opt/hadoop/name</value>
    </property>
    
    <!--hdfs数据存储的位置-->
    <property>
    <name>dfs.datanode.name.dir</name>
    <value>/opt/hadoop/data</value>
    </property>
    
    <!--指定hdfs的虚拟服务名-->
    <property>
        <name>dfs.nameservices</name>
        <value>qf</value>
    </property>
    
    <!--指定hdfs虚拟服务名下的namenode的名字-->
    <property>
        <name>dfs.ha.namenodes.qf</name>
        <value>node2,node5</value>
    </property>
    
    <!--指定namenode的内部通信地址-->
    <property>
        <name>dfs.namenode.rpc-address.qf.node2</name>
        <value>node2:9000</value>
    </property>
    
    <property>
        <name>dfs.namenode.rpc-address.qf.node5</name>
        <value>node5:9000</value>
    </property>
    
    <!--指定namenode的web ui通信地址-->
    <property>
        <name>dfs.namenode.http-address.qf.node2</name>
        <value>node2:50070</value>
    </property>
    
    <property>
        <name>dfs.namenode.http-address.qf.node5</name>
        <value>node5:50070</value>
    </property>
    
    <!--指定jouranlnode数据共享目录-->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node3:8485;node4:8485;node5:8485/qf</value>
    </property>
    
    <!--指定jouranlnode本地共享目录-->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/journaldata</value>
    </property>
    
    <!--开启namenode失败自动切换-->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    
    <!--指定namenode失败进行自动切换的主类-->
    <property>
        <name>dfs.client.failover.proxy.provider.qf</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    
    <!--防止多个namenode同active(脑裂),采用某种方式杀死其中一个-->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property>
    
    </configuration>
    
    =============================================================================================
    vi yarn-site.xml
    
    <configuration>
    <property>
       <name>yarn.resourcemanager.ha.enabled</name>
       <value>true</value>
     </property>
    # 该cluster-id不能与nameService相同
     <property>
       <name>yarn.resourcemanager.cluster-id</name>
       <value>qf1521</value>
     </property>
    #指定2台Resource Manager (即Name Node )节点
     <property>
       <name>yarn.resourcemanager.ha.rm-ids</name>
       <value>node2,node5</value>
     </property>
     <property>
       <name>yarn.resourcemanager.hostname.node2</name>
       <value>node2</value>
     </property>
     <property>
       <name>yarn.resourcemanager.hostname.node5</name>
       <value>node5</value>
     </property>
    #指定zookeeper 节点
     <property>
       <name>yarn.resourcemanager.zk-address</name>
       <value>node2:2181,node3:2181,node4:2181</value>
     </property>
    
      <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
     </configuration>
    
    ================================================================================
    
    # mv  mapred-site.xml.template   mapred-site.xml
    # vi mapred-site.xml
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>

    5.配置hadoop启停脚本文件用户

    1>. 在start-dfs.sh和stop-dfs.sh中头部加入如下代码:

    HDFS_DATANODE_USER=root
    HADOOP_SECURE_DN_USER=root
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root

    2>. 在start-yarn.sh和stop-yarn.sh中头部加入如下代码:

    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=root
    YARN_NODEMANAGER_USER=root

    6.启停应用服务

    1>.启动journalnode

    在node3\node4\node5启动journalnode服务,分别执行以下命令
    hadoop-daemon.sh start journalnode
    
    执行jps查看journalnode是否启动

    2>.初始化namenode和zkfc并启动

    在node2上执行如下命令:
    hdfs namenode -format(首次启动执行)
    hadoop-daemon.sh start namenode
    hdfs zkfc -formatZK(首次启动执行)
    hadoop-daemon.sh start zkfc
    start-dfs.sh
    
    在node5上执行如下命令:
    hdfs namenode -bootstrapStandby(首次启动执行)
    hadoop-daemon.sh start namenode
    hadoop-daemon.sh start zkfc

    注:Hadoop在执行start-dfs.sh 命令出现,“Error:JAVA_HOME is not set and could not be found ”这一错误提出解决办法。

    vi /usr/local/hadoop-2.10.0/etc/hadoop/hadoop-env.sh
    将语句      export JAVA_HOME=$JAVA_HOME     
    
    修改为      export JAVA_HOME=/usr/local/java_64
    
    保存后退出。
    
    再次输入start-dfs.sh启动hadoop。

    3>.测试

    在浏览器地址栏输入 http://192.168.167.82:50070和http://192.168.167.85:50070查看谁是active谁是standby

     

    我的机器是node2为active,node5为standby

    所以在node2上杀死namenode进行,查看node5状态是否变为active

    注:问题:hadoop HA自动切换不成功
    配置好之后杀掉active的namenode,另一台服务器并没有变为active
    解决办法:在nn节点上分别安装psmisc并重启服务器

    # yum install psmisc 

    7.使用Yarn来调度HDFS

    1>.  先所有的Hadoop相关进程

    # stop-dfs.sh

    2>.  启动 yarn

    单独启动yarn使用命令:
     # start-yarn.sh
     # stop-yarn.sh
    启动所有Hadoop相关进程使用命令
    # start-all.sh
    #启动完成以后,另一台NameNode需要手动启动yarn
    # start-yarn.sh

    8. 访问 yarn

    访问yarn的端口 http://node2:8088  http://node5:8088  可以看到:

  • 相关阅读:
    洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX 解题报告
    牛客练习赛 小D的剑阵 解题报告
    牛客练习赛 小A与最大子段和 解题报告
    牛客练习赛 小D的Lemon 解题报告
    牛客练习赛 小A与任务 解题报告
    洛谷 P1452 Beauty Contest 解题报告
    洛谷 P4100 [HEOI2013]钙铁锌硒维生素 解题报告
    【模板】矩阵求逆
    洛谷 P4097 [HEOI2013]Segment 解题报告
    连接数据库的增删改查
  • 原文地址:https://www.cnblogs.com/zhugq02/p/15760053.html
Copyright © 2011-2022 走看看