#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