Heim  >  Artikel  >  Datenbank  >  Hadoop运维笔记 之 更换du命令降低datanode磁盘IO

Hadoop运维笔记 之 更换du命令降低datanode磁盘IO

WBOY
WBOYOriginal
2016-06-07 16:41:291246Durchsuche

背景介绍: 近期,不少datanode节点的磁盘IO比较高,主要原因还是由于job数量的增多,以及规模的增大。 但任何可以降低磁盘IO消耗的手段,我们都可以尝试一下。 比如,我们经常可以看到hdfs用户在执行"du -sk"命令: [root@idc1-server2 ~]# ps -ef| grep "d

背景介绍:
近期,不少datanode节点的磁盘IO比较高,主要原因还是由于job数量的增多,以及规模的增大。
但任何可以降低磁盘IO消耗的手段,我们都可以尝试一下。

比如,我们经常可以看到hdfs用户在执行"du -sk"命令:
[root@idc1-server2 ~]# ps -ef| grep "du -sk"

hdfs     17119 10336  1 00:57 ?        00:00:04 du -sk /data1/dfs/dn/current/BP-1281416642-10.100.1.2-1407274717062
hdfs     17142 10336  1 00:57 ?        00:00:03 du -sk /data5/dfs/dn/current/BP-1281416642-10.100.1.2-1407274717062
hdfs     17151 10336  1 00:57 ?        00:00:05 du -sk /data6/dfs/dn/current/BP-1281416642-10.100.1.2-1407274717062
...

随着datanode上的数据不断增加,这样频繁的du操作,会耗时比较长,在CPU和磁盘IO很闲的时候,每次也都会耗时5秒左右,而在服务器负载比较高的时候,这样的操作就会耗时很长时间。

于是,我们便考虑通过将原有的du命令替换,并基于df命令来编写一个新的du命令来取而代之。

[root@idc1-server2 ~]# mv /usr/bin/du /usr/bin/du.orig
[root@idc1-server2 ~]# vim /usr/bin/du

#!/bin/sh

mydf=$(df -Pk $2 | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $3 }')
echo -e "$mydf\t$2"

[root@idc1-server2 ~]# chmod +x /usr/bin/du

不过这样的话,统计出来的结果不就不准确了吗?
但具体情况具体应对,一般来说,Hadoop的datanode都会采用不同的磁盘并划分分区来存储数据,那么使用df统计出来的结果,误差应该是很小的。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:新建一个vagrant box 之安装软件Nächster Artikel:Redis数据结构