복붙노트

[HADOOP] 맵리 듀스 작업이 내 PHP 웹 페이지를 통해 자바로 작성된 러닝

HADOOP

맵리 듀스 작업이 내 PHP 웹 페이지를 통해 자바로 작성된 러닝

나는 단지 명령을 실행 명령 줄을 호출하여지도 내 웹 페이지를 통해 작업을 줄일 실행하려고 내 PHP 서버가 작업 트래커 시스템에서 호스팅되고,

하지만 난 아무 반응을 얻고하지 오전 작업이 시작되지 않습니다.

나는 그것이 잘 실행되는 동일한 방법을 사용하여 HDFS를 나열하는 명령을 실행 그러나합니다. 나를 인도 해주십시오.

명령은 나에게 아무것도 응답하지 않고 작업이 실행되지 않고 다음과 같습니다

exec("HADOOP_DIR/bin/hadoop jar /usr/local/MapReduce.jar Mapreduce [input Path] [output Path]");

그러나 나는이 작업을 수행하는 경우 :

exec("HADOOP_DIR/bin/hadoop dfs -ls /user/hadoop");

그것은 벌금을 실행 중입니다.

해결법

  1. ==============================

    1.나는 (HDFS에 파일을 쓸 수있는 권한을 가진 사용자) hduser하기 위해 PHP 서버 사용자를 변경하여이 문제를 해결했다. 이것을 HDFS에서 읽는 명령 만이 작동하고 사용자가 아닌 파일을 만들거나 HDFS에 쓸 필요 하나를 변경하지 않고.

    나는 (HDFS에 파일을 쓸 수있는 권한을 가진 사용자) hduser하기 위해 PHP 서버 사용자를 변경하여이 문제를 해결했다. 이것을 HDFS에서 읽는 명령 만이 작동하고 사용자가 아닌 파일을 만들거나 HDFS에 쓸 필요 하나를 변경하지 않고.

    난 내 PHP 스크립트를 통해 HDFS의 디렉토리를 작성하기위한 명령을 실행했을 때, 나는 내 PHP는 서버 로그 (/var/log/apache2/error.log)에 다음과 같은 오류가 발생했습니다 :

    mkdir: org.apache.hadoop.security.AccessControlException: Permission denied: user=www-data, access=WRITE, inode="hduser":hduser:supergroup:rwxr-xr-x
    

    그리고 MapRed 프로그램을 트리거 항아리 명령을 실행에 나는 다음과 같은 오류가 발생했습니다 :

    Exception in thread "main" java.io.IOException: Permission denied
    at java.io.UnixFileSystem.createFileExclusively(Native Method)
    at java.io.File.createTempFile(File.java:1879)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:115)
    

    그리고 내가 한 일은 내가 내 하둡 사용자에게 /etc/apache2/apache2.conf에 사용자를 변경 한 후 내 서버를 다시 시작하고 모든 일이 지금은 잘 작동하고 있습니다.

    나는 PHP 서버가 실패에서 하둡 항아리를 실행 참조해야합니다. 권한이 문제 해결에 많이 나에게 도움이 게시물을 부인했다. 이 게시물이 너무 다른 사람을 도움이되기를 바랍니다.

  2. from https://stackoverflow.com/questions/24901626/running-mapreduce-job-written-in-java-through-my-php-web-page by cc-by-sa and MIT license