2013-04-23 2 views
4

Я столкнулся с некоторыми проблемами, когда я пытался удаленно запускать работу по сокращению карты (пример слов). После поиска в google я до сих пор не могу достичь своей цели. И я просто видел очень мало тем о том, как удаленно удалять работу по сокращению карты. Ниже вопросы:Как я могу запустить задание mapreduce удаленно

  1. Сначала я встречаю вопрос разрешения:

    SEVERE: PriviledgedActionException as:[user] cause:org.apache.hadoop.security.AccessControlException: 
    org.apache.hadoop.security.AccessControlException: Permission denied: user=[user], access=WRITE, inode="mapred":root:supergroup:rwxr-xr-x 
    

    Похоже разрешения отказать HDFS путь. Я выключаю проверку, установив dfs.permissions = true. Есть ли другой способ преодолеть эту проблему, но все равно держать проверку.

  2. Тогда я встретил исключение, говоря, что я не могу получить доступ к банке приложений с уменьшением размера карты.

    SEVERE: PriviledgedActionException as:[User] cause:java.io.FileNotFoundException: File /home/hduser/WordCount-1.0.jar does not exist. 
    

    Мой код:

    JobConf conf = new JobConf(WordCount.class); 
    conf.setJobName("wordcount"); 
    conf.set("fs.default.name", "hdfs://10.97.1.91:54310"); 
    conf.set("mapred.job.tracker", "10.97.1.91:54311"); 
    conf.setJar("/home/hduser/WordCount-1.0.jar"); 
    ... 
    JobClient.runJob(conf); 
    

    Похоже, в локальной файловой системе на имя узел отрицает мой доступ к файлу банка. Как я могу решить эту проблему? Я нашел a link в stackoverflow. По ссылке, расположение файла jar не требуется. Но как узел имени может найти файл jar без указания местоположения?

  3. Я видел очень мало примеров выполнения задания удаленно в учебнике, которое я нашел в Интернете. Разве это не предлагает сделать это таким образом?

ответ

1

К первой проблеме, похоже, что [пользователь] не имеет прав на HDFS. Прежде всего, Hadoop использует команду whoami, чтобы определить, является ли пользователь, отправляющий задание, и вывод из команды одинаковым. Два способа решения этой проблемы: a) Определите пользователя, который имеет разрешения на HDFS, скажем, root, и добавьте следующую строку перед отправкой задания. System.setProperty ("HADOOP_USER_NAME", "root"); б) Олицетворение. Проверьте следующую ссылку http://hadoop.apache.org/docs/stable/Secure_Impersonation.html

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