之前写了一篇文章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个数。
分享到:
相关推荐
描述提到这是一个博客配套文件,包含了一个具体的示例,展示了如何使用MapReduce来实现Bulkload。这意味着文件中可能包括了Java代码,这些代码会执行以下步骤: 1. **数据预处理**:首先,使用MapReduce作业将源...
BulkLoad 是一种批量写入数据的方式,可以快速地将大量数据写入到 HBase 中。该方法可以减少写入时间,提高数据写入效率。 Hive 到 HBase 的批量写入 Hive 是一种基于 Hadoop 的数据仓库,可以存储和处理大量...
很快我将添加如何使用 reducer 以及使用 MR 驱动程序自动刷新所有放置的另一个版本,而无需使用 TAblemapper 类进行缓冲控制。 另一个例子: : 在添加的这个示例中,性能明显提高,将更多的缓冲项从 1 增加到 ...
在项目`hive-bulkload-hbase-master`中,你将找到一个示例项目,它演示了上述步骤的实现。这个项目可能包括了Hive和HBase的连接代码、数据预处理逻辑、MapReduce作业的配置以及加载HFiles的Java代码。通过阅读和理解...
hbase 常用参数含义,默认值,调优建议(必须参数,split,compaction,blockcache,memstore flush,hlog,zookeeper,其他,等相参数名称、含义、默认值、调优建议)
在大数据处理领域,Apache HBase是一个分布式的、版本化的NoSQL数据库,它构建于Hadoop之上,特别适合处理海量结构化数据。这篇博客“Hbase调用Java API实现批量导入操作”聚焦于如何利用Java编程语言高效地向HBase...
hbase批量加载 从RCFile进行HBase批量加载的临时代码 这将使用LoadIncrementalFiles从HFileOutputFormat2中Mapreduce写入的数据中加载HBase表。
Hive 是一个基于 Hadoop 的数据仓库工具,而 HBase 是一个基于 Hadoop 的 NoSQL 数据库。它们都是大数据处理的重要组件。在数据处理过程中,经常需要将数据从 Hive 导入到 HBase 中。本文将详细介绍 Hive 数据导入 ...
4. **启用Bulk Load**:在应用开始前,需要调用`HBaseConfiguration`的`setBoolean("hbase.mapreduce.bulkload.max.load", true)`方法开启Bulk Load功能。 5. **使用`LoadIncrementalHFiles`工具**:最后,使用...
数据导入场景中,HBase Bulkload 是一种高效的数据加载机制,其主要优势在于高吞吐量、无需写入日志(WAL)、避免小合并(small compaction)以及支持离线构建HFile。Bulkload 的工作流程包括将原始数据分区、排序,...
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 ...2. HBase批量装载——Bulk load 3. HBase的协处理器(Coprocessor) 4. HBase事务 5. HBase数据结构
3. HBase操作:掌握创建、删除、查询和更新表的方法,以及数据导入导出工具HBase Bulk Load的使用。 4. API与Shell命令:学习Java API和HBase Shell,进行基本的数据操作。 5. 性能优化:探讨HBase的性能瓶颈,学习...
大数据时代,海量数据的存储和分析是一个巨大的挑战,给hadoop或者hbase集群添加数据压缩的能力,是必不可少的,通过压缩不但能节约磁盘空间,而且也能节省集群间网络带宽的损耗,从而间接提高了集群任务的整体执行...
此外,HBase还提供了批量操作的工具,如HBase的`BulkLoad`功能,它可以将预先格式化的数据文件直接加载到HFile中,进一步提升写入速度。这个过程通常包括数据预处理、生成SequenceFile、上传到HDFS以及执行`...
它将数据分布在多台服务器上,每台服务器运行一个RegionServer,负责管理一部分Region。Region是HBase的基本存储和调度单元,随着数据增长,Region会自动分裂以保持良好的性能。Zookeeper在HBase中扮演了重要的角色...
标题中的"flink+hbase+spark_linux.rar"表明这是一个关于大数据处理框架Flink、分布式数据库HBase以及大数据处理引擎Spark在Linux操作系统环境下的综合应用。这个压缩包可能包含相关的配置文件、示例代码、教程文档...
HBase是Apache Hadoop生态系统中的一个分布式、可扩展的大数据存储系统。它的设计目标是处理海量数据,并提供实时的数据访问。HBase 0.92.1是该系统的早期版本,尽管现在已经有更新的版本,但这个版本在当时仍然包含...
首先,`hbase-tools-1.0`是HBase的一个工具包,其中包含了用于管理和操作HBase的各种实用工具,如`hbase.bulk.load`(HFile批量加载)和`hbase-import-tsv`(TSV格式数据导入)等。这些工具能够帮助我们高效地将大量...