Accumulo 错误:“ZOOKEEPER_HOME 未设置或不是目录”与单独的 ZooKeeper 集群

问题描述 投票:0回答:1

我正在尝试设置一个使用单独的 ZooKeeper 集群的 Accumulo 集群。我已将 accumulo-site.xml 文件配置为包括 instance.zookeeper.host 属性以及我的 ZooKeeper 节点的主机名或 IP 地址,但是当我尝试使用 accumulo init 命令初始化 Accumulo 时,我收到以下错误消息:

ZOOKEEPER_HOME is not set or is not a directory. Please make sure it's set globally or in conf/accumulo-env.sh. 
我已经验证 ZooKeeper 客户端安装在 Accumulo 节点上并且配置正确,并且我已经检查了节点之间的网络连接。我确定我已经在 accumulo-site.xml .file 中正确设置了 instance.zookeeper.host 属性 是什么导致了这个错误,我该如何解决?

apache-zookeeper hadoop2 accumulo
1个回答
0
投票

了解您使用的是哪个版本的 Accumulo 和 ZooKeeper 会有所帮助。根据错误消息,我猜 Accumulo 是 1.x(希望是最新的 1.x,目前是 1.10.3,因为所有早期版本都被最新版本淘汰了)。

错误信息的解释

Apache Accumulo 通常与其所有依赖项捆绑在一起Apache Hadoop 和 Apache ZooKeeper 除外,它们预计由用户单独提供。需要设置

instance.zookeeper.host
属性以确保 Accumulo 知道 ZooKeeper 在哪里运行,因此它可以与之对话。然而,在你到达那一点之前,你需要确保 Accumulo 的所有依赖项都在它的
CLASSPATH
上,因此它可以使用 ZooKeeper 自己的 jar 中的 ZooKeeper 客户端代码与其通信。

Accumulo 附带的默认脚本使用环境脚本

conf/accumulo-env.sh
,帮助配置其
CLASSPATH
,以便在Accumulo 进程启动时所有依赖项都可用。该脚本将 Accumulo 自己的
lib/
目录中的 jar 添加到
CLASSPATH
,用于捆绑的依赖项,并且还尝试定位 Hadoop 和 ZooKeeper,通过在安装位置检测它们将它们添加到
CLASSPATH
HADOOP_HOME 
ZOOKEEPER_HOME
.

如何解决

要解决此问题,您需要将

ZOOKEEPER_HOME
设置为指向ZooKeeper 安装的位置,或者您需要编辑
conf/accumulo-env.sh
脚本以将ZooKeeper jar 以另一种方式放在
CLASSPATH
上。

Accumulo 1.10 假定您使用的是 ZooKeeper 3.4,它在与新版本 ZooKeeper 不同的位置包含它的 jar。根据您的 ZooKeeper 版本,您可能需要将

$ZOOKEEPER_HOME/lib
添加到
CLASSPATH
而不是
$ZOO_KEEPER_HOME
或者除此之外,这取决于您的 ZooKeeper 版本。

这只是一般信息。要获取有关您的具体情况的详细信息,最好的办法是联系Accumulo 用户邮件列表以获得更多帮助/建议。

© www.soinside.com 2019 - 2024. All rights reserved.