gpt4 book ai didi

hadoop - 异常:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):权限被拒绝:user = hbase,access = EXECUTE

转载 作者:行者123 更新时间:2023-12-02 21:59:19 24 4
gpt4 key购买 nike

我正在尝试将BulkLoad加载到Hbase中。映射减少的输入是hdfs文件(来自Hive)。
使用Tool(Job)类中的以下代码启动批量加载过程
HFileOutputFormat.configureIncrementalLoad(job,new HTable(config,TABLE_NAME));

在Mapper中,将以下内容用作Mapper的输出
context.write(new ImmutableBytesWritable(Bytes.toBytes(hbaseTable)),放);

映射器完成后。使用以下内容执行实际的批量加载:

LoadIncrementalHFiles loadFfiles = new LoadIncrementalHFiles(configuration);    
HTable hTable = new HTable(configuration, tableName);
loadFfiles.doBulkLoad(new Path(pathToHFile), hTable);

作业运行良好,但是一旦Loadincrement启动,它就会永远挂起。经过多次尝试,我不得不停止运行该作业。但是,经过30分钟的漫长等待,我终于得到了上面的错误。经过大量搜索后,我发现Hbase将尝试访问放置在输出文件夹中的文件(HFiles),并且该文件夹没有写或执行权限。因此抛出上述错误。因此,替代解决方案是在执行批量加载之前,在Java代码中添加以下文件访问权限。
FileSystem fileSystem = FileSystem.get(config);
fileSystem.setPermission(new Path(outputPath),FsPermission.valueOf("drwxrwxrwx"));

从开发到生产,这是正确的方法吗?同样,一旦添加了上面的代码,在输出文件夹中创建的文件夹也会出现类似的错误。这次是列族文件夹。这是运行时的动态 Action 。

作为临时的解决方法,我做了以下工作,并且能够继续前进。
fileSystem.setPermission(new Path(outputPath +“/ col_fam_folder”),FsPermission.valueOf(“drwxrwxrwx”)));

这两个步骤似乎都是解决方法,我需要一个正确的解决方案才能投入生产。提前致谢

最佳答案

试试这个
System.setProperty(“HADOOP_USER_NAME”,“hadoop”);

关于hadoop - 异常:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):权限被拒绝:user = hbase,access = EXECUTE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30655420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com