Namenode HA (UnknownHostException: nameservice1)


Мы включаем высокую доступность Namenode через Cloudera Manager, используя

Cloudera Manager > > HDFS > > Action > Enable High Availability > > Selected Stand By Namenode & Journal Nodes Тогда nameservice1

Как только весь процесс завершен, то развернута конфигурация клиента.

Тестируется с клиентской машины путем перечисления каталогов HDFS (hadoop fs-ls/), а затем вручную переключается на резервный namenode и снова перечисляет каталоги HDFS (hadoop fs-ls /). Этот тест сработал идеально.

Но когда я запустил Hadoop sleep job, используя следующую команду, это не удалось

$ hadoop jar /opt/cloudera/parcels/CDH-4.6.0-1.cdh4.6.0.p0.26/lib/hadoop-0.20-mapreduce/hadoop-examples.jar sleep -m 1 -r 0
java.lang.IllegalArgumentException: java.net.UnknownHostException: nameservice1
at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:414)
at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:164)
at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:129)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:448)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:410)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:128)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2308)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:87)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2342)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2324)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:351)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:194)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:103)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:980)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:974)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:974)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:948)
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1410)
at org.apache.hadoop.examples.SleepJob.run(SleepJob.java:174)
at org.apache.hadoop.examples.SleepJob.run(SleepJob.java:237)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.examples.SleepJob.main(SleepJob.java:165)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:622)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:72)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:144)
at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:622)
at org.apache.hadoop.util.RunJar.main(RunJar.java:208)
Caused by: java.net.UnknownHostException: nameservice1
... 37 more

Я не знаю, почему он не может разрешить nameservice1 даже после развертывания конфигурации клиента.

Когда я гуглил эту проблему, я нашел только одно решение этой проблемы

Добавьте следующую запись в конфигурационную запись для исправления вопрос ДФХ.nameservices=nameservice1 ДФХ.ха.наменоды.nameservice1=namenode1, namenode2 ДПП.узел типа NameNode.ЭКП-адрес.nameservice1.namenode1=ИС-10-118-137-215.ЕС2.внутренние:8020 ДПП.узел типа NameNode.ЭКП-адрес.nameservice1.namenode2=ИС-10-12-122-210.ЕС2.внутренние:8020 ДФХ.клиент.отказоустойчивость.полномочие.поставщик.nameservice1=орг.апаш.платформа Hadoop.файловую систему HDFS.сервер.узел типа NameNode.ха.ConfiguredFailoverProxyProvider

Мое впечатление было, что менеджер Cloudera позаботится об этом. Я проверил клиент для этой конфигурации и конфигурация была там (в каталоге/var/работа/компании Cloudera-СКМ-агент/процесса/1998-развернуть-клиент-настройка/система Hadoop-конф/системы HDFS-сайте.XML).

Также некоторые дополнительные сведения о файлах конфигурации:

[11:22:37 root@datasci01.dev:~]# ls -l /etc/hadoop/conf.cloudera.*
/etc/hadoop/conf.cloudera.hdfs:
total 16
-rw-r--r-- 1 root root  943 Jul 31 09:33 core-site.xml
-rw-r--r-- 1 root root 2546 Jul 31 09:33 hadoop-env.sh
-rw-r--r-- 1 root root 1577 Jul 31 09:33 hdfs-site.xml
-rw-r--r-- 1 root root  314 Jul 31 09:33 log4j.properties

/etc/hadoop/conf.cloudera.hdfs1:
total 20
-rwxr-xr-x 1 root root  233 Sep  5  2013 container-executor.cfg
-rw-r--r-- 1 root root 1890 May 21 15:48 core-site.xml
-rw-r--r-- 1 root root 2546 May 21 15:48 hadoop-env.sh
-rw-r--r-- 1 root root 1577 May 21 15:48 hdfs-site.xml
-rw-r--r-- 1 root root  314 May 21 15:48 log4j.properties

