在HDFS集群的运维过程中,肯定会遇到DataNode的新增和删除,即上线与下线。这篇文章就详细讲解下DataNode的上线和下线的过程。

背景

在我们的微职位视频课程中,我们已经安装了3个节点的HDFS集群,master机器上安装了NameNode和SecondaryNameNode角色,slave1和slave2两台机器上分别都安装了DataNode角色。

我们现在来给这个HDFS集群新增一个DataNode,这个DataNode是安装在master机器上

我们需要说明的是:在实际环境中,NameNode和DataNode最好是不在一台机器上的,我们这里都放在master上,是因为我们的虚拟机资源有限。

我们现在启动master、slave1和slave2三台虚拟机,然后启动HDFS集群,我们在HDFS的Web UI上可以看到有两个DataNode:

DataNode上线

在NameNode所在的机器(master)上的配置文件hdfs-site.xml中增加"白名单"配置:

<property>
<!-- 白名单信息-->
<name>dfs.hosts</name>
<value>/home/hadoop-twq/bigdata/hadoop-2.7.5/etc/hadoop/dfs.include</value>
</property>

  在master机器上执行下面的命令:

## 创建白名单文件
touch /home/hadoop-twq/bigdata/hadoop-2.7.5/etc/hadoop/dfs.include

  在/home/hadoop-twq/bigdata/hadoop-2.7.5/etc/hadoop/dfs.include文件中增加如下内容:

slave1
slave2
master
其中,上面的master是新增的DataNode所在的机器
/home/hadoop-twq/bigdata/hadoop-2.7.5/etc/hadoop/slaves文件中新增:
master

3.然后在NameNode所在的机器(master)上执行如下的命令:

hdfs dfsadmin -refreshNodes

  然后,我们在HDFS的Web UI上查看DataNode的信息:

可以看出,多了一个状态为Dead的DataNode

可以看出,多了一个状态为Dead的DataNode

4.在master机器上启动DataNode:

hadoop-daemon.sh start datanode

  然后我们刷新HDFS的Web UI的DataNode信息,如下图:

可以看出,DataNode现在是3个了,master上的DataNode已经启动起来,并且加入集群中

DataNode的下线

我们现在下线master上的DataNode,步骤如下:

  1. 在NameNode所在的机器(master)上的配置文件hdfs-site.xml中增加"黑名单"配置:
<property>
<!-- 黑名单信息-->
<name>dfs.hosts.exclude</name>
<value>/home/hadoop-twq/bigdata/hadoop-2.7.5/etc/hadoop/dfs.exclude</value>
</property>

  在master机器上执行下面的命令:

## 创建黑名单文件
touch /home/hadoop-twq/bigdata/hadoop-2.7.5/etc/hadoop/dfs.exclude

  在/home/hadoop-twq/bigdata/hadoop-2.7.5/etc/hadoop/dfs.exclude文件中增加如下内容:

master

  其中,上面的master是需要下线的DataNode所在的机器

/home/hadoop-twq/bigdata/hadoop-2.7.5/etc/hadoop/slaves文件中删除master

然后在NameNode所在的机器(master)上执行如下的命令:

hdfs dfsadmin -refreshNodes

  然后我们刷新HDFS的Web UI的DataNode信息,如下图:

这个时候,master上的DataNode的状态变为Decommission In Progress。这个时候,在master上的DataNode的数据都在复制转移到其他的DataNode上,当数据转移完后,我们再刷新HDFS Web UI后,可以看到DataNode的状态变为Decommissioned,表示这个DataNode已经下线,如下图:

4. 在master上停止DataNode:

hadoop-daemon.sh stop datanode

 5.刷新DataNode: 

hdfs dfsadmin -refreshNodes

  

