Hadoop动态增加节点与删除节点
Hadoop的全分布式安装网上也很多教程,踩过很多坑,整理不出来了……赶紧把增加删除节点留住。
均衡数据
(1)设置数据传输带宽为64M(默认值比较低)
hdfs dfsadmin -setBalancerBandwidth 67108864
(2)平衡数据,默认balancer的threshold为10%,即各个节点存储使用率偏差不超过10%,我们可将其设置为1%(1~100)
./sbin/start-balancer.sh -threshold 1
或者hdfs balancer -threshold 1(显示平衡过程)
从hadoop的web页面可以观察到各个节点的存储使用率更接近了
1.增加节点
已有CentOS 7的虚拟机node00(namenode)、node01(datanode)、node02(datanode),虚拟机上都有JDK1.8.0_45,Hadoop-2.6.5。准备一个新的虚拟机node03(datanode)。
为了方便,选择克隆虚拟机node02,克隆后修改新虚拟机node03的配置:
(1)删除logs和core-site.xml配置文件中hadoop.tmp.dir的目录
rm -rf /usr/local/hadoop-2.6.5/logs/*.*
rm -rf /usr/local/hadoop-2.6.5/tmp/*
(2)删除hdfs-site.xml配置文件中datanode.data.dir目录
rm -rf /app/hadoop/data/*
(3)修改主机名、IP地址
vi /etc/sysconfig/network
vi /etc/sysconfig/network-scripts/ifcfg-ens33
然后修改所有虚拟机的配置(加上新节点):
(1)/etc/hosts
(2)Slaves
设置无密码访问node03(在node00生成密钥并分发给其他虚拟机)
ssh-keygen -t rsa
scp -p ~/.ssh/id_rsa.pub node01@192.168.59.254:/root/.ssh/authorized_keys
scp -p ~/.ssh/id_rsa.pub node02@192.168.59.253:/root/.ssh/authorized_keys
scp -p ~/.ssh/id_rsa.pub node03@192.168.59.252:/root/.ssh/authorized_keys
启动node03的datanode和nodemanager
hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
刷新hadoop 的web页面即可看的新的节点。如果原节点中有数据,会自动分给新节点一定量的数据
2. 删除节点
在namenode中打开hdfs-site.xml,设置节点排除文件的位置(绝对路径)
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop-2.6.5/etc/hadoop/excludes</value>
</property>
在路径中新建文件excludes,并在文件中添加要排除的节点主机名
在namenode中强制重新加载配置
hdfs dfsadmin -refreshNodes
在hadoop的web页面上看到该节点变成Decommission,此时namenode会检查并将数据复制到其它节点上以恢复副本数(要移除的节点上的数据不会被删除,如果数据比较敏感,要手动删除它们)。
通过命令也可以查看状态:
hdfs dfsadmin -report
等状态变成Decommissioned后就可以关闭该节点
hadoop-daemon.sh stop datanode
几分钟后,节点将从Decommissioned进入Dead状态。
最后更新集群配置,从namenode的excludes文件及slaves文件、hosts文件中去掉已经移除的主机名,在所有DataNode上执行hadoop-pull.sh脚本,同步配置。
删除的节点可以清空数据重新使用
rm -rf /usr/local/hadoop-2.6.5/logs/*.*
rm -rf /usr/local/hadoop-2.6.5/tmp/*
rm -rf /app/hadoop/data/*
原始数据分布
自动备份中
自动备份后
删除节点后
Hadoop动态增加节点与删除节点的更多相关文章
- jQuery---清空节点和删除节点
清空节点和删除节点 //可以清空一个元素的内容 //清理门户 $("div").empty(); //完全移除元素 $("div").remove(); $(f ...
- jQuery中的查找节点、创建节点、插入节点、删除节点、替换节点、复制节点操作方法
jQuery操作节点我们可以分六点来讲,查找节点.创建节点.插入节点.删除节点.替换节点.复制节点. 一.查找节点 text() - 设置或返回所选元素的文本内容 ,html() - 设置或返回所 ...
- Hadoop记录-Hadoop集群添加节点和删除节点
1.添加节点 A:新节点中添加账户,设置无密码登陆 B:Name节点中设置到新节点的无密码登陆 C:在Name节点slaves文件中添加新节点 D:在所有节点/etc/hosts文件中增加新节点(所有 ...
- jQuery – 7.动态创建Dom、删除节点
动态创建Dom节点 1.使用$(html字符串)来创建Dom节点 2.append方法用来在元素的末尾追加元素 案例:动态生成网站列表 3.prepend,在元素的开始 ...
- Hadoop下添加节点和删除节点
添加节点 1.修改host 和普通的datanode一样.添加namenode的ip 2.修改namenode的配置文件conf/slaves 添加新增节点的ip或host 3.在新节点的机器 ...
- Redis集群增加节点和删除节点
本文主要是承接上一篇文章Redis集群的离线安装成功以后,我们如何进行给集群增加新的主从节点(集群扩容)以及如何从集群中删除节点(集群缩容),也就是集群的伸缩,集群伸缩的原理是控制虚拟槽和数据在节点之 ...
- Docker swarm集群增加节点和删除节点
Docker swarm集群增加节点 docker swarm初始化 docker swarm init docker swarm 增加节点 在已经初始化的机器上执行:# docker swarm j ...
- jQuery选择器(添加节点及删除节点及克隆及替换及包装)第九节
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- c#操作xml的代码(插入节点、修改节点、删除节点等)
bookstore.xml文件内容: 复制代码代码示例: <?xml version="1.0" encoding="gb2312"?><bo ...
随机推荐
- ES6 中 let 和 const 总结
目录 let const 1. let要好好用 1. 基本用法 2. let声明的变量不存在变量提升 3. TDZ(temporal dead zone)暂时性死区 4. 不允许重复声明 2. 块级作 ...
- 最新 游族网络java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.游族网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了游族网络.6.7月主要是做系统复习.项目复盘.Leet ...
- Swagger API文档
Swagger API文档集中化注册管理 接口文档是前后端开发对接时很重要的一个组件.手动编写接口文档既费时,又存在文档不能随代码及时更新的问题,因此产生了像swagger这样的自动生成接口文档的 ...
- UIPath工具来取得邮件里面的添付文件及邮件内容
下图是得到Outlook邮件附件的示意图 下面的图是对UIPath的属性的设定.最重要的是两个文件夹要保持一致.
- linux网卡出现问题:Job for network.service failed because the control process exited with error code问题
[转自]:https://blog.csdn.net/dongfei2033/article/details/81124465 今天在centOS 7下更改完静态ip后发现network服务重启不了, ...
- java源码 -- HashSet
概述 HashSet是基于HashMap来实现的, 底层采用HashMap的key来保存数据, 借此实现元素不重复, 因此HashSet的实现比较简单, 基本上的都是直接调用底层HashMap的相关方 ...
- VLAN之间通信-三层交换机实现
1.打开三层交换机的命令行,配置VLAN和设置端口IP enable //进入特权模式 configure terminal //进入全局配置模式 ip routing //启动交换机的路由功能 vl ...
- JMeter断言介绍
(1)作用:用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致 (2)目的:在request的返回层面增加一层判断机制:因为request成功了,并不代表结果一定正 ...
- 使用寄存器点亮LED(第2节)—寄存器映射代码讲解
// 打开 GPIOB 端口的时钟 *( unsigned int * )0x40021018|= ( 1 << 4 ); // 配置PC2 IO口为通用推挽输出,速度为10M *( un ...
- go struct 的方法1
方法 Go 没有类.然而,仍然可以在结构体类型上定义方法. 方法接收者 出现在 func 关键字和方法名之间的参数中. package main import ( "fmt" ...