HDFS命令问题占用100%cpu

时间:2017-08-03 11:12:45

标签: hadoop hdfs

我有一个hdfs服务器,我目前正在流式传输。

我还定期使用以下类型命令命中此服务器以检查某些条件:hdfs dfs -find /user/cdh/streameddata/ -name *_processed

然而,在TOP中监视时,我已经开始看到这个命令占用了我的大部分CPU:

cdh      16919     1 99 13:03 ?        00:43:45 /opt/jdk/bin/java -Xmx1000m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/var/log/hadoop -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/opt/hadoop -Dhadoop.id.str=cdh -Dhadoop.root.logger=ERROR,DRFA -Djava.library.path=/opt/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx512m -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.fs.FsShell -find /user/cdh/streameddata/ -name *_processed

这导致其他应用程序停止运行,并且整体上对我的应用程序产生了巨大影响。

我的服务器是一个48核服务器,我没想到这是一个问题。

目前,我没有在hadoop中设置任何额外的堆,因此它使用的是1000MB默认值。

1 个答案:

答案 0 :(得分:1)

如果您认为您的堆可能太小,您可以运行:

 jstat -gcutil 16919 # process ID of the hdfs dfs find command

查看GCT(垃圾收集时间)下的值,了解您在垃圾收集中花费的时间相对于总运行时间。

但是,如果目录/ user / cdh / streameddata /包含数十万个文件或数百万个文件,那么您可能会合法地破坏您的系统。