HDFS集群中DataNode的上线与下线的更多相关文章

  1. Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统

    前言 我们知道HDFS集群中,所有的文件都是存放在DN的数据块中的.那我们该怎么去查看数据块的相关属性的呢?这就是我今天分享的内容了 一.HDFS中数据块概述 1.1.HDFS集群中数据块存放位置 我 ...

  2. 在Hadoop集群中添加机器和删除机器

    本文转自:http://www.cnblogs.com/gpcuster/archive/2011/04/12/2013411.html 无论是在Hadoop集群中添加机器和删除机器,都无需停机,整个 ...

  3. Hadoop(五)搭建Hadoop与Java访问HDFS集群

    前言 上一篇详细介绍了HDFS集群,还有操作HDFS集群的一些命令,常用的命令: hdfs dfs -ls xxx hdfs dfs -mkdir -p /xxx/xxx hdfs dfs -cat ...

  4. Hadoop(五)搭建Hadoop客户端与Java访问HDFS集群

    阅读目录(Content) 一.Hadoop客户端配置 二.Java访问HDFS集群 2.1.HDFS的Java访问接口 2.2.Java访问HDFS主要编程步骤 2.3.使用FileSystem A ...

  5. Hadoop基础-HDFS集群中大数据开发常用的命令总结

    Hadoop基础-HDFS集群中大数据开发常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本盘博客仅仅列出了我们在实际生成环境中常用的hdfs命令,如果想要了解更多, ...

  6. Hadoop学习之路(十二)分布式集群中HDFS系统的各种角色

    NameNode 学习目标 理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”.“namenode”故障问题的分 ...

  7. Hadoop(五)分布式集群中HDFS系统的各种角色

    NameNode 学习目标 理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”.“namenode”故障问题的分 ...

  8. hadoop集群中动态添加新的DataNode节点

    集群中现有的计算能力不足,须要另外加入新的节点时,使用例如以下方法就能动态添加新的节点: 1.在新的节点上安装hadoop程序,一定要控制好版本号,能够从集群上其它机器cp一份改动也行 2.把name ...

  9. vivo 万台规模 HDFS 集群升级 HDFS 3.x 实践

    vivo 互联网大数据团队-Lv Jia Hadoop 3.x的第一个稳定版本在2017年底就已经发布了,有很多重大的改进. 在HDFS方面,支持了Erasure Coding.More than 2 ...

随机推荐

  1. 【转】Lombok介绍、使用方法和总结

    链接:http://www.yuanrengu.com/index.php/20180324.html 1 Lombok背景介绍 官方介绍如下: Project Lombok makes java a ...

  2. Linux下Python安装PyMySQL成功,但无法导入的问题

    今天使用 Nginx 部署 Django应用.安装python库都显示成功安装. 尝试启动 uwsgi 服务,竟然报错 Traceback (most recent call last): File ...

  3. poj 1095 题解(卡特兰数+递归

    题目 题意:给出一个二叉树的编号,问形态. 编号依据 1:如果二叉树为空,则编号为0: 2:如果二叉树只有一个节点,则编号为1: 3:所有含有m个节点的二叉树的编号小于所有含有m+1个节点的二叉树的编 ...

  4. 使用Python快速实现简单的人脸检测

    最近有个比较要好的朋友问我能不能从监控视频里识别到从监控跟前经过的指定的人.因为他们单位的监控室经常要花大量的人力跟时间去找某个人在哪个位置出现过的证据.听起来像是一份比较有挑战性的任务,就答应他试试 ...

  5. nginx配置比较杂乱的总结

    常用变量 demo uri www.example.com/mock/interface?param1=203&param2=test $args uri中的参数值 ?后面的部分 param1 ...

  6. adb命令查看连接PC的移动设备

    cmd窗口中输入adb应会出现上图情况,如果显示不存在则需要网上下载adb工具并在我的电脑-属性-高级系统设置-环境变量中将adb工具的路径加入PATH,如下图: 输入adb devices 可以看到 ...

  7. HTML5单页框架View.js介绍

    什么是单页应用单页应用,是指将用户视觉上的多个页面在技术上使用一个载体来实现的应用. 换句话来讲,用户视觉效果,与技术实现的载体,并不是一定要一一对应的.采取哪种技术方案,取决于产品设计.技术组成以及 ...

  8. Deep one-class classification

    Deep one-class classification 2019-03-17 23:09:59 zpainter 阅读数 1027  收藏 文章标签: 单分类问题异常检测 更多 分类专栏: 论文 ...

  9. 创建包含CRUD操作的Web API接口3:实现Post方法

    本节是前面两节的延续,前面我们为Web API创建了必要的基础设施,并实现了Get方法.在这里,我们将在Web API中实现POST方法. 在RESTful架构中,使用HTTP POST请求用来在数据 ...

  10. Selenium与PhantomJS踩过的坑

    Selenium与PhantomJS踩过的坑 Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动化操作, ...