2016-07-13 2 views
0

Новичок для Флинка.
Я могу запустить пример wordcount.jar в файле, присутствующем в удаленном hdfs-кластере, без объявления переменной fs.hdfs.hadoopconf в flink conf.Назначение fs.hdfs.hadoopconf в flink-conf.yaml

Так задается вопросом, что именно является целью вышеупомянутой переменной.
Означает ли это, что он меняет способ выполнения примера jar?

Команда:

flink-cluster.vm ~]$ /opt/flink/bin/flink run /opt/flink/examples/batch/WordCount.jar --input hdfs://hadoop-master:9000/tmp/test-events 

Выход:

....... 
07/13/2016 00:50:13 Job execution switched to status FINISHED. 
(foo,1) 
..... 
(bar,1) 
(one,1) 

Установка:

  • Удаленный HDFS кластер на HDFS: //hadoop-master.vm: 9000
  • Flink кластера при работе на flink-cluster.vm

Благодаря

Update:
Как отметил Сергей, заявило fs.hdfs.hadoopconf в конфе, но на выполнение задания с обновленным аргументом hdfs:///tmp/test-events.1468374669125 получили следующую ошибку

Flink-конф .yaml

# You can also directly specify the paths to hdfs-default.xml and hdfs-site.xml 
# via keys 'fs.hdfs.hdfsdefault' and 'fs.hdfs.hdfssite'. 
# 
fs.hdfs.hadoopconf: hdfs://hadoop-master:9000/ 
fs.hdfs.hdfsdefault : hdfs://hadoop-master:9000/ 

Команда:

flink-cluster.vm ~]$ /opt/flink/bin/flink run /opt/flink/examples/batch/WordCount.jar --input hdfs:///tmp/test-events 

Выход:

Caused by: org.apache.flink.runtime.JobException: Creating the input splits caused an error: The given HDFS file URI (hdfs:///tmp/test-events.1468374669125) did not describe the HDFS NameNode. The attempt to use a default HDFS configuration, as specified in the 'fs.hdfs.hdfsdefault' or 'fs.hdfs.hdfssite' config parameter failed due to the following problem: Either no default file system was registered, or the provided configuration contains no valid authority component (fs.default.name or fs.defaultFS) describing the (hdfs namenode) host and port. 
    at org.apache.flink.runtime.executiongraph.ExecutionJobVertex.<init>(ExecutionJobVertex.java:172) 
    at org.apache.flink.runtime.executiongraph.ExecutionGraph.attachJobGraph(ExecutionGraph.java:679) 
    at org.apache.flink.runtime.jobmanager.JobManager.org$apache$flink$runtime$jobmanager$JobManager$$submitJob(JobManager.scala:1026) 
    ... 19 more 

ответ

1

От documentation:

fs.hdfs.hadoopconf: Абсолютный путь к директории (HDFS) конфигурации файловой системы Hadoop (факультативное значение). Указание этого значения позволяет программам ссылаться на файлы HDFS с использованием коротких URI (hdfs:///path/to/files, не включая адрес и порт NameNode в URI файла). Без этой опции файлы HDFS могут иметь доступ к , но для них требуются полные URI, такие как hdfs://address:port/path/to/files. Эта опция также приводит к тому, что файлы записывают значения по умолчанию HDFS для размеров блоков и коэффициенты репликации . Флинк будет искать файлы «core-site.xml» и «hdfs-site.xml» в указанной директории.

+0

Спасибо за быстрый ответ, даже я думал о тех же строках, но объявление переменной и использование обновленного аргумента командной строки вызывает ошибку. Проверьте исходный вопрос в обновленном разделе. Спасибо – coredump

+0

@coredump fs.hdfs.hadoopconf должен указывать на каталог, содержащий конфигурацию hadoop (core-site.xml и hdfs-site.xml), а не на URL-адрес namenode :). Узел, выполняющий задание, должен иметь указанные файлы где-то, иначе он не имеет информации о конечных точках удаленного кластера. – Serhiy

+0

Ahh, что имеет смысл, поскольку я выполняю задания на автономном flink-кластере с автономным кластером HDFS (No Yarn). Таким образом, значение переменной должно быть '/ opt/hadoop/etc/hadoop /'. Любая идея, где именно должно быть объявлено? Я не вижу никакого места в каталоге flink conf. Еще раз спасибо. – coredump

Смежные вопросы