/etc/hadoop/conf.cloudera.mapreduce:
total 20
-rw-r--r-- 1 root root 1032 Jul 31 09:33 core-site.xml
-rw-r--r-- 1 root root 2775 Jul 31 09:33 hadoop-env.sh
-rw-r--r-- 1 root root 1450 Jul 31 09:33 hdfs-site.xml
-rw-r--r-- 1 root root  314 Jul 31 09:33 log4j.properties
-rw-r--r-- 1 root root 2446 Jul 31 09:33 mapred-site.xml

 /etc/hadoop/conf.cloudera.mapreduce1:
total 24
-rwxr-xr-x 1 root root  233 Sep  5  2013 container-executor.cfg
-rw-r--r-- 1 root root 1979 May 16 12:20 core-site.xml
-rw-r--r-- 1 root root 2775 May 16 12:20 hadoop-env.sh
-rw-r--r-- 1 root root 1450 May 16 12:20 hdfs-site.xml
-rw-r--r-- 1 root root  314 May 16 12:20 log4j.properties
-rw-r--r-- 1 root root 2446 May 16 12:20 mapred-site.xml
[11:23:12 root@datasci01.dev:~]# 

Я сомневаюсь, что его проблема со старой конфигурацией в /etc/hadoop / conf.компании Cloudera.hdfs1 & / etc / hadoop / conf.компании Cloudera.mapreduce1, но не уверен.

Похоже, что /etc / hadoop / conf / * никогда не обновлялся

# ls -l /etc/hadoop/conf/
total 24
-rwxr-xr-x 1 root root  233 Sep  5  2013 container-executor.cfg
-rw-r--r-- 1 root root 1979 May 16 12:20 core-site.xml
-rw-r--r-- 1 root root 2775 May 16 12:20 hadoop-env.sh
-rw-r--r-- 1 root root 1450 May 16 12:20 hdfs-site.xml
-rw-r--r-- 1 root root  314 May 16 12:20 log4j.properties
-rw-r--r-- 1 root root 2446 May 16 12:20 mapred-site.xml

Кто-нибудь имеет представление об этом вопросе ?

Спасибо

4 5

4 ответа:

Похоже, что вы используете неправильную конфигурацию клиента в каталоге /etc/hadoop/conf. Иногда Cloudera Manager (CM) deploy client configuration option может не работать.

Поскольку вы включили NN HA, у вас должен быть действительный основной сайт.xml и hdfs-сайт.xml-файлы в каталоге конфигурации клиента hadoop. Для получения действительных файлов сайта, Перейти на обслуживание файловой системы HDFS от см выбрать скачать клиент конфигурации параметр действия кнопка. вы получите конфигурацию файлы в формате zip, извлеките zip-файлы и замените /etc/hadoop/conf / core-site.xml и /etc / hadoop / conf / hdfs-сайт.xml-файлы с извлеченным core-сайтом.XML-файле,файловая система HDFS-сайте.XML-файл.

Все разрешилось. неправильная конфигурация была связана с "файле/etc/Hadoop и/конф/" -- > "файл/etc/альтернатив/с Hadoop-конф/" -- > "файл/etc/Hadoop с/конф.компании Cloudera.mapreduce1 "

Это должно быть "/etc / hadoop / conf / "-- > " /etc/alternatives/hadoop-conf /" -- > " /etc/hadoop / conf.компании Cloudera.mapreduce "

Ниже оператор в моем коде решил проблему, указав хост и порт

val dfs = sqlContext.read.json("hdfs://localhost:9000//user/arvindd/input/employee.json")

Я решил эту проблему, поставив полную строку для создания RDD

Myfirstrdd = sc.textFile ("hdfs: / / 192.168.35.132: 8020/BUPA.txt")

А затем я смог сделать другое преобразование RDD .. Убедитесь, что у вас есть w/r/x к файлу, или вы можете сделать chmod 777