Ошибка Greenplum — путь ввода не существует

#hadoop #greenplum #hawq

#hadoop #greenplum #hawq

Вопрос:

у нас небольшой кластер gpdb. когда я пытаюсь прочитать внешнюю таблицу, используя 'gphdfs' протокол от мастера gpdb. Окружающая среда

Версия продукта Pivotal Greenplum (GPDB) 4.3.8.2 ОС Centos 6.5

Получение ошибки:

 prod=# select * from ext_table;                                                                                      ERROR:  external table gphdfs protocol command ended with error. 16/10/05 14:42:51 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable  (seg0 slice1 host.domain.com:40000 pid=25491)
DETAIL:

Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://path/to/hdfs
        at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:285)
        at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:340)
        at com.
Command: 'gphdfs://path/to/hdfs'
External table tableame, file gphdfs://path/to/hdfs
  

Мы пытались :
Следующая ссылка на главном компьютере Greenplum
https://discuss.pivotal.io/hc/en-us/articles/219403388-How-to-eliminate-error-message-WARN-util-NativeCodeLoader-Unable-to-load-native-hadoop-library-for-your-platform-with-gphdfs

Результат выполнения команды

Это не сработало после изменения содержимого в «Hadoop-env.sh » как было предложено в Ссылке. Все еще выдает ту же ошибку.Нужно ли перезапускать gpdb для изменения изменений «Hadoop-env.sh «.

Или

Есть ли альтернативный способ обработки ошибки протокола gphdfs?

Любая помощь в этом была бы очень признательна?

Прилагается DDL для сбоя внешней таблицы

 create external table schemaname.exttablename(
"ID" INTEGER,
time timestamp without time zone,
"SalesOrder" char(6),
"NextDetailLine" decimal(6),
"OrderStatus" char(1),

)
location('gphdfs://hadoopmster.com:8020/devgpdb/filename.txt') FORMAT 'text'
  

Комментарии:

1. Загрузка собственных библиотек — это просто предупреждение, оно не должно мешать работе. На мой взгляд, более тревожное сообщение в исключении: Input path does not exist: hdfs://path/to/hdfs

2. Спасибо за указания. Я собираюсь проверить путь.

3. Я только что заметил один симптом: discuss.pivotal.io/hc/en-us/articles/… когда я проверил шаг, способный считывать данные из каталога Hadoop / tmp f. но я создаю новый каталог / dev в hadoop. Он жалуется на то, что путь ввода не существует: hdfs://path/to/ hdfs

4. Почему он работает для каталога Hadoop / tmp, а не для вновь созданного каталога в hadoop.

Ответ №1:

Не могли бы вы предоставить свой внешний табличный DDL, который не удался.Также, пожалуйста, убедитесь, что у пользователя gpadmin есть права доступа к пути hdfs для чтения и записи данных. Спасибо Пратиш Наир

Комментарии:

1. Прилагается DDL в разделе вопросов. Пожалуйста, взгляните на него. Спасибо

2. Я уже убедился, что у пользователя gpadmin есть разрешение на доступ к пути hdfs для чтения и записи данных.

3. Можете ли вы узнать, можете ли вы получить доступ к hadoop fs -ls hdfs://hadoopmster.com:8020/devgpdb/filename.txt с главного и сегментного серверов .

4. Убедитесь, что следующее 1. hadoop fs -ls / можно запускать с главного и сегментного серверов 2.hadoop fs -ls hdfs://hadoopmster.com:8020/devgpdb/filename.txt 3.hadoop fs -cat hdfs://hadoopmster.com:8020/devgpdb/filename.txt 3.

5. 1. hadoop fs -ls / может быть запущен с главного и сегментного серверов, когда я запускал на сервере segmen, он выдает ошибку:paste.ofcode.org/nBRwFHuMjNnQXXjwgfSRKY

Ответ №2:

Просто столкнулся с этим на сайте клиента. В этой ключевой статье поддержки был дан ответ: https://discuss.pivotal.io/hc/en-us/articles/219403388-How-to-eliminate-error-message-WARN-util-NativeCodeLoader-Unable-to-load-native-hadoop-library-for-your-platform-with-gphdfs

Комментарии:

1. Вы скопировали этот файл на все узлы GPDB? И вам не нужно перезапускать GP после внесения изменений в этот файл.

2. не скопировано на все узлы, а также не перезапущено, GP изменил только содержимое. но нигде не упоминалось, что это нужно сделать в ссылке

3. После выполнения шагов скопируйте все узлы и перезапустите GP. проблема остается прежней

4. Что касается команды ‘hadoop fs -ls /’, успешно запущенной на главном сервере, но не на серверах сегмента, это может быть одной из проблем. Когда вы выполняете команду SQL для внешней таблицы, которая обращается к HDFS, на самом деле это сегменты, которые подключаются к namenode. Загрузка происходит из файловой системы HDFS непосредственно в сегменты, минуя мастер.

5. Это должно работать с серверов сегмента: hdfs fs -cat /devgpdb/filename.txt