zoukankan      html  css  js  c++  java
  • 【Hadoop】2、Hadoop高可用集群部署

    1.服务器设置

    集群规划

    Namenode-Hadoop管理节点

    10.25.24.92

    10.25.24.93

    Datanode-Hadoop数据存储节点

    10.25.24.89

    10.25.24.90

    10.25.24.91

    Zookeeper—高可用推举机制

    1-    标识需要安装

    NN-namenode

    DN-datanode

    服务器名

    NN

    DN

    ZK

    10.25.24.92

    jyh-zhzw-inline-25

    1

    1(1)

    10.25.24.93

    jyh-zhzw-inline-26

    1

     

    1(2)

    10.25.24.91

    jyh-zhzw-inline-24

    1

    1(5)

    1.1 设置hostname

    用root用户

     

     

     

    重启网络服务

    2.设置ssh免密登录

    ssh-keygen -t rsa

    ssh-keygen -m PEM -t rsa

    (这个是生成PEM的模式)

    这里重新设置免密登录

    获取到公钥文件之后,复制所有公钥到一个文件,然后分发到各个服务器

    cat id_rsa.pub > authorized_keys

     

    设置文件权限,authoriz.. 必须是600

    重新生成rsa密钥:

    清空所有的authorized_keys

    拷贝其他主机的id_rsa.pub到临时目录,并追加内容到authorized_keys

    Ip依次改动91,92,93,94

    scp oss@10.25.24.94:/home/oss/.ssh/id_rsa.pub ./tmp/

    cat ./tmp/id_rsa.pub >> authorized_keys

    最后修改权限chmod 600 authorized_keys

    然后拷贝文件到各个子节点

    3.Zookeeper配置

    下载地址:https://apache.org/dist/zookeeper/zookeeper-3.4.13/

    上传服务器,并解压

    tar -zxvf zookeeper-3.4.13.tar.gz

    创建zk数据目录

    /home/oss/hadoop/zookeeper-3.4.13/zkData

    如果要启动zookeeper首先必须配置conf/zoo.cfg文件

    cp zoo_sample.cfg zoo.cfg

     

    最后的server.x

     

    注意server.x 这个X一定要和myid对应起来,并且前面不用的服务器先注解调

    4.设置Hadoop配置文件

    4.1设置Hadoop的jdk路径

     

     

     

    4.2 设置hdfs配置

     

    设置一个逻辑名称,定义一个新的集群名称

    <property>

      <name>dfs.nameservices</name>

      <value>mycluster</value>

    </property>

    配置这个namenode下的其他集群

    <property>
      <name>dfs.ha.namenodes.mycluster</name>
      <value>nn1,nn2</value>
    </property>

    这里注意下,如果有NFS共享磁盘,那么我们

    <property>

      <name>dfs.namenode.shared.edits.dir[x3] </name>

      <value>file:///mnt/filer1/dfs/ha-name-dir-shared</value>

    </property>

    可以配置一个绝对路径

    总体配置:

     

     

    如果使用高可用HA配置,使用ZK部署,那么还需要配置

    <property>

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

       <value>true</value>

     </property>

    4.3 修改core-site.xml

     

    4.4 采用yarn作为mapreduce的资源调度框架

    vi mapred-site.xml

    这个运行框架可选:

    local, classic or yarn.

    Local:则不会使用YARN集群来分配资源,在本地节点执行。在本地模式运行的任务,无法发挥集群的优势

    Yarn: mapreduce.framework.name设置为yarn,当客户端配置mapreduce.framework.name为yarn时, 客户端会使用YARNRunner与服务端通信, 而YARNRunner真正的实现是通过ClientRMProtocol与RM交互, 包括提交Application, 查询状态等功能

    老一些的版本还有一个JobTracker的实现类,即:classic。用于和MapReduce1.X兼容用的,高一些的版本已经没有这个实现类了。

     

    编辑配置yarn-site.xml

     

    4.5 配置文件设置子文件

     

     

    5.启动集群

    配置path环境变量bin目录

    如果手动管理集群上的服务,则需要在运行名称节点的每台计算机上手动启动zkfc守护程序。

    ./hadoop-daemon.sh --script /home/oss/hadoop/hadoop-2.9.2/bin/hdfs start zkfc

    5.1 启动zk

     

    每个节点都启动一下

     

    5.2 启动Hadoop集群

    格式化namenode

    [hdfs]$ $HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>

    hdfs namenode -format hbyd_hadoop

    启动namenode

    [hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode

    启动namenode

    ./hadoop-daemon.sh --config /home/oss/hadoop/hadoop-2.9.2/etc/hadoop --script hdfs start namenode

    如果ssh配置好了,启动所有hdfs配置

    Sbin/start-dfs.sh

    格式化ZK(只用在一台namenode上执行)

    Hdfs zkfc -formatZK

    Hadoop启动ZK管控切换

    ./hadoop-daemon.sh start zkfc

    5.3 启动yarn资源管理集群

    注意我们需要手动启动另外一个resourceManager节点

    yarn-daemon.sh start resourcemanager手动启动。

    查看节点状态

    yarn rmadmin -getServiceState rm1

     active

    yarn rmadmin -getServiceState rm1

    6.动态添加节点

    6.1 添加datanode节点

    6.1.1 先设置hostname

    这个要root用户

     

    设置主节点到对应子节点的域名配置

    92,93设置一下

     

    6.1.2 设置ssh免密登录(2台namenode都要)

    ssh-keygen -m PEM -t rsa

    (这个是生成PEM的模式)

    这里重新设置免密登录

     

    获取到公钥文件之后,复制所有公钥到一个文件,然后分发到各个服务器

    cat id_rsa.pub > authorized_keys

     

    设置文件权限,authoriz.. 必须是600

    重新生成rsa密钥:

    清空所有的authorized_keys

    拷贝其他主机的id_rsa.pub到临时目录,并追加内容到名称节点的authorized_keys

    6.1.3 部署子节点

    拷贝Hadoop部署包到相应的子节点

    修改主节点slave文件,添加新增节点的ip信息(集群重启时使用)

    6.1.4 启动datanode节点

    配置子节点环境变量(子节点对namenode也要互通)

    运行sbin/hadoop-daemon.sh start datanode

    启动子节点nodemanager

    6.1.5 启动子节点yarn服务

    在新增节点,运行sbin/yarn-daemon.sh start nodemanager即可

    问题:

    1.无法启动namenode,显示50070端口被占用

     

    之前把http-address写成了rcp和上面重复了

    2.第二个namenode无法启动,namespaceid冲突

    是否是第二个节点没有格式化

    拷贝namenode1的tmp目录中的namenode的配置文件进入第二个namenode节点的tmp目录中

    3.部署好了无法切换namenode Unable to fence service by any configured method

    2019-01-09 14:27:59,677 INFO org.apache.hadoop.ha.NodeFencer: Trying method 1/1: org.apache.hadoop.ha.SshFenceByTcpPort(null)

    2019-01-09 14:27:59,677 WARN org.apache.hadoop.ha.SshFenceByTcpPort: Unable to create SSH session

    com.jcraft.jsch.JSchException: invalid privatekey: [B@54e5974c

    提示是SSH错误的密钥

    这里我们改一下配置试一下

     

    最后发现是centos7默认生成的密钥文件是OPENSSH开头的

    而JSch

    无法识别。。。。

    只能识别-----BEGIN RSA PRIVATE KEY-----这种

    气死我了,浪费我时间。。。。,这个算jsch自己的不完善吧。。。


     [x1]参数设定了允许一个跟随者与一个领导者进行同步的时间,如果在设定的时间段内,跟随者未完成同步,它将会被集群丢弃。所有关联到这个跟随者的客户端将连接到另外一个跟随着。

     [x2]表单server.x的条目列出了组成ZooKeeper服务的服务器。当服务器启动时,它通过在dataDir中查找文件myid来知道它是哪个服务器。该文件包含服务器号,以ASCII格式。

     [x3]上述配置调整完毕后,我们就可以启动journalNodes守护进程,默认的"sbin/start-dfs.sh"脚本会根据"dfs.namenode.shared.edits.dir"配置,在相应的Datanode上启动journalNodes。当然我们可以使用::"bin/hdfs start journalnode"分别在相应的机器上启动。

        一旦JournalNodes启动成功,它们将会从Namenode上同步metadata。

        1、如果你的HDFS集群是新建的,那么需要在每个Namenode上执行"hdfs namenode -format"指令。

        2、如果你的namenodes已经format了,或者是将non-ha转换成ha架构,你应该在将其中一个namenode上的metadata复制到另一台上(dfs.namenode.name.dir目录下的数据),然后在那个没有format的新加入的namenode上执行"hdfs namenode -bootstrapStandby"。运行这个指令需要确保JournalNodes中持有足够多的edits。

        3、如果你将一个non-ha的Namenode(比如backup,其已经formated)切换成HA,你需要首先运行"hdfs -initializeSharedEdits",这个指令将本地Namenode中的edits初始化Journalnodes。

        此后,你就可以启动HA Namenodes。可以通过配置指定的HTTP地址(dfs.namenode.https-address)来查看各个Namenode的状态,Active or Standby。

  • 相关阅读:
    NABCD(校园包车)
    作业5.2~5.3
    作业5.1
    作业
    JAVA EE社团管理升级版-数据库设计
    JAVA EE社团管理升级版-微信小程序端说明文档
    社团项目软件展示
    社团项目个人总结
    北京地铁规划项目总结
    地铁出行线路规划项目设计
  • 原文地址:https://www.cnblogs.com/cutter-point/p/10255471.html
Copyright © 2011-2022 走看看