картограф hive-on-tez застрял в INITIALIZING с общим количеством контейнеров, равным -1, при доступе к данным на S3 / MinIO - PullRequest
0 голосов
/ 16 марта 2020

У меня есть установка Hadoop + Hive + Tez с нуля (то есть я развернул ее компонент за компонентом). Hive настроен с использованием Tez в качестве механизма выполнения.

В своем текущем состоянии Hive может получить доступ к таблице в HDFS, но не может получить доступ к таблице, хранящейся в MinIO (используя s3a реализацию файловой системы).

Как показано на следующем снимке экрана, enter image description here при выполнении SELECT COUNT(*) FROM s3_table,

  • Выполнение Tez застряло навсегда
  • Map 1 всегда в INITIALIZING Состояние
  • Map 1 всегда имеет общее количество -1 и число ожидающих -1. (почему -1?)

Вещи уже проверены:

  • Если бы oop мог без проблем получить доступ к MinIO / S3. Например, hdfs dfs -ls s3a://bucketname работает хорошо.
  • Hive-on-Tez может выполнять вычисления на основе таблиц в HDFS, а преобразователи и преобразователи создаются успешно и быстро.
  • Hive-on-MR может выполнять вычисления таблицы на MinIO / S3 без проблем.

Каковы возможные причины этой проблемы?

Прикрепление скриншота интерфейса Tez: enter image description here

Информация о версии:

  • Имеет oop 3.2.1
  • Улей 3.1.2
  • Тез 0.9.2
  • MinIO RELEASE .2020-01-25T02-50-51Z

1 Ответ

0 голосов
/ 17 марта 2020

Оказалось, что проблема в том, что поддержка Tez S3 должна быть включена явно во время компиляции. Для had oop 2.8+, чтобы включить поддержку S3, Tez должен быть скомпилирован из исходного кода с помощью следующей команды:

mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true -Paws -Phadoop28 -P\!hadoop27

После этого перетащите сгенерированный tez-x.y.z.tar.gz в HDFS и извлеките tez-x.x.x-minimal.tar.gz до $TEZ_LIB_DIR. Тогда это сработало для меня. Выполнение кустов в MinIO / S3 проходит гладко.

Однако, Руководство по установке Tez ничего не упоминало о включении поддержки S3. Кроме того, бинарные выпуски Tez по умолчанию сборка с поддержкой S3 или Azure.

(надеюсь) полные параметры сборки и подводные камни фактически задокументированы в BUILDING.txt, где написано:

Однако, чтобы построить против oop версий выше 2.7.0, вам нужно будет сделать следующее:

Для версии oop X, где X> = 2.8.0

$ mvn package  -Dhadoop.version=${X} -Phadoop28 -P\!hadoop27

Для последних версий Had oop (которые по умолчанию не связывают aws и azure), вы можете связать AWS -S3 ( 2.7.0+) или Azure (2.7.0+) поддержка:

$ mvn package -Dhadoop.version=${X} -Paws -Pazure
...