Java 远程运行Hbase ImportTSV作业
我正在尝试运行HBase importTSV hadoop作业,以将数据从TSV文件加载到HBase中。我正在使用以下代码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);
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>