gpt4 book ai didi

hadoop - java.lang.OutOfMemoryError : unable to create new native thread for big data set 错误

转载 作者:可可西里 更新时间:2023-11-01 14:16:33 26 4
gpt4 key购买 nike

我运行的 hive 查询对于小型数据集运行良好。但我正在运行 2.5 亿条记录,我在日志中遇到的错误低于此

 FATAL org.apache.hadoop.mapred.Child: Error running child : java.lang.OutOfMemoryError:   unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:640)
at org.apache.hadoop.mapred.Task$TaskReporter.startCommunicationThread(Task.java:725)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:362)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
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:1136)
at org.apache.hadoop.mapred.Child.main(Child.java:249)



2013-03-18 14:12:58,907 WARN org.apache.hadoop.mapred.Child: Error running child
java.io.IOException: Cannot run program "ln": java.io.IOException: error=11, Resource temporarily unavailable
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:369)
at org.apache.hadoop.fs.FileUtil.symLink(FileUtil.java:567)
at org.apache.hadoop.mapred.TaskRunner.symlink(TaskRunner.java:787)
at org.apache.hadoop.mapred.TaskRunner.setupWorkDir(TaskRunner.java:752)
at org.apache.hadoop.mapred.Child.main(Child.java:225)
Caused by: java.io.IOException: java.io.IOException: error=11, Resource temporarily unavailable
at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 7 more
2013-03-18 14:12:58,911 INFO org.apache.hadoop.mapred.Task: Runnning cleanup for the task
2013-03-18 14:12:58,911 INFO org.apache.hadoop.mapred.Child: Error cleaning up
java.lang.NullPointerException
at org.apache.hadoop.mapred.Task.taskCleanup(Task.java:1048)
at org.apache.hadoop.mapred.Child.main(Child.java:281)

需要这方面的帮助。

最佳答案

我在使用 MapReduce 时大体上遇到过这种情况。根据我的经验,这实际上并不是内存不足错误 - 系统正在用尽文件描述符来启动线程,这就是它显示“无法创建新的 native 线程”的原因。

我们(在 Linux 上)的修复是通过以下方式将设置为 1024 的 ulimit 增加到 2048:ulimit -n 2048。您将需要具有执行此操作的权限 - sudo 或 root 访问权限或具有 2048 或更高的硬限制,以便您可以在系统上将其设置为您自己的用户。您可以在 .profile.bashrc 设置文件中执行此操作。

您可以使用 ulimit -a 检查您当前的设置。有关详细信息,请参阅此引用资料:https://stackoverflow.com/a/34645/871012

我还看到许多其他人谈论更改 /etc/security/limits.conf 文件,但我还没有这样做。这是一个谈论它的链接:https://stackoverflow.com/a/8285278/871012

关于hadoop - java.lang.OutOfMemoryError : unable to create new native thread for big data set 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15494749/

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