hdfs 删除和新增节点
最近发现hdfs的一个问题,每当集群开启的时候,有一个节点上的可用空间就一直在减少,并且速度很快,发现是data目录下的dncp_block_verification.log.curr文件在一直变大,查了日志没有发现什么可疑的原因,只在datanode的日志上发现有几条日志如下非常可疑:
-- ::, INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetAsyncDiskService: Deleted BP--
92.168.1.50- blk_1073748736_7916 file /home/hadoop/hdfsdisk/data/current/BP--192.168.1.50-/curren
t/finalized/subdir0/subdir27/blk_1073748736
-- ::, INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetAsyncDiskService: Deleted BP--
92.168.1.50- blk_1073846979_106183 file /home/hadoop/hdfsdisk/data/current/BP--192.168.1.50-/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./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 (): Name: 192.168.1.58: (slave8.spark)
Hostname: slave8.spark
Decommission Status : Decommission in progress
Configured Capacity: (836.66 GB)
DFS Used: (786.12 GB)
Non DFS Used: (44.39 GB)
DFS Remaining: (6.15 GB)
DFS Used%: 93.96%
DFS Remaining%: 0.74%
Configured Cache Capacity: ( B)
Cache Used: ( B)
Cache Remaining: ( B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers:
Last contact: Sun Nov :: CST
说明该节点已经被移除,其实应该等到在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,具体详细使用方法请查阅。
hdfs 删除和新增节点的更多相关文章
- redis 集群新增节点,slots槽分配,删除节点, [ERR] Calling MIGRATE ERR Syntax error, try CLIENT (LIST | KILL | GET...
redis reshard 重新分槽(slots) https://github.com/antirez/redis/issues/5029 redis 官方已确认该bug redis 集群重新(re ...
- hadoop 集群 加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令
加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令 方式1:静态添加datanode,停止namenode方式 1.停止namenode 2.修改slaves文件,并更新到各个节点3.启动na ...
- 实验-hadoop新增节点
关于hadoop新增节点网上的说法都有些差别,自己来实践一把 1.建立一个namenode一个datanode的集群 master:192.168.126.130 slave1:192.168.126 ...
- CDH5.16.1集群新增节点
如果是全新安装集群的话,可以参考<Ubuntu 16.04上搭建CDH5.16.1集群> 下面是集群新增节点步骤: 1.已经存在一个集群,有两个节点 192.168.100.19 hado ...
- k8s节点简介、移除节点、新增节点
简介 Node是Pod真正运行的主机,可以是物理机也可以是虚拟机. Node本质上不是Kubernetes来创建的, Kubernetes只是管理Node上的资源. 为了管理Pod,每个Node节点上 ...
- k8s系列--node(k8s节点介绍,新增节点,移除节点)
一.简介 Node是Pod真正运行的主机,可以是物理机也可以是虚拟机. Node本质上不是Kubernetes来创建的, Kubernetes只是管理Node上的资源. 为了管理Pod,每个Node节 ...
- [LeetCode] Delete Node in a Linked List 删除链表的节点
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- 试验删除RAC(ORA10G)节点
1.环境概述 2.删除一个节点 本实验中以删除第二个节点为示例. 2.1删除数据库实例 在第一个节点上(存活的节点)上使用DBCA删除第二个节点的实例. 执行完以上操作可以看下crs_stat –t ...
- [CareerCup] 2.3 Delete Node in a Linked List 删除链表的节点
2.3 Implement an algorithm to delete a node in the middle of a singly linked list, given only access ...
随机推荐
- js网页拉起支付宝支付
js网页唤起支付宝进行支付 在做uni-app项目中,打包成 ios App的时候,为了绕过苹果支付的审核,所以用的 webview 加载支付宝的网页支付,进行付款 具体实现流程: 前端通过 url ...
- Day3-O-Median POJ3579
Given N numbers, X1, X2, ... , XN, let us calculate the difference of every pair of numbers: ∣Xi - X ...
- oracle,mysql,SqlServer三种数据库的分页查询
MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如 ...
- java文件相关(文件追加内容、文件内容清空、文件内容读取)
https://blog.csdn.net/xnz0616/article/details/39137177 1.文件内容追加 // 在已有的文件后面追加信息 public static void a ...
- C++面试常见问题——17类模板的使用
类模板的使用 注意在每次类模板函数时都需要声明一个类模板 #include<iostream> using namespace std; template <class T,int ...
- 微信公众号sdk
微信公众号开发 能享用微信公众号的API,比如分享给好友,分享到朋友圈,禁止菜单功能,选择图片,获取地址,以及支付 微信的功能有两种执行方式 一种是 wx.xx 一种是 WeixinJSBridge. ...
- 018、Java中除法的是用,解决除法计算精度问题
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- gem5-gpu 选项解释
‘--split’ ,该项用于模拟独立显卡,GPU与CPU不在同一芯片上,两者的内存物理上隔绝,使用PCI-Express连接. ‘--access-host-pagetable’,该项用于模拟集成显 ...
- 10 MySQL索引选择与使用
索引概述 每种存储引擎对每个表至少支持16个索引,总索引长度至少256字节. MyISAM和InnoDB的表默认创建BTREE索引.MEMORY引擎默认使用HASH索引,但也支持BTR ...
- L2d插件
<script src="https://blog-static.cnblogs.com/files/yyhh/L2Dwidget.min.js"></scrip ...