zoukankan      html  css  js  c++  java
  • hdfs 删除和新增节点

         最近发现hdfs的一个问题,每当集群开启的时候,有一个节点上的可用空间就一直在减少,并且速度很快,发现是data目录下的dncp_block_verification.log.curr文件在一直变大,查了日志没有发现什么可疑的原因,只在datanode的日志上发现有几条日志如下非常可疑:

    2015-11-28 21:35:51,029 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetAsyncDiskService: Deleted BP-1219379569-1
    92.168.1.50-1445090469366 blk_1073748736_7916 file /home/hadoop/hdfsdisk/data/current/BP-1219379569-192.168.1.50-1445090469366/curren
    t/finalized/subdir0/subdir27/blk_1073748736
    2015-11-28 21:35:51,062 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetAsyncDiskService: Deleted BP-1219379569-1
    92.168.1.50-1445090469366 blk_1073846979_106183 file /home/hadoop/hdfsdisk/data/current/BP-1219379569-192.168.1.50-1445090469366/curr
    ent/finalized/subdir1/subdir154/blk_1073846979

    好像是namenode发出的删除请求,但是不知道在删除什么

    由于暂时没有找出故障原因,所以打算将这个节点删除,然后将节点再添加回来,具体步骤如下:

    1. 平滑删除节点

        1.1 修改hdfd-site.xml文件

             首先集群是开启的,然后添加代码如下:

    <property>
        <name>dfs.hosts.exclude</name>
        <value>/home/hadoop/hadoop-2.6.0/etc/hadoop/excludes</value>
        <description> Names a file that contains a list of hosts that are not permitted to connect to the namenode.  The full pathnam
    e of the file must be specified If the value is empty, no hosts are excluded. </description>
    </property>

    其中/home/hadoop/hadoop-2.6.0/etc/hadoop/excludes文件中为要删除的机器hostname,示例如下:

    slave8.spark
    slave9.spark

        1.2 然后执行命令刷新hdfs节点:

    hadoop dfsadmin  -refreshNodes
    更新hdfs节点状态,由于存在副本的原因,在后台会有块的移动

    1.3 运行命令查看hdfs报告

    hadoop dfsadmin -report

    会显示如下状态
    Live datanodes (8):
    
    Name: 192.168.1.58:50010 (slave8.spark)
    Hostname: slave8.spark
    Decommission Status : Decommission in progress
    Configured Capacity: 898359930880 (836.66 GB)
    DFS Used: 844093001728 (786.12 GB)
    Non DFS Used: 47660601344 (44.39 GB)
    DFS Remaining: 6606327808 (6.15 GB)
    DFS Used%: 93.96%
    DFS Remaining%: 0.74%
    Configured Cache Capacity: 0 (0 B)
    Cache Used: 0 (0 B)
    Cache Remaining: 0 (0 B)
    Cache Used%: 100.00%
    Cache Remaining%: 0.00%
    Xceivers: 1
    Last contact: Sun Nov 29 13:41:48 CST 2015

       说明该节点已经被移除,其实应该等到在hdfs内部块移动结束之后再结束集群,但是我没有等到,直接在显示如上状态后就关闭了集群,然后将slaves中的该节点hostname删除后启动了集群,启动后hdfs又开始了移动块,但是很慢,会等很长时间,但是如果集群一直要用无法关闭集群的话,这个过程是很重要的。

    2. 添加节点

        添加新节点时需要在slaves配置文件中新增即将添加的节点,然后再进行集群平衡操作,如果不想进行平衡操作也可以(不推荐),这样做只是导致了集群中每个节点已占用空间大小不一致,添加节点也有两种方式,平滑添加和非平滑添加,具体操作如下:

        2.1 平滑添加,需要停止namenode
            1.停止namenode 
            2.修改slaves文件
            3.启动namenode 
            4.执行hadoop balance命令平衡集群节点

        2.2非平滑添加datanode,不需要停止namenode
            1.修改slaves文件,添加需要增加的节点
            2.启动datanode,hadoop-daemon.sh start datanode 
            3.执行hadoop balance命令平衡集群节点

        执行节点平衡命令为balance命令,使用示例如下:start-balancer.sh -threshold 8,具体详细使用方法请查阅。

  • 相关阅读:
    usb mtp激活流程【转】
    [RK3288][Android6.0] USB OTG模式及切换【转】
    简单实用的磁带转MP3方法图解
    使用log4j的邮件功能
    hive从查询中获取数据插入到表或动态分区
    map和reduce 个数的设定 (Hive优化)经典
    Mysql ERROR 145 (HY000)
    Mysql计算时间差
    小米刷机教程和GAE for android
    Hbase 使用方法
  • 原文地址:https://www.cnblogs.com/prisoner/p/5004821.html
Copyright © 2011-2022 走看看