开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群。现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与下架一个Hadoop节点。

一、实验环境结构

  本次试验,我们构建的集群是一个主节点,三个从节点的结构,其中三个从节点的性能配置各不相同,这里我们主要在虚拟机中的内存设置这三个从节点分别为:512MB、512MB与256MB。首先,我们暂时只设置两个从节点,另外一个作为动态添加节点的时候使用。主节点与从节点所扮演的角色如下所示:

  主节点(1个,主机名:hadoop-master):NameNode、JobTracker、SecondaryNameNode

  从节点(3个,主机名:hadoop-slave1、hadoop-slave2、hadoop-slave3):DataNode、TaskTracker

TIPS:当然,我们也可以将SecondaryNameNode作为一个独立的节点分离出去,只需要增加一台服务器,并在主节点中修改hadoop中的配置文件:masters,将新节点的主机名添加进去即可。

二、动态添加节点

  在实际生产应用中,很多时候因为现有集群的性能问题需要增加服务器节点以提高整体性能(一般是增加从节点,在Hadoop2.x之后解决了主节点的单点问题,可以增加主节点以保持HA高可用性),这就涉及到动态添加节点的问题。还好,Hadoop早就提供了很好的解决方法,我们只需要如下几步就可以轻松地添加一个节点:

  (1)准备工作:配置新节点的各种环境

  主要包括:设置IP地址、主机名、绑定IP地址与主机名的映射、生成SSH与各节点之间的无密码登录、安装JDK与Hadoop、设置配置文件;当然,都可以通过复制解决;

  (2)在主节点中的slaves配置文件中添加要新加入的节点的主机名hadoop-slave3(在hadoop目录下/conf/slaves)

  (3)在新节点hadoop-slave3中,通过Hadoop Shell启动datanode与tasktracker进程:

  这两句shell命令分别是:

  hadoop-daemon.sh start datanode
  hadoop-daemon.sh start tasktracker

  (4)在主节点中通过Hadoop Shell刷新从节点列表,获取新加入的节点信息:hadoop dfsadmin -refreshNodes

  (5)在主节点的Web接口中查看Live Nodes数量变为了3,代表动态添加从节点成功

三、动态下架节点

  在实际生产应用中,也会存在某个节点或某些节点因为某种原因而停止服务或者宕机的情况,Hadoop会通知一定的感知机制得到这些停止服务的节点的信息,从而通过其他节点获取文件(前提是我们所设置的副本数量>=2,默认为3)。

  (1)通过关闭hadoop-slave3的电源或者输入一个shell命令停止datanode进程:hadoop-daemon.sh stop datanode

  ->这里我们可以通过后者,这个shell命令来看看

  (2)我们现在再通过主节点的Web接口来看看运行情况:

PS:停止hadoop-slave3的datanode进程后发现,NameNode的Web接口上hadoop-slave节点的LastContact字段的值会不断地增大。这是因为DataNode每次启动时都会向NameNode汇报,NameNode会记录下它的访问时间,然后NameNode用当前访问时间减去上次访问时间,就得出LastContact的值,也就是多长时间未访问。又由于实际环境中经常存在网络问题造成短暂掉线,所以NameNode会等待一段时间(默认等10分钟)之后,才会将它视为死节点。所以,为了防止数据丢失所以在实际中副本数一般会设为2以上(默认为3),当某个节点死掉以后,可以通过副本找回数据。

  (3)重新启动hadoop-slave3的datanode进程:hadoop-daemon.sh start datanode

  (4)现在再次通过主节点的Web接口来看看运行情况:变为了0

