首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电子病历中打开的文件太多

电子病历中打开的文件太多
EN

Stack Overflow用户
提问于 2012-10-18 19:10:28
回答 4查看 5.2K关注 0票数 4

在我的减速器中,我得到了以下激励:

代码语言:javascript
复制
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 -n 1000000

但这并没有任何帮助。

我还在bootstrap操作中尝试了以下内容,以替换/usr/lib/hadoop/hadoop-daemon.sh中的ulimit命令:

代码语言:javascript
复制
#!/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配置?或者有解决这个问题的办法吗?

我的主要目标是根据每个记录的is将记录拆分到文件中,现在有15亿条记录,而且这个数字肯定还会增加。

在每个从服务器上运行这个守护进程之前,有什么方法可以编辑这个文件吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-17 05:22:37

好吧,看起来Amazon EMR的设置中默认设置的ulimit : 32768已经太多了,如果有任何作业需要比这个更多的内容,那么应该重新审视他们的逻辑。因此,我没有直接将每个文件都写入s3,而是在本地编写了这些文件,并以1024个文件为一批转移到s3。这解决了too many open files问题。

也许在打开文件描述符以写入s3时,不会像写入本地文件时那样释放/关闭。欢迎对此进行任何更好的解释。

票数 3
EN

Stack Overflow用户

发布于 2012-10-20 07:51:05

可能有一种方法可以通过bootstrap actions实现这一点,特别是通过预定义的方法之一。如果预定义不起作用,自定义脚本可以做任何你通常能在任何linux集群上做的事情。但首先我想问一下你为什么要输出这么多文件?HDFS/Hadoop针对较少的较大文件进行了明显的优化。如果您希望进行某种类型的索引,那么使用不同的名称写出原始文件可能不是最好的方法。

票数 0
EN

Stack Overflow用户

发布于 2012-10-20 07:57:45

我认为这里正确的解决方案是有一个序列文件,它的内容是您的每个二进制文件,以文件名为键。将记录拆分成文件很好,但这些文件可以存储为blobs,按文件名键入,存储在一个大的序列文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12953251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档