监控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)特性: 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显 ...
随机推荐
- 【redis】之centos6.x安装redis3.0.x
centos6.9_x86_64 1.下载redis安装包 http://download.redis.io/releases/redis-3.2.9.tar.gz 2.解压 编译到指定得目录 mak ...
- springboot工程添加404页面
首先在/src/main/resources下创建文件夹/public/error 在文件夹里创建html页面,jsp页面不可以. <html> <body> <img ...
- 使用Apache Mesos和Consul实现服务的注册发现
为保证基于Docker应用程序和服务都具有高性能和可用性,设计出一种具有服务发现,高可用性和容错能力的解决方案非常重要. 我们使用Apache Mesos 和Mesosphere的 Marathon实 ...
- Springboot监控之一:SpringBoot四大神器之Actuator之2--覆盖修改spring cloud的默认的consul健康检查规则
微服务网关是socket长连接与支付公司对接,该网关需要提供http接口给内部系统调用,当socket没有建立连接时(网关服务的高可用是haProxy搭建的,有些服务的socket可能未连上支付公司) ...
- github_地址
网络请求: hongyangAndroid/okhttputils(包含cookie的管理): 图片之压缩: Sunzxyong/Tiny:(http://www.tuicool.com/articl ...
- view之自定义控件
转载自:http://blog.163.com/ppy2790@126/blog/static/103242241201382210910473/ 开发自定义控件的步骤: 1.了解View的工作原理 ...
- [UE4]使用Is Locally Controlled解决第一人称和第三人称武器位置问题
一.在第一人称网络游戏中,自己看到的是第一人称,其他玩家看到的自己是第三人称. 二.由于第一人称和第三人称是不同的模型,所以枪在模型上面的插槽位置也会不一样. 三.在武器挂载在人物模型的使用,使用“I ...
- [UE4]Cast to OverlaySlot、Set Vertical Alignment、Get Slot,解决Child Widget垂直居中对齐问题
- MySQL 开启和查看bin-log日志
1.5.7版本前修改my.cnf文件,添加log-bin=my-bin(my.cnf的位置根据自己安装的路径查看)# vi /usr/local/mysql/my.cnflog-bin=my-bin ...
- RHEL7或CentOS7安装11.2.0.4 RAC碰到的问题
RHEL7或CentOS7安装11.2.0.4 RAC碰到的问题 随着Linux 版本的普及,但Oracle数据库主流版本仍是11gR2, 的支持不很完美,在Linux 上安装会遇到几处问题,以此记录 ...