Конфигурации zookeeper для Giraph 1.0 на Hadoop 2.2.0

Новичок в Stack Exchange и Giraph, поэтому, пожалуйста, не обращайте внимания на ошибки и задавайте любые уточняющие вопросы.

ОС: убунту 13.10

Hadoop/Yarn: hadoop-2.2.0/ (кластер из 2 узлов)

Жираф: 1.0.0 (РЕДАКТИРОВАТЬ: багажник)

Я получаю исключение NullPointerException (NPE) при попытке запустить следующий пример:

$ hadoop jar $GIRAPH_HOME/giraph-examples/target/giraph-examples-1.1.0-SNAPSHOT-for-hadoop-2.2.0-jar-with-dependencies.jar org.apache.giraph.GiraphRunner org.apache.giraph. examples.SimpleShortestPathsComputation -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /user/hduser/rrdata/tiny_graph.txt -vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /user/hduser/rrdata/ вывод/tiny_graph.out -w 1

Трассировки стека:

Исключение в потоке "main" java.lang.NullPointerException в org.apache.giraph.yarn.GiraphYarnClient.checkJobLocalZooKeeperSupported(GiraphYarnClient.java:460) в org.apache.giraph.yarn.GiraphYarnClient.run(GiraphYarnClient.java:116) в org.apache.giraph.GiraphRunner.run(GiraphRunner.java:96) в org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) в org.apache.hadoop.util.ToolRunner.run(ToolRunner. java:84) в org.apache.giraph.GiraphRunner.main(GiraphRunner.java:126) в sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) в sun .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:606) в org.apache.hadoop.util.RunJar.main(RunJar.java:212)

Кажется, это связано с зоопарком. Я установил zookeeper, но не использовал его до того, как кажется, что конфигурации неверны. Я пробовал -Dgiraph.zkList=hostname:port и связанные с ним варианты, но получаю исключение «Нераспознанный вариант».

Поиск правильных настроек zookeeper для этого сценария. Напишу ответ, если разберусь.


person Vishal    schedule 20.11.2013    source источник
comment
ты уверен, что у тебя 1.0, а не транк?   -  person marcorossi    schedule 28.11.2013
comment
Первоначально я скачал 1.0.0 с 'apache.claz.org/giraph/giraph-1.0.0/'; но переключился на github 'github.com/apache/giraph.git'; так как исходники отсутствовали, а двоичные файлы hadoop2.0.0 не были упакованы. Это связано с багажником? Я новичок в github и еще не смотрел на ветвление.   -  person Vishal    schedule 28.11.2013
comment
Я только что проверил, и ты прав, я на багажнике. Изменит ли это что-нибудь по отношению к описанной выше проблеме?   -  person Vishal    schedule 28.11.2013


Ответы (2)


Это пример того, как вы можете указать флаги -D:

hadoop jar giraph-examples-1.1.0-SNAPSHOT-for-hadoop-2.2-jar-with-dependencies.jar    org.apache.giraph.GiraphRunner -D giraph.zkList="zkNode.net:2081"  org.apache.giraph.examples.SimpleShortestPathsComputation  -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /user/rav/giraph/input/tiny_graph.txt -vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /user/rav/giraph/output/shortestpaths -w 1

Кстати, локальный зоопарк еще не поддерживается в Giraph (GiraphYarnClient):

  /**
  * Check if the job's configuration is for a local run. These can all be
  * removed as we expand the functionality of the "pure YARN" Giraph profile.
  */
  private void checkJobLocalZooKeeperSupported() {
     final boolean isZkExternal = giraphConf.isZookeeperExternal();
     final String checkZkList = giraphConf.getZookeeperList();
     if (!isZkExternal || checkZkList.isEmpty()) {
        throw new IllegalArgumentException("Giraph on YARN does not currently" +
            "support Giraph-managed ZK instances: use a standalone ZooKeeper.");
     }
  }

К сожалению, checkZkList имеет значение NULL, поэтому вы никогда не увидите это исключение :)

person rav    schedule 27.11.2013
comment
Большое спасибо! Я пробовал несколько вариантов, но не смог найти документацию, в которой бы точно указывался внешний зоопарк для жирафа. Эта проблема решена, но теперь возникает другое исключение. - person Vishal; 27.11.2013
comment
Кстати, знаете ли вы, как это можно указать в файле конфигурации, а не в командной строке? - person Vishal; 27.11.2013
comment
Я не уверен, как установить это в файле conf. Какое другое исключение вы получаете сейчас? - person rav; 28.11.2013
comment
Это потому, что ваши воркеры не могут подключиться к серверу Zookeeper, и это потому, что вы не заменили имя хоста и порт zookeeper информацией о вашем сервере! Кроме того, это довольно ясно, если вы посмотрите на журналы контейнера. Использование: журналы пряжи -applicationId ‹application_id›. Также не могли бы вы сказать мне, как я могу воспроизвести вашу электронную почту в списке рассылки apache? - person rav; 28.11.2013
comment
Извините, я могу быть полным идиотом. Я исправил это и снова запустил с другой ошибкой. Вы должны присоединиться к списку рассылки, похоже, вы энтузиаст жирафа, и это было бы полезно в обоих направлениях. - person Vishal; 29.11.2013
comment
Похоже, нашему кластеру нужна определенная настройка, которой нет для работы giraph. Исключение в потоке main java.lang.RuntimeException: для задания Giraph требуется 2 контейнера; кластер содержит только 15 хостов в org.apache.giraph.yarn.GiraphYarnClient.checkPerNodeResourcesAvailable(GiraphYarnClient.java:230) - person Vishal; 29.11.2013
comment
В тот момент, когда вы пробовали это - вы уверены, что было достаточно ресурсов для запуска задания Giraph? Мне кажется, что Giraph не запускается, когда все ресурсы заняты. Также у меня для вас плохие новости - на данный момент кажется, что даже если приложению Giraph удается вычислить результаты, оно никогда не завершается и переходит в вечный цикл в org.apache.giraph.utils.ProgressableUtils: waitFor: Ожидание org.apache.giraph .utils.ProgressableUtils$ExecutorServiceWaitable - person rav; 29.11.2013
comment
давайте продолжим это обсуждение в чате - person Vishal; 29.11.2013
comment
Я начинаю задаваться вопросом, действительно ли люди в Giraph обращают внимание на сообщения об ошибках, я уже сообщал об этой проблеме с патчем как GIRAPH-795 две недели назад :( - person RobV; 01.12.2013
comment
Привет, Роб, я видел ваш отчет об ошибке и был удивлен, что они открыли новую ошибку для той же проблемы на основе этой темы. Я пытался найти правильный вариант и теперь столкнулся с тем же исключением, о котором вы сообщили в списке рассылки. - person Vishal; 02.12.2013

Причина NPE, вероятно, в отсутствии giraphConf для проверки настроек ZK. Я думаю, это связано с более ранними проблемами при запуске. Похоже, что jar примеров не был предоставлен с использованием аргумента -yj. jar, который вы запускаете с помощью «hadoop jar», обычно сам по себе является giraph-core.

Удачи, пожалуйста, опубликуйте в списке пользователей Giraph, если у вас возникнут проблемы.

person Eli Reisman    schedule 08.12.2013
comment
Ага, равводыла помогла с этим. Я коснулся других проблем и перешел к другим неотложным вопросам, но попробую предложения, которые вы и другие предоставили в списке пользователей. В настоящее время оцениваю Jung, но предпочел бы использовать Giraph из-за масштаба. - person Vishal; 08.12.2013