mapreduce mapper access security hbase
来源:互联网 发布:网络电影发展 编辑:程序博客网 时间:2024/06/05 03:22
环境:
security cdh 5.2.0
security hbase
启动mapreduce的账户为hive或者others(非hbase),如下假设以bi账户为例
出发点:
mapper/reduce程序中读取hbase中数据,或者写入hbase数据
踩过的坑:
- 在mapreduce的job创建过程中加入如下认证代码
UserGroupInformation.setConfiguration(conf); UserGroupInformation.loginUserFromKeytab(conf.get("hbase.master.kerberos.principal"), conf.get("hbase.keytab.path"));
a.若此处使用该节点bi账户的认证登陆,mapreduce可以正常启动,然而在mapper/reduce阶段访问hbase认证失败。
b.若此处使用该节点hbase账户的认证登陆,同样也会报认证失败。 - 考虑如上b中情况,采用hbase账户认证,若在job创建后,加入如下代码
import org.apache.hadoop.hbase.security.User;if (User.isSecurityEnabled()) { User.getCurrent().obtainAuthTokenForJob(conf, job); }
可通过,此时采用的hbase认证读写hbase - jar包问题,mapreduce过程中,加载不了hbase相关的jar
若在job创建阶段掉了hbase相关类,例如Configuration conf = HBaseConfiguration.create();必须在hadoopclasspath中加载jar包,方式例如for jarfile in `ls /opt/cloudera/parcels/CDH-5.2.0-1.cdh5.2.0.p0.36/jars/.`; do export HADOOP_CLASSPATH="${HADOOP_CLASSPATH}:/opt/cloudera/parcels/CDH-5.2.0-cdh5.2.0.p0.36/jars/$jarfile" done
若在mapper、reduce中调用了hbase相关类,需要采用-libjars方式或者cdh中TableMapReduceUtil.addDependencyJars方式,两者能达到相同的效果,参考如下hadoop jar my.jar com.myclassname -libjars /opt/cloudera/parcels/CDH-5.2.0-1.cdh5.2.0.p0.36/lib/hbase/hbase-common-0.98.6-cdh5.2.0.jar,/opt/cloudera/parcels/CDH-5.2.0-1.cdh5.2.0.p0.36/lib/hbase/hbase-protocol-0.98.6-cdh5.2.0.jar,/opt/cloudera/parcels/CDH-5.2.0-1.cdh5.2.0.p0.36/lib/hbase/lib/hbase-client-0.98.6-cdh5.2.0.jar,/opt/cloudera/parcels/CDH-5.2.0-1.cdh5.2.0.p0.36/lib/hbase/lib/htrace-core.jar params
或者创建job后增加代码TableMapReduceUtil.addDependencyJars(job);
- mapreduce的输入为bi不可读的目录或者hbase不可读的目录,会有读取权限问题
可采用acl方式解决hadoop fs -setfacl -R -m user:hbase:r-x /user/hive/warehouse/dmp_system.db/apps_rank
但不建议使用此方法,acl需要管理员hdfs授权,建议读取本用户目录的数据。 - 采用bi账户,bi认证,且使用如上第二点的user obtainAuthTokenForJob,mapper、reducer写入hbase认证失败。
需要在hbase shell中对该账户授权,例如:grant 'bi','RWX','hbase_table_name'
具体可参考https://github.com/bkersbergen/hbase-kerberos-mapreduce-hadoop2
总结:若在使用mapreduce时,即需要读取hdfs目录,又要读写入hbase,建议采用如上5这种方式,即,hdfs目录对于该账户具有读写权限,并且对hbase表进行该账户的读写授权。
0 0
- mapreduce mapper access security hbase
- security cdh mapreduce access hbase
- [JAVA][DB]用MR(MapReduce)查询hbase数据(Mapper参数传递)-用到TableMapper和Scan
- hbase->Mapreduce->hbase
- Access Hbase
- mapreduce之mapper、reducer个数
- Hadoop MapReduce VS HBase MapReduce
- Volkswagen:$27 Security Access
- Hbase MapReduce例子
- MapReduce操作HBase
- HBase MapReduce实例分析
- HBase MapReduce 使用
- HADOOP-HBase MapReduce Examples
- HBase MapReduce实例分析
- Hadoop+HBase+ MapReduce
- HBase MapReduce Examples
- Mapreduce 读hbase
- HBase MapReduce实例分析
- ListView实现不同的Item布局
- linux之universal usb installer安装ubuntu
- hdu5791Two
- nyoj 275 队花的烦恼1
- 停车场(队列)
- mapreduce mapper access security hbase
- yarn NullPointerException
- SQL更新与删除
- hive dynamic partitions insert java.lang.OutOfMemoryError: Java heap space
- App架构之组件化理解
- hive相关元数据迁移(mysql)
- C实现字符串反转的N中方法
- eclipse插件启动Genymotion模拟器失败
- leetcode Revert Binary Tree