2013-04-23 100 views
4

我在嘗試遠程運行map-reduce作業(字數統計示例)時遇到了一些問題。在谷歌搜索後,我仍然無法實現我的目標。而且我只看到很少有關遠程調用map-reduce作業的主題。 下面的問題:如何遠程運行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. 然後我遇到了一個異常,說我無法訪問map-reduce應用程序jar。

    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); 
    

    好像名稱節點上的本地文件系統拒絕我的jar文件的訪問。我怎樣才能克服這個問題?我在計算器中找到了a link。從鏈接中,jar文件的位置不是必需的。但是,名稱節點如何在不提供位置的情況下找到jar文件?

  3. 我在互聯網上發現的教程中看到了很少的例子,遠程執行作業。這是不是建議這樣做?

回答

1

對於第一個問題,看起來像[用戶]在HDFS上沒有權限。首先,Hadoop使用whoami命令來確定提交作業的用戶和命令的輸出是否相同。解決此問題的兩種方法, a)確定擁有HDFS權限的用戶,說出root並在提交作業前添加以下行。 System.setProperty(「HADOOP_USER_NAME」,「root」); b)冒充。看看下面的鏈接 http://hadoop.apache.org/docs/stable/Secure_Impersonation.html