环境:
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表进行该账户的读写授权。
相关推荐
Hadoop-0.20.0-HDFS+MapReduce+Hive+HBase十分钟快速入门
HDFS+MapReduce+Hive+HBase十分钟快速入门.pdf
HDFS+MapReduce+Hive+HBase十分钟快速入门
HDFS+MapReduce+Hive+HBase十分钟快速入门,包括这几个部分的简单使用
mapreduce方式入库hbase hive hdfs,速度很快,里面详细讲述了代码的编写过程,值得下载
《hadoop-HDFS+MapReduce+Hive+Hbase快速入门》,一门入门hadoop的经典书籍,相信能够给学习云计算的大家带来帮助。
大数据技术 Hadoop开发者第二期 Nutch MapReduce HDFS Hive Mahout HBase 共64页.r
8、短评:HDFS、MapReduce和HBase三者相辅相成、各有长处 ..... - 34 - 9、HDFS在web开发中的应用................................. - 35 - 10、Mapreduce中value集合的二次排序 ....................... - 38 - 11...
#资源达人分享计划#
基于Hadoop的mapreduce 在hbase上的使用,基于Hadoop的mapreduce 在hbase上的使用
MapReduce输出至hbase共16页.pdf.zip
google三大论文 gfs bigtable mapreduce hadoop hdfs hbase原型,学hadoop 必看
对Hadoop中的HDFS、MapReduce、Hbase系列知识的介绍。如果想初略了解Hadoop 可下载观看
HBase MapReduce完整实例.rar
Eclipse工程 HBase MapReduce完整实例 可远程执行 包含HBase增删改查 执行Test可看到效果
大数据完整版视频。视频未加密,绝对可以看。
hadoopHA with QJM环境搭建(hdfs+hbase)
google mapreduce bigtable hbase 三篇最著名的中文论文