之前写了一篇文章hbase的bulk load一个小改造,最近在这个改造的基础上做了一些性能测试,呵呵,在这期间发现了新的问题,对此也有了一些新的认识,在这里分享一下,欢迎大家拍砖。
之前提到hbase的bulk load是一个mapreduce任务,其中reduce的数目是表的region数目来决定的,这一点一直没有理解hbase为什么要这么做。呵呵,前两天对一个有200多个region的表进行入库,按照bulk load的原有策略reduce应该是200,不过我将这一块改成了按照输入文件大小来进行计算reduce数目,这样问题就出现了:当一个表的region数目很多,且每个rowkey对应的数据很多的时候,每个region的startKey和endKey的区间就很小,在bulk load生成的每个hfile的区间大于region的区间,这样completebulkload时检查每个hfile的区间不在region的区间范围内,就去split这个hfile,这样需要重写hfile,所以入库的效率就降下来了,呵呵,这也是hbase为什么要用region的数目来设置reduce的数目了。
结合这个问题和上一篇文章hbase的bulk load一个小改造中提到的问题,我想到了两个方案来解决:
方案1:bulk load的数目还是根据region的数目来计算,在创建表的时候预先创建几个region(如果每次入库的文件比较大,可以考虑多创建几个region),这样reduce的数目是大于1的,效率一定有所提高,这样也不会导致split生成的hfile;
方案2:对一张没有region的表入库,可以按照输入文件的大小来计算region的数目,这个策略根据自己的场景需要来定,我们为了避免频繁的compact操作,所以reduce数目是根据输入文件大小和region的大小来计算的;对有region的表入库,那么就按照region数目来设置reduce个数。
分享到:
相关推荐
博客配套文件,详细演示了如何通过MR程序的方式bulkload数据到hbase,代码可直接用于生产环境。
工作中遇到的问题 即 bulkload 实现hive 到Hbase批量写入数据 工作中遇到的问题 即 bulkload 实现hive 到Hbase批量写入数据
很快我将添加如何使用 reducer 以及使用 MR 驱动程序自动刷新所有放置的另一个版本,而无需使用 TAblemapper 类进行缓冲控制。 另一个例子: : 在添加的这个示例中,性能明显提高,将更多的缓冲项从 1 增加到 ...
hbase 常用参数含义,默认值,调优建议(必须参数,split,compaction,blockcache,memstore flush,hlog,zookeeper,其他,等相参数名称、含义、默认值、调优建议)
hbase批量加载 从RCFile进行HBase批量加载的临时代码 这将使用LoadIncrementalFiles从HFileOutputFormat2中Mapreduce写入的数据中加载HBase表。
NULL 博文链接:https://787141854-qq-com.iteye.com/blog/2067818
基于hadoop的,java实现hive快速导数据到Hbase解决方案。
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 ...2. HBase批量装载——Bulk load 3. HBase的协处理器(Coprocessor) 4. HBase事务 5. HBase数据结构
大数据时代,海量数据的存储和分析是一个巨大的挑战,给hadoop或者hbase集群添加数据压缩的能力,是必不可少的,通过压缩不但能节约磁盘空间,而且也能节省集群间网络带宽的损耗,从而间接提高了集群任务的整体执行...
java API实现hbase的bulkload,包含有hbase的工具类
7.1 bulkload介绍 19 7.2 具体使用方法 19 7.2.1 往hdfs中put文件: 19 7.2.2 用ImportTsv方法生成Hfile 20 7.2.3 利用Hfile进行加载 21 7.2.4 put方式直接加载 22 8 HBase-client 24 8.1 log4j 24 8.2 ...
│ Day1610_Hbase与MapReduce集成-Bulk Load.mp4 │ Day1611_Hbase与Sqoop集成使用.mp4 │ Day1612_Hbase完全分布式集群的部署配置.mp4 ├─03_笔记 │ Day16[Hbase 企业应用及与MapReduce集成].txt ├─04_代码 ├...
bulkload方式从hive import hbase有现成的sql可以使用 如果输入是CSV文件或parquet文件,当然也可以先建立一个hive外部表,再从hive import到hbase 也可以通过编码的方式,通过bulkload生成hfile然后再合并到hbase ...
HBase批量加载 使用 MapReduce 作业从文本文件加载 HBase
133_hbase的bulkload命令实现hbase集群之间数据的传输2 D6 d; F6 S8 x+ I/ I0 B0 @ 134_hive同hbase集成,统计hbase数据表信息% Q/ R! Z1 J3 J) k+ H! {6 D# M 135_使用TableInputFormat进行MR编程! m& C6 B/ v6 N" ...
Bulk Load 484 14. ZooKeeper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Installing and Running ZooKeeper 488 An Example ...