1

HBase importTSV hadoop ジョブを実行して、TSV ファイルから HBase にデータをロードしようとしています。次のコードを使用しています。

    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 as:E317376 cause:org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: 許可が拒否されました: user=E317376、access=WRITE、inode="staging":hadoop:スーパーグループ:rwxr-xr-x

ユーザー名 E317376 がどのように設定されているかわかりません。これは、リモート クラスターでこのジョブを実行しようとしている Windows マシン ユーザーです。私の Linux マシンの haddop ユーザー アカウントは「hadoop」です

Hadoop ユーザー アカウントで Hadoop クラスターの一部である Linux マシンでこれを実行すると、すべて正常に動作します。しかし、Java Web アプリケーションでこのジョブをプログラムで実行したいと考えています。私は何か間違ったことをしていますか?助けてください...

4

2 に答える 2

2

mapred-site.xml ファイルに次のようなプロパティが必要です

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

おそらく、dfs ファイル システムの /user フォルダを 777 に chmod する必要があります。

ジョブトラッカーとタスクトラッカーを停止/開始することを忘れないでください (sh stop-mapred.sh および sh start-mapred.sh)。

于 2012-10-28T10:13:50.023 に答える
0

私はこれらのソリューションをテストしていませんが、ジョブ構成にこのようなものを追加してみてください

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

上記は廃止された可能性があるため、ユーザーを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); 
               }
             }
于 2012-07-16T21:47:03.367 に答える