1

Hadoop コマンドから Java クラス test.java を実行しています。

$ hadoop test

私はstringBuilderを使用していますが、そのサイズはメモリ不足です:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2882)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.                                                                                        java:100)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572                                                                                        )
    at java.lang.StringBuffer.append(StringBuffer.java:320)
    at java.io.StringWriter.write(StringWriter.java:60)
    at org.json.JSONObject.quote(JSONObject.java:1287)
    at org.json.JSONObject.writeValue(JSONObject.java:1597)
    at org.json.JSONObject.write(JSONObject.java:1649)
    at org.json.JSONObject.writeValue(JSONObject.java:1574)
    at org.json.JSONArray.write(JSONArray.java:929)
    at org.json.JSONObject.writeValue(JSONObject.java:1576)
    at org.json.JSONObject.write(JSONObject.java:1649)
    at org.json.JSONObject.writeValue(JSONObject.java:1574)
    at org.json.JSONObject.write(JSONObject.java:1632)
    at org.json.JSONObject.toString(JSONObject.java:1443)

Java では、ヒープ領域のサイズを指定することで Java プログラムを実行できることを知っています。

java -Xmx4G test

次のように実行すると、hadoop で実行中にこれを行うにはどうすればよいですか。

$ hadoop -Xmx4G test

それは例外をスローします:

Caused by: java.lang.ClassNotFoundException: java
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    Could not find the main class: java.  Program will exit.
    Error: No command named `-Xmx4g' was found. Perhaps you meant `hadoop Xmx4g'

ヒープ サイズを永続的に変更したいと考えています。

4

1 に答える 1

4

通常、クラスを実行する前にターミナルでこれらのいずれかを実行するか、bash スクリプトに配置します。

export HADOOP_HEAPSIZE=4096
hadoop test

または、

export HADOOP_OPTS="$HADOOP_OPTS -Xmx4G"
hadoop test

または、上記が機能しない場合は、HADOOP_OPTS を変更してみてください$HADOOP_HOME/conf/hadoop-env.sh

于 2013-08-31T10:41:23.487 に答える