2015-01-23 3 views
0

Я устанавливаю CDH4.6.0 с помощью this site Я запускаю start-all.sh для запуска служб.Job tracker не запускается

/etc/init.d/hadoop-hdfs-namenode start 

    /etc/init.d/hadoop-hdfs-datanode start 

    /etc/init.d/hadoop-hdfs-secondarynamenode start 

    /etc/init.d/hadoop-0.20-mapreduce-jobtracker start 

    /etc/init.d/hadoop-0.20-mapreduce-tasktracker start 

    bin/bash [to start bash prompt after starting services] 

После выполнения этих инструкций как часть Docker файла, как

CMD ["start-all.sh"] 

Он начинает все услуги

Когда я JPS это, я могу видеть только

jps 
Namenode 
Datanode 
Secondary Namenode 
Tasktracker 

Но работа трекера еще не началась. log выглядит следующим образом:

2015-01-23 07:26:46,706 INFO org.apache.hadoop.metrics.jvm.JvmMetrics: 
    Initializing JVM Metrics with processName=JobTracker, sessionId= 
    2015-01-23 07:26:46,735 INFO org.apache.hadoop.mapred.JobTracker: 

    JobTracker up at: 8021 

    2015-01-23 07:26:46,735 INFO org.apache.hadoop.mapred.JobTracker: 

    JobTracker webserver: 50030 
    2015-01-23 07:26:47,725 INFO org.apache.hadoop.mapred.JobTracker:  

    Creating the system directory 

    2015-01-23 07:26:47,750 WARN org.apache.hadoop.mapred.JobTracker: Failed 

    to operate on mapred.system.dir (hdfs://localhost:8020/var/lib/hadoop- 

    hdfs/cache/mapred/mapred/system) because of permissions. 

    2015-01-23 07:26:47,750 WARN org.apache.hadoop.mapred.JobTracker: This 

    directory should be owned by the user 'mapred (auth:SIMPLE)' 

    2015-01-23 07:26:47,751 WARN org.apache.hadoop.mapred.JobTracker: Bailing out ... 

    org.apache.hadoop.security.AccessControlException: Permission denied: user=mapred, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x 

Но когда я снова запустил его из приглашения bash, он работает. Почему так? Какие-либо предложения?

Я вижу это из журнала. Запуск задания начинается с порта 8020 и почему он пытается работать на порту 8020? Это проблема? Если да, то как его решить?

ответ

0

Похоже, что наведенный пользователь не имеет права записывать файлы/каталоги внутри корневого каталога HDFS.

Переключитесь на пользователя hdfs и назначьте необходимые привилегии для наследуемого пользователя перед запуском сервиса mapreduce.

sudo -su hdfs ; 

hadoop fs -chmod 777/

/etc/init.d/hadoop-0.20-mapreduce-jobtracker stop; /etc/init.d/hadoop-0.20-mapreduce-jobtracker start 
+0

Не могли бы вы рассказать мне причину? Почему только эта служба [отслежыватель работы] терпит неудачу? –

+0

Разрешение HDFS будет включено по умолчанию. Поскольку вы используете двух пользователей для работы с HDFS (пользователь hdfs) и Mapreduce (отображаемый пользователь), вы получите эту ошибку. В случае автоматической установки с использованием Cloudera Manager или Ambari, эта ситуация обрабатывается. – sachin

+0

Спасибо человек. У вас есть какие-либо идеи в [этот пост] (http://stackoverflow.com/questions/28178408/how-to-execute-a-command-on-a-running-docker-container) –