2015-02-14 7 views
2
./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$1.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$1.run(Main.java:141) 
at java.lang.Thread.run(Thread.java:745) 

Указанная ошибка показана в файле tserver_localhost.log. может ли кто-нибудь помочь мне в этом вопросе. У меня hasoop работает в одноузловом режиме, работает zookeeper, и я следую инструкциям в файле Readme накопителя. Я не знаю, как запустить сервер планшета. В readme не было объяснений относительно этого, может ли кто-нибудь помочь мне в этом.Accumulo: нет серверов для планшетов

ответ

6

Это слияние двух проблем.

Во-первых, ваш Accumulo не может найти родные библиотеки, которые он будет использовать для скрытой карты памяти для живого редактирования. Зная свою версию Accumulo, как вы развернули накопитель и видите, что ваш файл accumulo-env.sh понадобится для диагностики того, почему он, возможно, потерпел неудачу. (просить на user mailing list было бы лучше) Взгляните на README для своей версии в разделе «Строительство» для поддержки «родной карты».

Например, passage for version 1.6.1 дает следующие рекомендации для построения их самостоятельно без полного исходного дерева:

В качестве альтернативы, вы можете вручную распаковать accumulo родной тарболл в директории/ $ ACCUMULO_HOME Lib. Перейдите в каталог-накопитель в текущей директории и введите make. Затем скопируйте полученную библиотеку «libaccumulo» в $ ACCUMULO_HOME/lib/native/map.

$ MkDir -p $ ACCUMULO_HOME/Библиотека/нативный/карта $ ф libaccumulo * $ ACCUMULO_HOME/Библиотека/нативный/карта

Обычно, не имея нативные библиотеки доступны мягкий отказ. Accumulo будет счастливо выпускать WARN, а затем полагаться на реализацию pure-java.

Вторая проблема связана с неправильной конфигурацией памяти. Accumulo полагается на один параметр конфигурации для настройки использования памяти как для собственной карты памяти, так и для java. Память для собственной реализации выделена вне кучи JVM и может быть существенной (в диапазоне 1-16 ГБ в зависимости от целевой рабочей нагрузки). При запуске с реализацией Java это же значение конфигурации убирает пространство, вырезанное из максимального размера кучи.

На основании вашего выходного файла журнала вы сконфигурировали общую максимальную кучу для табличных серверов размером ~ 46 МБ. Вы выделили 27 МБ этого для кеша блока и 80 МБ для карты памяти. Вы видите ошибку, потому что эти два значения приведут к OOM.

Вы можете увеличить общую Java Heap в accumulo-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 --^^^^^^ 

И/или вы можете настроить, сколько места следует использовать для родных карт, кэша блоков и кэш индекса в accumulo -site.xml

<!-- 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).

+0

Спасибо, sean, за ответ. Я получил следующее предупреждение после того, как сделал следующие изменения. Я изменил файл accumulo-env.sh и увеличил кучу до 64. Измененный файл accumulo-site.xml уменьшил размер индекса до 10 м и перезапустил накопитель. После этого, если я пытаюсь открыть оболочку, я вижу следующее предупреждение и после этого ничего не происходит. – chandra

+0

Нет серверов планшета: проверьте, что zookeeper и накопитель запущены. Настройка swappiness системы больше, чем десять (60), что может задерживать операции, зависящие от времени. Accumulo чувствителен к времени, потому что ему необходимо поддерживать распределенное соглашение о блокировке. – chandra

+0

Похоже, вам нужно снова проверить журналы для tserver, чтобы узнать, что на этот раз провалилось. Вы только что изменили размер кеша индекса? В настоящее время ваша большая проблема заключается в том, что на карте памяти используется 80M. Увеличение общей кучи до 64M будет недостаточным для этого. –

0

Я нашел решение этого вопроса. Я удалил все файлы конфигурации из папки конфигурации в накопителе и использовал файл bootstrap_config.sh в папке bin, ..который создал конфигурационные файлы на основе ввода, который я дал, и после этого я снова инициализировал накопитель, и я смог открыть оболочку, и ошибка исчезла.

Спасибо за помощь.

Смежные вопросы