2012-07-16 80 views
1

我試圖運行HBase importTSV hadoop作業從TSV文件加載數據到HBase。我正在使用下面的代碼。運行Hbase遠程導入TSV作業

Configuration config = new Configuration(); 
    Iterator iter = config.iterator(); 
    while(iter.hasNext()) 
    { 
     Object obj = iter.next(); 
     System.out.println(obj); 
    } 

    Job job = new Job(config); 
    job.setJarByClass(ImportTsv.class); 
    job.setJobName("ImportTsv"); 
    job.getConfiguration().set("user", "hadoop"); 
    job.waitForCompletion(true); 

我收到此錯誤

錯誤security.UserGroupInformation:PriviledgedActionException爲:E317376原因:org.apache.hadoop.security.AccessControlException:org.apache.hadoop.security.AccessControlException:權限被拒絕: user = E317376,access = WRITE,inode =「staging」:hadoop:supergroup:rwxr-xr-x

我不知道如何設置用戶名E317376。這是我嘗試在遠程集羣中運行此作業的Windows機器用戶。我在linux機器上的haddop用戶帳戶是「hadoop」

當我在hadoop用戶帳戶下的Hadoop集羣的一部分的Linux機器上運行此操作時,一切正常。但我想以編程方式在java web應用程序中運行此作業。我做錯了什麼?請幫助...

回答

0

我還沒有測試這些解決方案,但嘗試在你的工作配置中添加這樣的事情

conf.set("hadoop.job.ugi", "hadoop"); 

上述可能abolete所以你也可以嘗試與用戶設置的Hadoop 以下(從http://hadoop.apache.org/common/docs/r1.0.3/Secure_Impersonation.html代碼) :

UserGroupInformation ugi = 
        UserGroupInformation.createProxyUser(user, UserGroupInformation.getLoginUser()); 
      ugi.doAs(new PrivilegedExceptionAction<Void>() { 
       public Void run() throws Exception { 
       //Submit a job 
       JobClient jc = new JobClient(conf); 
       jc.submitJob(conf); 
       //OR access hdfs 
       FileSystem fs = FileSystem.get(conf); 
       fs.mkdir(someFilePath); 
       } 
      } 
+0

我現在得到這個錯誤。我應該改變hadoop配置文件中的任何內容嗎?謝謝ERROR security.UserGroupInformation:PriviledgedActionException as:hadoop via E317376 cause:org.apache.hadoop.ipc.RemoteException:User:E317376 is not allowed to impersonate hadoop – user131476 2012-07-17 04:47:24

2

,你應該有一個像波紋管的屬性在mapred-site.xml文件

<property> 
<name>mapreduce.jobtracker.staging.root.dir</name> 
<value>/user</value> 
<property> 

,也許有必要的chmod命令你的DFS文件系統/用戶文件夾爲777

不要忘記停止/啓動jobtrackers和的TaskTracker(SH stop-mapred.sh和SH啓動mapred .sh)

+0

Thanks for pointing this!我所做的是將默認登臺目錄的權限更改爲777.在我的情況下,hdfs://.../tmp/hadoop-hadoop/mapred/staging with HADOOP_USER_NAME = <...> hadoop fs -chmod 777/tmp/hadoop -hadoop/mapred/staging' – 2014-12-18 08:35:26