四、Hadoop中的安全模式

  当Hadoop的NameNode节点启动时,会进入安全模式阶段。

  (1)在此阶段,DataNode会向NameNode上传它们数据块的列表,让 NameNode得到块的位置信息,并对每个文件对应的数据块副本进行统计。当最小副本条件满足时,即一定比例的数据块都达到最小副本数,系统就会退出安全模式,而这需要一定的延迟时间。

  (2)当最小副本条件未达到要求时,就会对副本数不足的数据块安排DataNode进行复制,直至达到最小副本数。而在安全模式下,系统会处于只读状态,NameNode不会处理任何块的复制和删除命令。

  那么,如何判断HDFS是否处于安全模式呢?hadoop dfsadmin -safemode get

  如何手动进入和离开安全模式呢?hadoop dfsadmin -safemode enter/leave

  进入安全模式后,再向HDFS上传或修改文件会出现什么情况?一个提示“正在处于安全模式”的异常

 org.apache.hadoop.dfs.SafeModeException: Cannotdelete/user/hadoop/input. Name node is in safe mode.从字面上来理解:“Name nodeis in safe mode.”hadoop的namenode处于安全模式。

参考资料

(1)吴超,《Hadoop深入浅出》:http://www.superwu.cn

(2)Suddenly,《Hadoop日记Day19-分布式安装》:http://www.cnblogs.com/sunddenly/p/4011455.html

(3)michael_zhu,《Hadoop安全模式的理解》:http://blog.csdn.net/michael_zhu_2004/article/details/8268728

作者:周旭龙

出处:http://www.cnblogs.com/edisonchou/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

Hadoop学习笔记—13.分布式集群中节点的动态添加与下架的更多相关文章

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

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

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

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

  3. Redis学习笔记八:集群模式

    作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...

  4. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

  5. ZooKeeper学习笔记一:集群搭建

    作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...

  6. 集群中节点(Node)与单机数据库的区别

    集群中节点(Node)与单机数据库的区别: 区别项 集群中节点(Node) 单机数据库 只能使用0号数据库 是 都可以使用

  7. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  8. Hadoop学习笔记【分布式文件系统学习笔记】

    分布式文件系统介绍 分布式文件系统:Hadoop Distributed File System,简称HDFS. 一.HDFS简介 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(c ...

  9. Hadoop 3.0完全分布式集群搭建方法(CentOS 7+Hadoop 3.2.0)

    本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是3.2.0,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...

随机推荐

  1. Datazen地图Chart自定义数据

    此篇介绍如何将数据关联到Datazen地图图表.我们会将数据库中的数据映射到地图上. 首先查看下默认地图图表绑定的数据.以下是系统自带的美国地图数据,主要有两列,一列为地名,一列为度量数据.地图会根据 ...

  2. 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载

    一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...

  3. Jetpack 由 WordPress.com 出品

    官网:https://jetpack.com/ Jetpack 由 WordPress.com 出品. Jetpack 通过为您提供访客统计数据和安全服务.加速图像传输以及帮您获得更多浏览量,可以简化 ...

  4. Web.xml配置参数详解

    1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的 ...

  5. Go语言 模板的使用(一)

    使用Parse package main import ( "html/template" "net/http" ) func SayHello(w http. ...

  6. Linux学习笔记(11)-kill函数

    明天开始学习kill函数的用法. ---------------------------------------------- kill函数可以用来向指定的进程发送一个指定的信号,在我的理解的来看,就 ...

  7. SQL 语句与性能之联合查询和联合分类查询

    select * from t1 left join t2 on t2.sysno =t1.ASysNo left join t3 on t3.sysno =t2.ASysNo left join t ...

  8. ASP.NET下回车键的触发效果

    在ASP.NET下,在客户端触发回车键,默认调用了页面中第一个button,这有时是非常头痛的,比如页面的第一个按键是注销键时,想想也够可怕了. .net提供设置默认回车键的属性,this.Form. ...

  9. POJ 1979 题解

    Red and Black Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 31722   Accepted: 17298 D ...

  10. 案例1.通过Jquery来处理复选框

    实现以下功能: 1:选中第一个复选框,那么下面所有的复选框都选中,去除选中第一个复选框,下面的都不选中 2:当点击全选按钮,上面足球.篮球.游泳.唱歌 全部选中 3:当点击全不选按钮,上面四个全部取消 ...