监控hdfs 块迁移数量脚本及 metasave 日志内容详解
把以下脚本配置到 crontab 下 ,10分钟一次,进行打点,记录复制块的进度。
想让节点快速退役(下线)的方法可以参考我的 https://www.cnblogs.com/jiangxiaoxian/p/9665588.html 文章。
#!/bin/bash
source /etc/profile
hdfs dfsadmin -metasave 1.meta
date +%Y%m%d-%H:%M:%S >> /opt/hadoop/hadoop-2.6.0/logs/meta_recods.log
cat /opt/hadoop/hadoop-2.6.0/logs/1.meta | grep 'Metasave: Blocks waiting' >> /opt/hadoop/hadoop-2.6.0/logs/meta_recods.log
日志 meta_recods.log 内容
20180925-14:00:18
Metasave: Blocks waiting for replication: 3814058
20180925-14:10:16
Metasave: Blocks waiting for replication: 3801943
20180925-14:20:16
Metasave: Blocks waiting for replication: 3789778
20180925-14:30:18
Metasave: Blocks waiting for replication: 3777659
20180925-14:40:22
Metasave: Blocks waiting for replication: 3765676
20180925-14:50:18
Metasave: Blocks waiting for replication: 3753631
20180925-15:00:17
Metasave: Blocks waiting for replication: 3741611
......
线上参数如下(根据打点日志 1个小时完成了7w左右个块的拷贝。)
线上要退役的节点有400w个块,那理论上一天可完成170w个块(但是hdfs晚上要跑大量的按天任务,比较繁忙),2.5天可以完成。
<!-- speed up decommission -->
<property>
<name>dfs.namenode.replication.max-streams</name>
<value>10</value>
</property>
<property>
<name>dfs.namenode.replication.max-streams-hard-limit</name>
<value>20</value>
</property>
<property>
<name>dfs.namenode.replication.work.multiplier.per.iteration</name>
<value>5</value>
</property>
metasave 的日志示意
源码中是BlockManager的metaSave(PrintWriter out) 方法
19349608 files and directories, 14515745 blocks = 33865353 total #共有3.3千万的对象在namenode的内存中
Live Datanodes: 15 #有15个datenode in service
Dead Datanodes: 0 # 死了的dn节点
Metasave: Blocks waiting for replication: 2380757 # 等待要复制的块有238w个
# l: == live(in service):, d: == decommissioned(退役) c: == corrupt(损坏) e: == excess(超额)
# 以下是 文件名 --- 等待复制的block名 --- l:2 d:1 c:0 e:0 --- block所在的节点
/user/hive/warehouse/ods.db/xxx/order_datekey=20170213/000003_1: blk_1286491219_213142207 (replicas: l: 2 d: 1 c: 0 e: 0) xx.x.x.30:50010 : xx.x.x.36:50010 : xx.x.x.34:50010(decommissioned) :
/user/hive/warehouse/analytics.db/xxx/datekey=20180810/part=5/part-0001: blk_1529882603_456688042 (replicas: l: 2 d: 1 c: 0 e: 0) xx.x.x.11:50010 : xx.x.x.34:50010(decommissioned) : xx.x.x.41:50010 :
...
Mis-replicated blocks that have been postponed: # 在做namenode 故障转移时,待复制的block 会延迟复制(新active namenode 并不知道要复制哪些块,只到dn的一次report),所以这个也是空(不发生切换ha的情况)
Metasave: Blocks being replicated: 102 # 当前正在复制的 block 102个
blk_1308167564_234830077 StartTime: 10:39:58 NumReplicaInProgress: 1
blk_1475963863_402729834 StartTime: 10:39:58 NumReplicaInProgress: 1
blk_1090092594_16396468 StartTime: 10:39:58 NumReplicaInProgress: 1
...
Metasave: Blocks 333 waiting deletion from 4 datanodes. # 待被删除的block
xx.x.x.11:50010
LightWeightHashSet(size=81, modification=81, entries.length=128)
xx.x.x.21:50010
LightWeightHashSet(size=90, modification=90, entries.length=128)
xx.x.x.36:50010
LightWeightHashSet(size=75, modification=75, entries.length=128)
xx.x.x.41:50010
LightWeightHashSet(size=87, modification=87, entries.length=128)
Metasave: Number of datanodes: 15 # datanode节点ip:port --- 机架 --- 服务状态(in service;Decommission In Progress;) --- 储存信息(磁盘最大可用,剩余,已用空间)---dump meta 时间 --- 所在节点block 的复制情况及失效情况
xxx.xxx.xxx.xx:50010 default_rack IN 35719153532928(32.49 TB) 19426144912589(17.67 TB) 0.54% 14196798403289(12.91 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018 1 blocks to be replicated;
xxx.xxx.xxx.xx:50010 default_rack IN 54168542494720(49.27 TB) 18217462271284(16.57 TB) 0.34% 35222156404459(32.03 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018 6 blocks to be replicated;
xxx.xxx.xxx.xx:50010 default_rack IN 35719153532928(32.49 TB) 19584613210523(17.81 TB) 0.55% 13989217942458(12.72 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018
xxx.xxx.xxx.34:50010 default_rack DP 43039268741120(39.14 TB) 19133599044243(17.40 TB) 0.44% 16143418817257(14.68 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018 2 blocks to be replicated;
xxx.xxx.xxx.xx:50010 default_rack IN 35719153532928(32.49 TB) 19639941377872(17.86 TB) 0.55% 13921822275178(12.66 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018 64 blocks to be invalidated;
xxx.xxx.xxx.xx:50010 default_rack IN 43044577198080(39.15 TB) 22257842728998(20.24 TB) 0.52% 8827718379586(8.03 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018
xxx.xxx.xxx.xx:50010 default_rack IN 54168542494720(49.27 TB) 19201190599407(17.46 TB) 0.35% 33335553166140(30.32 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018
xxx.xxx.xxx.xx:50010 default_rack IN 54168542494720(49.27 TB) 19669312248147(17.89 TB) 0.36% 32865881808839(29.89 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018
xxx.xxx.xxx.xx:50010 default_rack IN 37762378219520(34.34 TB) 3246159556995(2.95 TB) 0.09% 33678460006824(30.63 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018 63 blocks to be invalidated;
xxx.xxx.xxx.xx:50010 default_rack IN 54168542494720(49.27 TB) 20323539696784(18.48 TB) 0.38% 32271527069120(29.35 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018 7 blocks to be replicated; 73 blocks to be invalidated;
xxx.xxx.xxx.xx:50010 default_rack IN 22880316538880(20.81 TB) 4524463118033(4.11 TB) 0.20% 16963981545595(15.43 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018 80 blocks to be invalidated;
xxx.xxx.xxx.xx:50010 default_rack IN 37723723513860(34.31 TB) 2242584812391(2.04 TB) 0.06% 35079540988600(31.90 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018
xxx.xxx.xxx.xx:50010 default_rack IN 37723723513860(34.31 TB) 864073122598(804.73 GB) 0.02% 36507695599616(33.20 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018
xxx.xxx.xxx.xx:50010 default_rack IN 32044152463360(29.14 TB) 20191502077098(18.36 TB) 0.63% 4276374611465(3.89 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018 5 blocks to be replicated;
xxx.xxx.xxx.xx:50010 default_rack IN 35719153532928(32.49 TB) 19310209465238(17.56 TB) 0.54% 14261995815199(12.97 TB) 0(0 B) 0(0 B) NaN% 0(0 B) Wed Sep 26 10:40:04 CST 2018
监控hdfs 块迁移数量脚本及 metasave 日志内容详解的更多相关文章
- gvoory脚本中关于HttpClient使用详解实例
一.gvoory脚本中关于HttpClient使用详解实例 HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=n ...
- loadrunner 运行脚本-Run-time Settings-Browser Enmulation设置详解
运行脚本-Run-time Settings-Browser Enmulation设置详解 by:授客 QQ:1033553122 浏览器模拟 所有Internet Vuser Header包含一个标 ...
- loadrunner 脚本优化-关联函数web_reg_save_param()函数详解
脚本优化-关联函数web_reg_save_param()函数详解 by:授客 QQ:1033553122 Insert->New Step,打开Add Step对话框 选择函数web_re ...
- Shell脚本 /dev/null 2>&1详解
Shell脚本---- /dev/null 2>&1详解 1.可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. ...
- 一键获取linux内存、cpu、磁盘IO等信息脚本编写,及其原理详解
更多linux知识,请关注公众号:一口Linux 一.脚本 今天主要分享一个shell脚本,用来获取linux系统CPU.内存.磁盘IO等信息. #!/bin/bash # 获取要监控的本地服务器IP ...
- shell 脚本之判断语句 if 详解
使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉.其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能.这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下 ...
- IdentityServer4迁移至3.x版本注意问题详解
前言 之前有一位购买我课程的童鞋利用最新的IdentityServer4版本即对应.NET Core 3.x,发布到生产环境在学习,结果出了一些问题,此前我并未过多关注IdentityServer4升 ...
- Shell脚本———— /dev/null 2>&1详解
1.可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和 ...
- (转) html块级元素和内联元素区别详解
http://blog.csdn.net/chen_zw/article/details/8713205 块级元素(block)特性: 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显 ...
随机推荐
- tob toc tovc什么意思
先说一下TOB.TOC.TOVC的含义.B:business (企业)C:customer(消费者)VC:Venture Capital(风险投资) to b产品是根据公司战略或工作需要,构建生态体系 ...
- 黄聪:PHP JSON_ENCODE 不转义中文汉字的方法
ios程序中不识别读取到的JSON数据中 \u开头的数据. PHP 生成JSON的时候,必须将汉字不转义为 \u开头的UNICODE数据. 网上很多,但是其实都是错误的,正确的方法是在json_enc ...
- Spring mvc Json 的正确返回姿势
我们经常都需要封装统一JSON格式 例如以下形式 { “data”:“输出的数据”, “code”:“响应代码”, “msg”:“响应信息” } /** * Created by linli on 2 ...
- 【Linux】使用fsck对磁盘进行修复
在后台执行 磁盘修复 nohup fsck.ext3 -y /dev/sdb1 > /root/fsck.log 2>&1 & 使用nohup和& 让进程在后台执行 ...
- Microsoft Office 2016 简体中文 Vol 版镜像下载
在使用上,零售版和批量授权版并没有区别,只是授权方式方面的区别,相对而言,VOL 版的更容易激活一些,其他并没有什么区别了. 有需要的可以在下面下载:(以下均是 VL 版) 版本:Office 201 ...
- 峰Redis学习(4)Redis 数据结构(List的操作)
第四节:Redis 数据结构之List 类型 存储list: ArrayList使用数组方式 LinkedList使用双向链接方式 双向链接表中增加数据 双向链接表中删除数据 存储list常用 ...
- Flume的Channel
一.Memory Channel 事件将被存储在内存中(指定大小的队列里) 非常适合那些需要高吞吐量且允许数据丢失的场景下 属性说明: 二.JDBC Channel 事件会被持久化(存储)到可靠的数据 ...
- 服务网关zuul之三:zuul统一异常处理
我们详细介绍了Spring Cloud Zuul中自己实现的一些核心过滤器,以及这些过滤器在请求生命周期中的不同作用.我们会发现在这些核心过滤器中并没有实现error阶段的过滤器.那么这些过滤器可以用 ...
- 非ECS阿里云安装插件,给阿里云云监控平台
linux的init学习: https://blog.csdn.net/kunkliu/article/details/80942279 阿里云官方文档: https://help.aliyun.co ...
- [UE4]世界坐标、本地坐标
本地坐标 世界坐标