HBASE入库方式比较-阿里云开发者社区

开发者社区> 孤身纵马> 正文

HBASE入库方式比较

简介: HBASE数据入库主要目的是保证数据快速,准确,完整的进入HBASE,并在数据入库时减少对大数据集群的影响。
+关注继续查看

一.概述

本文主要从HBASE入库的不同方式进行阐述,对HBASE的参数调整本文不进行过多阐述。HBASE数据入库主要目的是保证数据快速,准确,完整的进入HBASE,并在数据入库时尽量少占用大数据集群资源,减少对大数据集群的影响。

二.入库方式

HBASE数据入库主要分成以下三种方式:
1.MR预生成HFILE

采用MR的方式进行HFILE进行生成,生成HFILE文件后采用LOAD方式进行数据入库

2.MR过程中PUT

采用MR中Map阶段进行PUT数据入库

3.HBASE原生口的PUT方式

用JAVA调用HBASE的PUT接口进行数据入库

1和2都存在MR的过程,会使用集群YARN的资源,而且如果没有进行HBASE的参数调整和预分区操作,会引起HBASE的region的split;3方式采用多客户端,多线程方式进行数据入库,本身用的就是HBASE的原生方式,排序合并操作都压给了HBASE,受制于网络和内存。
从上面的原理描述,3方式看上去是入库最合适的方式,但是对于服务端的压力却是最大的。
为了完成本文所说的尽量少占用大数据集群资源目的,对于预生成HFILE方式需进行优化,不采用MR方式进行生成。

三.实现

1.非MR方式预生成HFILE方式优化
1)将数据生成KeyValue放入list,并将其进行排序
Snipaste_2020-02-29_14-57-35.png
2)使用StoreFile.Writer将数据写入到HDFS的HFILE中
Snipaste_2020-02-29_15-11-18.png
3)将生成的HFILE文件用doBulkLoad导入到HBASE
Snipaste_2020-02-29_15-14-43.png

2.使用HBASE的原生接口PUT
Snipaste_2020-02-29_15-19-51.png

四.测试

测试方案主要进行HFILE入库,PUT入库,多列,全列按不同数据量进行测试
名词解释:
file:hfile方式入库
put:put方式入库
column:多列,每列独立
columnall:全列,列合并打包
10W:代表数据量
如file_column_10w代表用hfile方式入库10W数据量的多列

注:下述时间都是秒

入库方式/提交记录数KV满一万1万条记录2万条记录4万条记录8万条记录
file_column_10w158122114110106
file_columnall_10w11677787769
put_column_10w125188196202181
put_columnall_10w7853626068
file_column_100w18231161113810051003
file_columnall_100w1230597565539510
put_column_100w15011534180421001913
put_columnall_100w844472462465477
file_column_1000w 10301
file_columnall_1000w 4806
put_column_1000w 21311
put_columnall_1000w 5050

五.总结

  1. hfile文件方式入库会随着提交数据记录数的增加而效率提升
  2. put方式入库提交数据记录数增加不能很明显提升效率,有时候反而会变慢,原因应该是memstore需要清除历史KeyValue的缘故,并受到缓存大小限制,而hfile方式会直接绕过memstore,不受memstore限制。
  3. 当数据记录数大的时候,hfile的方式优于put方式
  4. hfile方式在数据量小的时候,增加提交记录数效率不明显
  5. hfile方式可以自由控制导入hfile的大小,优势就是减少hfile的compact,劣势就是需要增加按region来生成hfile防止bulkload时再分裂
  6. hfile方式适合大数据量数据导入,put方式小量数据导入,put会比hfile时效性高
  7. 全列的入库方式比多列的入库方式效率要高很多,而且HFILE文件也会小很多,相应的存储会减少,原因是减少了rowkey的存储

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4068 0
Sybase IQ导出文件的几种方式
IQ有四种方法,将表的数据导出为文本文件:1、重定向 SELECT * FROM TABLE1 ># D:MYDATATABLE1.TXT -- 文件生成在执行语句的客户端上 2、通过选项导出  SET TEMPORARY OPTION Temp_Extract_Name1 = '/data/mydata/table1.
772 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4479 0
HBase数据访问的一些常用方式
类型 特点 场合 优缺点分析 Native Java API 最常规和高效的访问方式 适合MapReduce作业并行批处理HBase表数据     Hbase Shell HBase的命令行工具,最简单的访问方式 适合HBase管理使用   T...
1360 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7751 0
SmartRefreshLayout + BaseRecyclerviewAdapterHelper 使用MVP方式实现下拉刷新
关键字:SmartRefreshLayout使用 下拉刷新 上拉加载 BaseRecyclerviewAdapterHelper 前言 下拉刷新和上拉加载是每个APP中最基本的功能,这里将这个功能进行整理。
3621 0
JAVA实现Base64编码的三种方式
摘要: Javabase64编码的三种方式   有如下三种方式: 方式一:commons-codec.jar Java代码  1. String base64String="whuang123"; 2.
869 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
16819 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
3227 0
+关注
1
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载