gpt4 book ai didi

hadoop - EMR 中打开的文件过多

转载 作者:可可西里 更新时间:2023-11-01 14:22:12 27 4
gpt4 key购买 nike

我在我的 reducer 中得到以下异常:

EMFILE: Too many open files
at org.apache.hadoop.io.nativeio.NativeIO.open(Native Method)
at org.apache.hadoop.io.SecureIOUtils.createForWrite(SecureIOUtils.java:161)
at org.apache.hadoop.mapred.TaskLog.writeToIndexFile(TaskLog.java:296)
at org.apache.hadoop.mapred.TaskLog.syncLogs(TaskLog.java:369)
at org.apache.hadoop.mapred.Child$4.run(Child.java:257)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.mapred.Child.main(Child.java:249)

每个 reducer 大约创建 10,000 个文件。有没有办法可以设置每个框的 ulimit。

我尝试使用以下命令作为引导脚本:ulimit -n 1000000

但这根本没有帮助。

我还在引导操作中尝试了以下操作来替换/usr/lib/hadoop/hadoop-daemon.sh 中的 ulimit 命令:

#!/bin/bash
set -e -x
sudo sed -i -e "/^ulimit /s|.*|ulimit -n 134217728|" /usr/lib/hadoop/hadoop-daemon.sh

但即便如此,当我们登录到主节点时,我仍然可以看到 ulimit -n 返回:32768。我还确认在/usr/lib/hadoop/hadoop-daemon.sh 中进行了所需的更改,它有:ulimit -n 134217728。

我们是否有任何 hadoop 配置?或者有解决方法吗?

我的主要目标是根据每条记录的id将记录拆分成文件,现在有15亿条记录,肯定会增加。

在每个从站上运行此守护程序之前,有什么方法可以编辑此文件吗?

最佳答案

好的,看来 Amazon EMR 设置中默认设置的 ulimit : 32768 已经太多了,如果有任何工作需要超过这个,那么应该重新审视他们的逻辑。因此,我没有将每个文件直接写入 s3,而是在本地写入它们,然后以 1024 个文件为一组移至 s3。这解决了太多打开的文件问题。

也许当文件描述符被打开以写入 s3 时并没有像写入本地文件时那样被释放/关闭。欢迎对此有任何更好的解释。

关于hadoop - EMR 中打开的文件过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12953251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com