Accumulo:There 没有平板电脑服务器

Accumulo:There are no tablet servers

./bin/accumulo shell -u root
Password: ******

2015-02-14 15:18:28,503 [impl.ServerClient] WARN : There are no tablet servers: check that zookeeper and accumulo are running.

2015-02-14 13:58:52,878 [tserver.NativeMap] ERROR: Tried and failed to load native map library from /home/hduser/hadoop/lib/native::/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
java.lang.UnsatisfiedLinkError: no accumulo in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at org.apache.accumulo.tserver.NativeMap.<clinit>(NativeMap.java:80)
at org.apache.accumulo.tserver.TabletServerResourceManager.<init>(TabletServerResourceManager.java:155)
at org.apache.accumulo.tserver.TabletServer.config(TabletServer.java:3560)
at org.apache.accumulo.tserver.TabletServer.main(TabletServer.java:3671)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.accumulo.start.Main.run(Main.java:141)
at java.lang.Thread.run(Thread.java:745)
2015-02-14 13:58:52,915 [tserver.TabletServer] ERROR: Uncaught exception in TabletServer.main, exiting
java.lang.IllegalArgumentException: Maximum tablet server map memory 83,886,080 and block cache sizes 28,311,552 is too large for this JVM configuration 48,693,248
at org.apache.accumulo.tserver.TabletServerResourceManager.<init>(TabletServerResourceManager.java:166)
at org.apache.accumulo.tserver.TabletServer.config(TabletServer.java:3560)
at org.apache.accumulo.tserver.TabletServer.main(TabletServer.java:3671)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.accumulo.start.Main.run(Main.java:141)
at java.lang.Thread.run(Thread.java:745)

以上错误显示在tserver_localhost.log。谁能帮我解决这个问题。 我在单节点模式下有 hadoop 运行,zookeeper 运行,我按照 accumulo 的自述文件中的说明进行操作。 我不知道如何启动平板电脑 server.There 自述文件中对此没有任何解释,谁能帮我解决这个问题。

这是两个问题的交汇点。

首先,您的 Accumulo 无法找到它将用于为实时编辑关闭内存映射的本机库。了解您的 Accumulo 版本、您如何部署 accumulo 并查看您的 accumulo-env.sh 将需要诊断它可能失败的原因。 (最好在 user mailing list 上询问)在 "native map support".

的构建部分下查看您的版本的自述文件

例如,passage for version 1.6.1 给出了以下关于在没有完整源代码树的情况下自行构建它们的建议:

Alternatively, you can manually unpack the accumulo-native tarball in the $ACCUMULO_HOME/lib directory. Change to the accumulo-native directory in the current directory and issue make. Then, copy the resulting 'libaccumulo' library into the $ACCUMULO_HOME/lib/native/map.

$ mkdir -p $ACCUMULO_HOME/lib/native/map $ cp libaccumulo.* $ACCUMULO_HOME/lib/native/map

通常情况下,没有可用的本机库是软故障; Accumulo 会愉快地发出警告,然后依赖于纯 java 实现。

你的第二个问题是内存配置不正确造成的。 Accumulo 依靠单个配置参数来调整本地内存映射和 java 映射的内存使用。本机实现的内存分配在 JVM 堆之外,并且可能很大(在 1-16GB 范围内,具体取决于目标工作负载)。当 运行 Java 实现时,相同的配置值会从最大堆大小中删除 space。

根据您的日志输出,您已经为 tabletservers 配置了 ~46MB 的总最大堆。您已经为块缓存分配了 27MB,为内存映射分配了 80MB。您看到的错误是因为这两个值会导致 OOM。

您可以增加总 Java 堆的累积-env.sh:

# Probably looks like this
test -z "$ACCUMULO_TSERVER_OPTS" && export ACCUMULO_TSERVER_OPTS="${POLICY} -Xmx48m -Xms48m "
#                                 change this part to give it more memory --^^^^^^

And/or 您可以在 accumulo-site.xml

中调整本机地图、块缓存和索引缓存应使用多少 space
  <!-- Amount of space to hold incoming random writes -->
  <property>
    <name>tserver.memory.maps.max</name>
    <value>80M</value>
  </property>

  <!-- Amount of space for holding blocks of data read out of HDFS -->
  <property>
    <name>tserver.cache.data.size</name>
    <value>7M</value>
  </property>

  <!-- Amount of space for holding indexes read out of HDFS -->
  <property>
    <name>tserver.cache.index.size</name>
    <value>20M</value>
  </property>

你应该如何平衡这三者取决于你有多少内存和你的工作量。请记住,不仅仅是这两件事需要进入您的总 Java 堆(例如在每个 RPC 上写入/读取的当前单元格的至少一份副本)。

我找到了解决方法。 我已经从 accumulo 的配置文件夹中删除了所有配置文件,并使用了 bin 文件夹中的 bootstrap_config.sh 文件,..它根据我提供的输入创建了配置文件,之后我再次初始化了 accumulo,我是能够打开 shell 并且错误消失了。

感谢您的帮助。