hadoop ulimit打开文件名

6yoyoihd  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(509)

我有一个hadoop集群,我们假设它的性能相当“糟糕”。节点很结实。。24芯,60+g ram…等。我们想知道是否有一些基本的linux/hadoop默认配置阻止hadoop充分利用我们的硬件。
这里有一个帖子描述了一些我认为可能是真的可能性。
我尝试以root、hdfs和我自己的身份登录namenode,并尝试查看 lsof 以及 ulimit . 这是输出,有人能帮我理解为什么设置与打开的文件编号不匹配。
例如,当我以root身份登录时。这个 lsof 看起来像这样:

[root@box ~]# lsof | awk '{print $3}' | sort | uniq -c | sort -nr
   7256 cloudera-scm
   3910 root
   2173 oracle
   1886 hbase
   1575 hue
   1180 hive
    801 mapred
    470 oozie
    427 yarn
    418 hdfs
    244 oragrid
    241 zookeeper
     94 postfix
     87 httpfs
         ...

但当我查看 ulimit 输出,如下所示:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 806018
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

我假设,一个用户打开的文件不应该超过1024个,但是,当您查看 lsof ,一个用户打开了7000多个文件,有人能解释一下这是怎么回事吗?如果我在理解 ulimit 以及 lsof .
非常感谢!

kmbjn2e3

kmbjn2e31#

我有一个非常类似的问题,这导致了一个碎屑的Yarn时间线服务器停止,由于达到神奇的1024文件限制和崩溃与“太多打开的文件”错误。
经过一番调查后发现,它在处理timeline的leveldb中过多的文件时遇到了一些严重的问题。出于某种原因,yarn忽略了yarn.timeline-service.entity-group-fs-store.retain-seconds设置(默认设置为7天,604800ms)。我们有一个多月前的leveldb文件。
真正有帮助的是应用此处描述的修复程序:https://community.hortonworks.com/articles/48735/application-timeline-server-manage-the-size-of-the.html
基本上,我试过几种选择:
收缩ttl(生存时间)设置首先启用ttl:

<property>
 <description>Enable age off of timeline store data.</description>
 <name>yarn.timeline-service.ttl-enable</name>
 <value>true</value>
</property>

然后设置yarn.timeline-service.ttl-ms(在一段时间内将其设置为一些较低的设置):\

<property>
 <description>Time to live for timeline store data in milliseconds.</description>
 <name>yarn.timeline-service.ttl-ms</name>
 <value>604800000</value>
</property>

如前所述,第二个选项是停止timeline服务器,删除整个leveldb并重新启动服务器。这将从头开始ats数据库。如果你在其他选项上失败了,效果很好。
为此,请从yarn.timeline-service.leveldb-timeline-store.path中找到数据库位置,对其进行备份并从中删除所有子文件夹。此操作需要根用户访问timeline所在的服务器。
希望有帮助。

huwehgph

huwehgph2#

您需要检查流程的限制。它可能与shell会话不同:
前任:

[root@ADWEB_HAPROXY3 ~]# cat /proc/$(pidof haproxy)/limits | grep open
Max open files            65536                65536                files     
[root@ADWEB_HAPROXY3 ~]# ulimit -n
4096

在我的例子中,haproxy在它的配置文件上有一个改变最大打开文件的指令,hadoop也应该有一些东西

相关问题