正确地添加和移除节点

添加节点

克隆

克隆一台全新的Linux(如有IP冲突,可右击VMware右下角网络图标断开连接)

打开/etc/hostname修改主机名

打开/etc/sysconfig/network-script/ifcfg-ens33修改IP

重启

安装

使用安装包+hadoop-install.sh脚本快速安装一个Hadoop节点

注意使用source hadoop-install.sh执行

配置NameNode

打开/etc/hosts添加新节点的IP和主机名

打开etc/hadoop/slaves添加新节点的主机名

打开hdfs-site.xml,设置节点平衡带宽设置(默认值1M,下面设置为10M)

<property>

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

<value>20971520</value>

</property>

同步DataNode配置

在所有DataNode节点上执行hadoop-pull.sh

注意修改脚本中的NameNode变量值!

启动

在新节点上执行

hadoop-daemon.sh start datanode

平衡

让各个DataNode中的数据均匀分布,

start-balancer.sh -threshold 5

-threshold是平衡阈值,默认值允许10%的差异,值越小越平衡,但花费的时间会越长

通过下面的命令也可以设置平衡时使用的网络带宽(字节/秒)

在网络带宽受限的情况下,平衡速度较慢,需要耐心等待一段时间才能观察到效果

平衡时先通过NameNode提供的元数据进行平衡规划,然后开启多线程将数据从老节点移到新节点。

如果想查看平衡的过程,可以用下面的命令:

hdfs balancer -threshold 5

移除节点

如果节点中已经保存了数据,则从slaves中移除节点,重启集群这种暴力手段就不适用了,如果暴力删除则会造成数据丢失。为了解决生产环境中平稳安全地移除节点的问题,Hadoop提供了一个流程:

设置排除

namenode中打开hdfs-site.xml,设置节点排除文件的位置(必须是绝对路径)

<property>

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

<value>/usr/share/hadoop/etc/hadoop/excludes</value>

</property>

在excludes文件中添加要排除的节点主机名,一行一个

更新节点配置

在NameNode中执行下面命令,强制重新加载配置

hdfs dfsadmin -refreshNodes

在Hadoop站点上很快就能看到Decommission正在进行,此时NameNode会检查并将数据复制到其它节点上以恢复副本数(要移除的节点上的数据不会被删除,如果数据比较敏感,要手动删除它们)。通过命令也可以查看状态:

hdfs dfsadmin -report



等状态变成Decommissioned后就可以关闭这个节点了,可在要移除的节点上运行相应的关闭命令,如:

hadoop-daemon.sh stop datanode

几分钟后,节点将从Decommissioned进入Dead状态。

更新集群配置

从NameNode的excludes文件及slaves文件、hosts文件中去掉已经移除的主机名

在所有DataNode上执行hadoop-pull.sh脚本,同步配置。

Hadoop中正确地添加和移除节点的更多相关文章

  1. iOS中通知的添加和移除

    我们都知道viewWillAppear:方法是在控制器的view将要显示的时候调用的,而viewWillDisappear:方法是在控制器的view将要隐藏的时候调用.很多时候我们根据自身需要将相关代 ...

  2. js中数组的添加和移除

    1.引入js文件 <script src="../plugins/jQuery/jquery-2.2.3.min.js"></script>2.HTML中代 ...

  3. spring:如何用代码动态向容器中添加或移除Bean ?

    先来看一张类图: 有一个业务接口IFoo,提供了二个实现类:FooA及FooB,默认情况下,FooA使用@Component由Spring自动装配,如果出于某种原因,在运行时需要将IFoo的实现,则F ...

  4. jQuery中添加/改变/移除改变CSS样式例子

    在jquery中对于div样式操作我们会使用到CSS() removeClass() addClass()方法来操作了,下面我们就整理了几个例子大家一起来看看吧.     CSS()方法改变CSS样式 ...

  5. Vue中,给当前元素添加类名移除兄弟元素类名的方法

    在Vue中,给当前元素添加类名移除兄弟元素类名的方法 今天在项目中需要做一个效果,点击对应的li改变当前的color,其他的li取消颜色,在jQuery中这很容易,由于之前已经引入了jQuery,所以 ...

  6. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  7. JS中的DOM操作怎样添加、移除、移动、复制、创建和查找节点

    DOM操作怎样添加.移除.移动.复制.创建和查找节点? (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元 ...

  8. hadoop移除节点的优雅方式

    step 1:使用hdfs-site.xml的配置项,排除节点. <property> <name>dfs.hosts.exclude</name> <val ...

  9. hadoop 2.7 添加或删除datanode节点

    1.测试环境 ip 主机名 角色 10.124.147.22 hadoop1 namenode 10.124.147.23 hadoop2 namenode 10.124.147.32 hadoop3 ...

随机推荐

  1. Huffman的应用之文件压缩与解压缩

    文件压缩与解压缩>      近期这段时间一直在学习树的这样的数据结构,也接触到了Huffman树以及了解了什仫是Huffman编码,而我们经常使用的zip压缩也是利用的Huffman编码的特性 ...

  2. plink参数说明

    Plink: command-line connection utilityRelease 0.67Usage: plink [options] [user@]host [command]       ...

  3. po vo

    一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.使用Hibernate来生成PO是不错的选择. 二.VO:value object值对象.通常用于 ...

  4. ADT离线安装教程

    安装eclipse软件.安装后点击HELP菜单,找到下面的Install New Software并点击.   之后会弹出一个对话框,然后我们点击add,接下来弹出ADD对话框,然后我们再点击arch ...

  5. poj 2524 Ubiquitous Religions 一简单并查集

    Ubiquitous Religions   Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 22389   Accepted ...

  6. 全局描述符表GDT

    写在前面 添油加醋系列第二弹--剖析GDT 头文件:https://github.com/bajdcc/MiniOS/blob/master/include/gdt.h 实现:https://gith ...

  7. Ununtu 15.04 安装MySql(Django连接Mysql)

    本文介绍Ubuntu 15.04下安装MySQL ubuntu 15.04安装mysql django项目连接mysql 一.安装数据库 1.sudo apt-get install mysql-se ...

  8. js 控制不同客户端 访问不同CSS js

    function loadCSS(flag) { var t='.css'; if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios ...

  9. js 树菜单 ztree

    http://www.ztree.me/v3/api.php 官网 api js /** <div id="menuContent" class="menuCont ...

  10. 编译Spark2.1.2源码

    源码编译的shell脚本为 /dev/make-distribution.sh ,下载源码包解压就能找到.不同版本使用的参数有差异.可以直接查看make-distribution.sh文件. 下载sp ...