【原创】-eclipse下连Hadoop报java.lang.OutOfMemoryError: Java heap space的解决办法
eclipse下java.lang.OutOfMemoryError: Java heap space的解決辦法:
?
一、在eclipse下遠程連接Hadoop出現如下問題:
?14/03/28 22:39:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/03/28 22:39:03 ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-546884332\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-546884332\.staging to 0700
?at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
?at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:662)
?at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)
?at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)
?at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189)
?at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116)
?at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:918)
?at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:1)
?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:1149)
?at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:912)
?at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)
?at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
?at test.WordCountApp.main(WordCountApp.java:106)
?
二、解決方法:
1,從Intalled JREs里修改;window->Preferences->Java->Installed JREs,選擇當前的JRE,然后edit它;在新窗口里設置Default VM Arguments為 -Xms128M -Xmx512M即可;這個設置應該對所有的工程都有效;
?
2,如果僅僅是想對某個工程的有效的話,從Debug... 或Run...里修改,在(x)=Arguments里設置和上面相同的參數即可;
?
三、解釋:
JVM的堆的內存,?是通過下面兩個參數控制的?:
-Xms?最小堆的大小,?也就是當你的虛擬機啟動后,?就會分配這么大的堆內存給你?
-Xmx?是最大堆的大小?
當最小堆占滿后,會嘗試進行GC,如果GC之后還不能得到足夠的內存(GC未必會收集到所有當前可用內存),分配新的對象,那么就會擴展堆,如果-Xmx設置的太小,擴展堆就會失敗,導致OutOfMemoryError錯誤提示。
?
總結
以上是生活随笔為你收集整理的【原创】-eclipse下连Hadoop报java.lang.OutOfMemoryError: Java heap space的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SESAM | GeniE 实用教程
- 下一篇: 推荐三款自己使用过的鼠标手势插件