2

OSX Mavericks で Accumulo を動作させようとしています。Java 1.8 と、Homebrew 経由でインストールされた最新の Zookeeper と Hadoop があります。どちらも正常に動作しているようです。

Accumulo のバイナリをダウンロードし、accumulo/conf/accumulo-env.sh で次の行を編集しました。

test -z "$HADOOP_PREFIX"      && export HADOOP_PREFIX=/usr/local/Cellar/hadoop/2.4.0
test -z "$HADOOP_CONF_DIR"     && export HADOOP_CONF_DIR="$HADOOP_PREFIX/libexec/etc/hadoop"
test -z "$JAVA_HOME"             && export JAVA_HOME=$(/usr/libexec/java_home)
test -z "$ZOOKEEPER_HOME"        && export ZOOKEEPER_HOME=/usr/local/Cellar/zookeeper/3.4.6

ただし、実行するbin/accumulo initと、次のようになります。

$ bin/accumulo init
Uncaught exception: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at org.apache.accumulo.start.classloader.AccumuloClassLoader.<clinit>(AccumuloClassLoader.java:78)
    at org.apache.accumulo.start.Main.main(Main.java:39)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

これを検索しても有用な結果が見つかりません。このようなエラーを引き起こすために何が不適切に構成されているのかわからないため、どこから始めればよいかわかりません。

Zookeeper や Hadoop の構成に変更を加えていないため、Hadoop は基本的なスタンドアロン モードにあり、サンプルの 1 つを使用して動作していることを確認しました。Zookeeper は zkServer で適切に開始/停止します。したがって、問題は Accumulo の構成にあると推測しています。残念ながら、彼らの README は私の状況ではまったく役に立ちません。基本的に、ダウンロードした Accumulo バイナリは箱から出してすぐに動作するはずだと言っているだけです。

環境変数JAVA_HOMEを設定および設定解除し、accumulo-env.shで明示的に定義して、これを実行しようとしました。

私を正しい方向に向けることができるものをありがとう。私の最終目標は、Accumulo の動作に依存する GeoMesa をいじることです。

4

1 に答える 1

3

Accumulo を構成したときに、編集しましたconf/accumulo-site.xmlか?

Accumulo 1.5.1 を使用しており、Hadoop 2.4.0 を使用しているようです。Hadoopで使用されるすべての JAR を取得するconf/accumulo-site.xmlには、プロパティにいくつかのパスを追加する必要があります。general.classpaths

のプロパティは次のようにgeneral.classpathsなります。

<property>
  <name>general.classpaths</name>
  <!--
     Add the following for Hadoop2, actual needs depend on Hadoop installation details. 
     This list may be excessive, but this should cause no issues. Append these values
     after the $HADOOP_PREFIX entries

     $HADOOP_PREFIX/share/hadoop/common/.*.jar,
     $HADOOP_PREFIX/share/hadoop/common/lib/.*.jar,
     $HADOOP_PREFIX/share/hadoop/hdfs/.*.jar,
     $HADOOP_PREFIX/share/hadoop/mapreduce/.*.jar,
     $HADOOP_PREFIX/share/hadoop/yarn/.*.jar,
     /usr/lib/hadoop/.*.jar,
     /usr/lib/hadoop/lib/.*.jar,
     /usr/lib/hadoop-hdfs/.*.jar,
     /usr/lib/hadoop-mapreduce/.*.jar,
     /usr/lib/hadoop-yarn/.*.jar,
  -->
  <value>
    $ACCUMULO_HOME/server/target/classes/,
    $ACCUMULO_HOME/lib/accumulo-server.jar,
    $ACCUMULO_HOME/core/target/classes/,
    $ACCUMULO_HOME/lib/accumulo-core.jar,
    $ACCUMULO_HOME/start/target/classes/,
    $ACCUMULO_HOME/lib/accumulo-start.jar,
    $ACCUMULO_HOME/fate/target/classes/,
    $ACCUMULO_HOME/lib/accumulo-fate.jar,
    $ACCUMULO_HOME/proxy/target/classes/,
    $ACCUMULO_HOME/lib/accumulo-proxy.jar,
    $ACCUMULO_HOME/lib/[^.].*.jar,
    $ZOOKEEPER_HOME/zookeeper[^.].*.jar,
    $HADOOP_CONF_DIR,
    $HADOOP_PREFIX/[^.].*.jar,
    $HADOOP_PREFIX/lib/[^.].*.jar,

    <!-- Added for Hadoop 2 -->
    /usr/lib/hadoop/.*.jar,
    /usr/lib/hadoop/lib/.*.jar,
    /usr/lib/hadoop-hdfs/.*.jar,
    /usr/lib/hadoop-mapreduce/.*.jar,
    /usr/lib/hadoop-yarn/.*.jar,
  </value>
  <description>Classpaths that accumulo checks for updates and class files.
    When using the Security Manager, please remove the ".../target/classes/" values.
  </description>
</property>

これを設定すると、log4j が見つかるはずです。

于 2014-05-11T05:07:30.487 に答える