gpt4 book ai didi

Java - OSX Mavericks 上的 Accumulo init 异常 - log4j 记录器

转载 作者:行者123 更新时间:2023-11-30 08:23:34 24 4
gpt4 key购买 nike

我正在尝试让 Accumulo 在 OSX Mavericks 上运行。我有 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 处于其基本的独立模式,我已通过他们的示例之一确认该模式可以正常工作。 Zookeeper 使用 zkServer 正确启动/停止。所以我猜问题出在我的 Accumulo 配置中。不幸的是,他们的自述文件对我的情况没有任何帮助,基本上只是告诉我我下载的 Accumulo 二进制文件应该开箱即用。

我已经尝试在设置和未设置环境变量 JAVA_HOME 的情况下运行它,并在 accumulo-env.sh 中明确定义它。

感谢您为我指明正确方向的一切。我的最终目标实际上是修补 GeoMesa,这取决于 Accumulo 的工作。

最佳答案

当您配置 Accumulo 时,您是否编辑了 conf/accumulo-site.xml

我假设您使用的是 Accumulo 1.5.1,看起来您使用的是 Hadoop 2.4.0。在 conf/accumulo-site.xml 中,您需要向 general.classpaths 属性添加一些路径,以获取 Hadoop 使用的所有 JAR。

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

关于Java - OSX Mavericks 上的 Accumulo init 异常 - log4j 记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23583579/

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