Успешная установка Oryx на Google Compute Engine?
Я пытаюсь запустить Oryx на Google Compute Engine. Я создал новый экземпляр и установил Oryx через:
git clone https://github.com/cloudera/oryx.git
cd oryx
mvn -DskipTests install
и сохранил эту установку как образ в Google Compute Engine ("oryx-image").
Поиск проблем с Oryx и файловой системой Google ( Hadoop 2.4.1 и соединителем Google Cloud Storage для Hadoop) Я использовал hdfs:// в качестве файловой системы по умолчанию.
Обнаружив проблемы с пакетом Hadoop по умолчанию, запущенным в Google Compute Engine (например, без библиотек Snappy, которые необходимы для конфигурации Oryx по умолчанию), я также попытался создать свой собственный архив Hadoop 2.4.1 с включенным Snappy, следуя этим инструкциям: Как включите Snappy/Snappy Codec поверх кластера hadoop для Google Compute Engine(примечание: достаточно ли описанной здесь версии jdk для oryx?). Затем я использовал свое сохраненное изображение с установленным oryx ("oryx-image"):
./bdutil --bucket <some-bucket> --image oryx-image -n $number \
--env_var_files hadoop2_env.sh --default_fs hdfs
и мой сохраненный архив Hadoop:
# File: hadoop2_env.sh
HADOOP_TARBALL_URI="gs://<some-bucket>/hadoop-2.4.1.tar.gz"
развернуть кластер Hadoop 2.4.1 (с Snappy) (с файловой системой по умолчанию = hdfs://) в Google Compute Engine. Все еще не повезло.
Я могу успешно запустить тестовые задания Hadoop на GCE, протестировать реализации Snappy на GCE (см. Вторую ссылку) и протестировать задания Oryx на GCE локально с главного узла:
# File: oryx.conf
model.local-data = true
model.local-computation = true
Единственная проблема состоит в том, чтобы заставить Oryx успешно работать на Google Compute Engine с данными либо в hdfs://, либо в gs://.
Я нашел много разных инструкций для изменения переменных среды и т. Д., И я не знаю, какие из них необходимы, а какие могут привести к большему количеству проблем. Мне было интересно, есть ли документация по установке / запуску oryx на GCE. Возможно, кто-то уже прошел тот же процесс и может предложить инструкцию и / или хотя бы подтвердить успешную установку?
Инструкции (см. Вторую ссылку) для установки Hadoop 2.4.1 с Snappy на GCE были превосходны. Я надеялся найти что-то с таким уровнем детализации в отношении всех шагов, необходимых для того, чтобы заставить oryx работать на GCE с нуля.
Спасибо!
2 ответа
Я не знаю, является ли это прямым ответом, но я могу прокомментировать несколько моментов здесь. Я думаю, что многие проблемы здесь заключаются в том, что стандартная установка Hadoop запущена и работает на GCE.
Я никогда не запускал его на GCE, но это не должно иметь прямого значения, работает ли он на голом металле, или на GCE, или на EC2. Он просто использует Hadoop. Да, он предполагает Hadoop, хотя и HDFS. (Я думаю, что жесткое кодирование hdfs:// может быть удалено, конечно; я не знаю, будет ли это работать с файловыми системами не-HDFS.) Так что, если GCE имеет другую файловую систему по умолчанию, да, ваш лучший выбор это использовать HDFS.
Я полагаю, что считаю Snappy обязательной частью установки Hadoop. Если вы устанавливаете Hadoop вручную, да, я думаю, вам нужно сделать еще несколько шагов. Вот почему я бы порекомендовал дистрибутив (бесплатный, с открытым исходным кодом), который позаботится об этом за вас.
Следует также настроить такие вещи, как HADOOP_CONF_DIR
для вас, что, хм, я также склонен считать обязательной частью установки Hadoop в целом, по крайней мере, на стороне клиента.
Подойдет любая версия Java 6 или новее.
Можно ли попробовать дистрибутив? это может быть намного меньше боли. Извините, у меня нет дальнейших инструкций, но похоже, что проблема с GCE<->Hadoop больше, чем с Hadoop<->Oryx. Если приложение может измениться таким образом, чтобы оно лучше соответствовало GCE, я могу это сделать.
Я нашел не очень элегантное "решение" этой проблемы. Стандартный выпуск Hadoop-2.4.1, предоставляемый Google Compute Engine , действительно имел библиотеки snappy, они просто не были в "правильном" месте. Поэтому я скопировал все файлы библиотеки snappy из их расположения по умолчанию (/usr/lib/) в каталог библиотеки java. Очевидно, что нужна только одна из этих строк, но я не нашел времени, чтобы выяснить, какая из них правильная:
sudo cp /usr/lib/lib* /usr/local/lib
sudo cp /usr/lib/lib* /usr/java/jdk1.7.0_55/lib/amd64/jli
sudo cp /usr/lib/lib* /usr/java/jdk1.7.0_55/lib/amd64
sudo cp /usr/lib/lib* /usr/java/jdk1.7.0_55/lib
И, конечно, это не столько решение, сколько обходной путь. Я полагаю, что добавление каталога библиотеки snappy к правильному пути также будет работать.