zoukankan      html  css  js  c++  java
  • Hadoop记录-Hadoop集群添加节点和删除节点

    1、添加节点

    A:新节点中添加账户,设置无密码登陆

    B:Name节点中设置到新节点的无密码登陆

    C:在Name节点slaves文件中添加新节点

    D:在所有节点/etc/hosts文件中增加新节点(所有节点保持一致)

    E:在新节点中执行

    ./bin/hadoop-daemon.sh start datanode

    ./bin/hadoop-daemon.sh start tasktracker

    均衡个数据节点中的数据./bin/start-balancer.sh

    注意

    1)如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率

    2)设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长

    ./bin/start-balancer.sh -threshold 5

    3)设置balance的带宽,默认只有1M/s

    <property>

      <name>dfs.balance.bandwidthPerSec</name> 

      <value>1048576</value> 

      <description> 

        Specifies the maximum amount of bandwidth that each datanode  

        can utilize for the balancing purpose in term of  

        the number of bytes per second.  

      </description>

    </property>

    2、删除节点

    A:修改Name节点的hdfs-site.xml增加

    <property>

        <name>dfs.hosts.exclude</name>

        <value>/soft/hadoop/conf/excludes</value>

    </property>

    B:修改Name节点的mapred-site.xml增加

    <property>

       <name>mapred.hosts.exclude</name>

       <value>/soft/hadoop/conf/excludes</value>

       <final>true</final>

    </property>

    C:新建excludes文件,文件里写要删除节点的hostname

    D:Name节点执行

    hadoop mradmin –refreshNodes

    hadoop dfsadmin –refreshNodes<br>(task进程可以kill进程ID)

    查看关闭进程

    hadoop dfsadmin -report

    当节点处于Decommissioned,表示关闭成功。

    注意

    1:如果刚删除的节点要再添加到集群要先删除excludes文件,执行 hadoop dfsadmin –refreshNodes

    2:节点的状态可以通过http://NameNodes:50070查看

    3:如果数据较大则关闭的时间可能会很长

    -----------------------------------------------------------------------------------------------------------------------------------------------------

    #新增节点

    1.安装linux,和以前一样的版本 
    2.初始化系统环境
     2.1.设置静态ip

    复制代码
    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    //增加 
    #Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
    DEVICE=eth0
    #BOOTPROTO=dhcp 
    # add 
    BOOTPROTO=static
    ONBOOT=yes
    # add 
    IPADDR=192.168.119.134
    HWADDR=00:0c:29:59:df:84
    
    //重启网络文件:service network restart
    复制代码

     2.2.安装jdk 配置Java 环境变量
     2.3.关闭防火墙

    service iptables stop
    chkconfig iptables off

    3.配置ssh登陆

    在新增节点:cd root 
    mkdir .ssh //新建.ssh目录
    在master节点:cd ~/.ssh scp authorized_keys 新增节点IP:/root/.ssh/authorized_keys //复制免密码登陆到新增节点

    4.修改hosts文件

    复制代码
    在master节点:vi /etc/hosts
    //增加 新增节点IP h2slave3
    //复制到其他DataNode节点 scp /etc/hosts h2slave1:/etc/hosts scp /etc/hosts h2slave2:/etc/hosts scp /etc/hosts h2slave3:/etc/hosts
    复制代码

    5.复制hadoop2.2到新增节点(在master节点操作)

    复制代码
    scp -r /home/bigdata/hadoop2.2 h2slave3:/home/bigdata/ 
    //然后切换到新增节点 配置hadoop的环境变量
    
    //在master节点修改 /home/bigdata/hadoop2.2/etc/hadoop/slaves //新增 新增节点的IP
    //然后复制到其他DataNode scp /home/bigdata/hadoop2.2/etc/hadoop/slaves h2slave1:/home/bigdata/hadoop2.2/etc/hadoop/slaves scp /home/bigdata/hadoop2.2/etc/hadoop/slaves h2slave2:/home/bigdata/hadoop2.2/etc/hadoop/slaves scp /home/bigdata/hadoop2.2/etc/hadoop/slaves h2slave3:/home/bigdata/hadoop2.2/etc/hadoop/slaves
    复制代码

      5.1. 添加DataNode 

    复制代码
    //对于新添加的DataNode节点,需要启动datanode进程,从而将其添加入集群
    //在新增的节点上,运行 sbin/hadoop-daemon.sh start datanode
    //在namenode节点刷新datanode, hdfs dfsadmin -refreshNodes
    //然后在namenode查看集群情况,通过 hdfs dfsadmin -report
    //也可以通过NameNode50070端口查看活动的DataNode节点数 
    复制代码

      5.2.平衡DataNode节点

    复制代码
    //在Master节点 cd /home/bigdata/hadoop2.2/sbin

    //对hdfs负载设置均衡,因为默认的数据传输带宽比较低,可以设置为64M
    hdfs dfsadmin -setBalancerBandWidth 67108864

    //默认balancer的threshold为10%,即各个节点与集群总的存储使用率相差不超过10%,我们可将其设置为5% start-balancer.sh -threshold 5
    复制代码

      5.3.添加NodeManager 

    //由于Hadoop 2.X引入了YARN框架,所以对于每个计算节点都可以通过NodeManager进行管理,同理启动NodeManager进程后,即可将其加入集群
    //在新增节点,运行 sbin/yarn-daemon.sh start nodemanager
    
    //在ResourceManager,通过 yarn node -list 查看集群情况 

    遇到问题:在复制hadoop文件夹时我复制的datanode的hadoop,最终导致,新节点与被复制节点的datanodeUuid一样(位置:{HADOOPHOME}/tmp/dfs/name/current/VERSION文件)这样会导致,被复制节点和新节点的冲突,被复制节点和新节点在web查看时,或者被复制节点出现,或者新节点出现(但均为“死节点”)
    解决办法:一定要从NameNode中复制hadoop-2.2.0文件夹

    #删除节点

    //极端不建议直接在slave节点通过:hadoop-daemon.sh stop datanode 
    命令关掉datanode,这会导致hdfs中出现missing block

    在hadoop0上修改conf/hdfs-site.xml文件

    <property>
      <!--dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个-->   <name>dfs.hosts.exclude</name>   <value>/usr/local/hadoop/hadoop-2.2.0/etc/hadoop/excludes</value> </property>

    1. 在master上创建并修改excludes文件,添加需要删除节点的IP
    2. 在master上刷新节点配置情况:hadoop dfsadmin -refreshNodes

    此时在Web UI上就可以看到该节点变为Decommissioning状态,过一会就变为Dead了
    也可以通过:hadoop dfsadmin -report 命令查看

    3. 在slave上关闭datanode进程(非必须):hadoop-daemon.sh stop datanode  

    #重新加入删除的节点

    1.在master的excludes文件中删除相应节点IP
    2.在slave上重启datanode进程:hadoop-daemon.sh start datanode 
    3.在master上刷新节点配置情况:hadoop dfsadmin -refreshNodes

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    卸载节点或者增加节点: 
    方式一:静态的增添删除:将集群关闭,修改配置文件(etc/hadoop/slaves),重新启动集群(很黄很暴力,不够人性化)。 
    方式二:动态的增加和卸载节点。

    卸载DataNode节点: 
    1)要在HDFS主节点NameNode上,进行配置。 
    a)在etc/hadoop/hdfs-site.xml中,设置属性值: 

    dfs.hosts.exclude 
    /opt/modules/hadoop-2.5.0/ect/hadoop/dfs-hosts.exclude 

    b)创建文件并在文件中加入卸载节点的IP地址或者主机名。 
    2)在NameNode节点上刷新集群 
    bin/hdfs dfsadmin -refreshNodes 
    3)从页面查看卸载相关信息(过程)。 
    4)通过命令来查看结果。 
    bin/hdfs dfsadmin -report 
    5)在卸载机器上关闭DataNode进程 
    sbin/hadoop-daemon.sh stop datanode 
    6)将dfs-hosts.exclude文件内容清空

    注意: 
    在卸载NodeManager时,一定要主要配置在ResourceManager上。 
    yarn.resourcemanager.nodes.exclude-path 
    /opt/modules/hadoop-2.5.0/etc/hadoop/yarn-hosts.exclude 

    增加新机器,DataNode(存储数据)和NodeManager(计算) 
    1)系统、主机名、IP地址、防火墙、SELinux等与集群的从节点基本配置保持一致。 
    2)安装JDK(版本、路径、环境变量保持一致)。 
    3)配置主节点(HDFS:NameNode;YARN:ResourceManager)所在机器到新机器的SSH无密钥登录(方便集群的启动)。 
    4)配置修改etc/hadoop/slaves文件(只需要在主节点上修改)。 
    5)分发hadoop安装包(配置完成)到新机器上。 
    6)创建HDFS、YARN在新机器的本地磁盘上一些文件夹。 
    7)在新机器上启动DataNode和NodeManager节点。 
    DataNode:sbin/hadoop.daemon.sh start datanode 
    NodeManager:sbin/yarn.daemon.sh start nodemanager 
    注意: 
    需要将新机器的IP地址与主机名称的映射关系配置到系统的【/etc/hosts】文件中,最好是所有集群中的机器都要添加。

  • 相关阅读:
    System.in.read() 回车
    eclipse for C/C++
    J2EE和Java EE
    MySQL中的string类型
    javac: 无效的标记: FilesJavajdk1
    java eclipse com.mysql.jdbc.Driver
    (转)apache外网不能访问分析与解决方法
    jvm调优
    java性能调优03
    java性能调优02
  • 原文地址:https://www.cnblogs.com/xinfang520/p/10131756.html
Copyright © 2011-2022 走看看