Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 远程运行Hbase ImportTSV作业_Java_Hadoop_Hbase - Fatal编程技术网

Java 远程运行Hbase ImportTSV作业

Java 远程运行Hbase ImportTSV作业,java,hadoop,hbase,Java,Hadoop,Hbase,我正在尝试运行HBase importTSV hadoop作业,以将数据从TSV文件加载到HBase中。我正在使用以下代码 Configuration config = new Configuration(); Iterator iter = config.iterator(); while(iter.hasNext()) { Object obj = iter.next(); System.out.println(obj);

我正在尝试运行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原因:org.apache.hadoop.security.AccessControlException:org.apache.hadoop.security.AccessControlException:Permission denied:user=E317376,access=WRITE,inode=“staging”:hadoop:supergroup:rwxr-xr-x

我不知道用户名E317376是如何设置的。这是我的windows计算机用户,我正试图从中在远程群集中运行此作业。我在linux机器上的haddop用户帐户是“hadoop”


当我在linux机器上运行它时,它是Hadoop用户帐户下Hadoop集群的一部分,一切正常。但我想在java web应用程序中以编程方式运行此作业。我做错什么了吗。请帮助…

我尚未测试这些解决方案,但请尝试在您的工作配置中添加类似的内容

conf.set("hadoop.job.ugi", "hadoop");
以上内容可能是删除的,因此您还可以在用户设置为hadoop的情况下尝试以下内容 (源代码) :

UserGroupInformation-ugi=
UserGroupInformation.createProxyUser(用户,UserGroupInformation.getLoginUser());
ugi.doAs(新特权接受行动){
public Void run()引发异常{
//提交工作
JobClient jc=新的JobClient(conf);
jc.提交作业(conf);
//或访问hdfs
FileSystem fs=FileSystem.get(conf);
fs.mkdir(someFilePath);
}
}

在mapred-site.xml文件中应该有一个类似于bellow的属性

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

mapreduce.jobtracker.staging.root.dir
/使用者
也许有必要将dfs文件系统的/user文件夹chmod到777


不要忘记停止/启动作业跟踪器和任务跟踪器(sh stop-mapred.sh和sh start mapred.sh)

我现在收到这个错误。我应该在hadoop配置文件中更改任何内容吗?谢谢错误security.UserGroupInformation:priviledededActionException as:hadoop via E317376原因:org.apache.hadoop.ipc.RemoteException:User:E317376不允许模拟hadoop感谢您指出这一点!我所做的是更改默认设置的权限将目录转移到777。在我的情况下,hdfs://.../tmp/hadoop-hadoop/mapred/staging 使用
HADOOP\u USER\u NAME=HADOOP fs-chmod 777/tmp/HADOOP-HADOOP/mapred/staging
<property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>/user</value>
<property>