`
lookqlp
  • 浏览: 346073 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mapreduce mapper access security hbase

阅读更多

环境:

security cdh 5.2.0
security hbase
启动mapreduce的账户为hive或者others(非hbase),如下假设以bi账户为例
 
出发点:
mapper/reduce程序中读取hbase中数据,或者写入hbase数据
 
踩过的坑:
  1. 在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账户的认证登陆,同样也会报认证失败。
  2. 考虑如上b中情况,采用hbase账户认证,若在job创建后,加入如下代码
    import org.apache.hadoop.hbase.security.User;
    if (User.isSecurityEnabled()) { 
        User.getCurrent().obtainAuthTokenForJob(conf, job); 
    }
     
    可通过,此时采用的hbase认证读写hbase
  3. 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); 
     
  4. mapreduce的输入为bi不可读的目录或者hbase不可读的目录,会有读取权限问题
    可采用acl方式解决
    hadoop fs -setfacl -R -m user:hbase:r-x  /user/hive/warehouse/dmp_system.db/apps_rank
     
    但不建议使用此方法,acl需要管理员hdfs授权,建议读取本用户目录的数据。
  5. 采用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表进行该账户的读写授权。
分享到:
评论

相关推荐

    HDFS+MapReduce+Hive+HBase十分钟快速入门.pdf

    HDFS+MapReduce+Hive+HBase十分钟快速入门.pdf

    HDFS+MapReduce+Hive+HBase十分钟快速入门

    HDFS+MapReduce+Hive+HBase十分钟快速入门,包括这几个部分的简单使用

    HDFS+MapReduce+Hive+HBase十分钟快速入门.zip_hbase_hdfs_hive_mapReduce

    在大数据处理领域,Hadoop生态系统中的HDFS(Hadoop Distributed File System)、MapReduce、Hive和HBase是四个至关重要的组件。本资料“HDFS+MapReduce+Hive+HBase十分钟快速入门”旨在帮助初学者迅速理解这些技术...

    mapreduce方式入库hbase hive hdfs

    mapreduce方式入库hbase hive hdfs,速度很快,里面详细讲述了代码的编写过程,值得下载

    《hadoop-HDFS+MapReduce+Hive+Hbase快速入门》

    《hadoop-HDFS+MapReduce+Hive+Hbase快速入门》,一门入门hadoop的经典书籍,相信能够给学习云计算的大家带来帮助。

    结合MapReduce和HBase的遥感图像并行分布式查询.pdf

    【标题】:“结合MapReduce和HBase的遥感图像并行分布式查询” 【描述】:“资源达人分享计划” 【标签】:“分布式 分布式系统 分布式开发 参考文献 专业指导” 本文介绍了一种结合MapReduce和HBase的遥感图像...

    大数据技术 Hadoop开发者第二期 MapReduce HDFS Hive Mahout HBase 共64页.pdf

    ### 大数据技术 Hadoop开发者第二期 MapReduce HDFS Hive Mahout HBase 相关知识点解析 #### 一、Hadoop 业界资讯 - **InfoWorld 授予 Apache Hadoop 年度技术创新奖章** - **背景**:2010年1月,InfoWorld 授予 ...

    MapReduce on Hbase

    在使用MapReduce操作HBase时,可以通过Hadoop MapReduce框架提供的API与HBase数据库进行交互。这使得开发者可以在Hadoop集群上运行MapReduce作业,以批量处理存储在HBase中的大量数据。由于HBase和Hadoop都是基于...

    大数据技术 Hadoop开发者第二期 Nutch MapReduce HDFS Hive Mahout HBase 共64页.r

    本资料主要涵盖了Hadoop开发者第二期的学习内容,包括Nutch、MapReduce、HDFS、Hive、Mahout以及HBase这六个关键组件,共计64页的深度解析。 1. **Nutch**:Nutch是一款开源的网络爬虫项目,它主要用于抓取互联网上...

    基于MapReduce和HBase的海量网络数据处理.pdf

    基于MapReduce和HBase的海量网络数据处理 大数据时代,网络数据的处理和分析变得越来越重要。传统的网络数据处理模式已经无法满足大数据量的需求,需要寻求更高效的网络数据计算模式和数据存储模式。基于MapReduce...

    HBase MapReduce完整实例.rar

    《HBase与MapReduce的深度整合实践》 在大数据处理领域,HBase和MapReduce是两个重要的技术组件。HBase,作为一个分布式、列式存储的NoSQL数据库,为大规模数据提供了高并发、低延迟的访问能力。而MapReduce,作为...

    HBase MapReduce完整实例

    《HBase MapReduce实战详解》 在大数据处理领域,HBase和MapReduce是两个不可或缺的重要组件。HBase作为分布式列式存储系统,适用于大规模数据的实时读写操作;而MapReduce则是Apache Hadoop的核心组件之一,用于...

    MapReduce输出至hbase共16页.pdf.zip

    【MapReduce输出至HBase详解】 MapReduce是Apache Hadoop框架中的一个核心组件,用于处理和生成大数据集。它通过将大规模数据集分片到分布式计算节点上进行并行处理,然后汇总结果,实现了对海量数据的有效计算。而...

    HDFS 通过mapreduce 进行 HBase 导入导出

    标题 "HDFS 通过 mapreduce 进行 HBase 导入导出" 涉及的是大数据处理领域中的两个重要组件——Hadoop Distributed File System (HDFS) 和 HBase,以及它们之间的数据交互。HDFS 是 Hadoop 的分布式文件系统,而 ...

    Hadoop/HDFS/MapReduce/HBase

    对Hadoop中的HDFS、MapReduce、Hbase系列知识的介绍。如果想初略了解Hadoop 可下载观看

    hadoop和hbase集成所需jar包

    - **编写Mapper和Reducer**:接着,编写MapReduce作业,Mapper类负责从HBase中读取数据,Reducer类进行数据处理并可能将结果写回HBase。 - **设置HBaseInputFormat**:MapReduce作业需要使用`HBaseInputFormat`...

    hadoop storm hbase spark

    根据提供的文件信息,我们可以从以下几个方面来探讨与Hadoop、Storm、HBase和Spark相关的知识点。 ### Hadoop #### 1. Hadoop简介 Hadoop是一个开源软件框架,用于分布式存储和处理大型数据集。它由Apache基金会...

Global site tag (gtag.js) - Google Analytics