阿里HBase的数据管道设施实践与演进

摘要: 大数据生态下有着丰富多样的系统:流计算,数据存储,实时分析,离线计算,数据在各个异构系统之间的流转和加工而产生价值,高效的数据传输通道是大数据生态的重要一环。本文描述了阿里HBase团队在数据通道上多年的实践经验,主要讲解在主备容灾,高吞吐低延时等方面的挑战和解决方案。

 

福利:国际顶级盛会HBaseCon Asia 2018将于8月在北京举行,目前正免费开放申请中,更多详情参考https://yq.aliyun.com/promotion/631

如果你对大数据存储、分布式数据库、HBase等感兴趣,欢迎加入我们,一起做最好的大数据在线存储,职位参考及联系方式:https://maimai.cn/job?webjid=1heZGIyM4&srcu=1aOrffoj1&src=app&fr=my_jobsrecruit_job


摘要:第九届中国数据库技术大会,阿里巴巴技术专家孟庆义对阿里HBase的数据管道设施实践与演进进行了讲解。主要从数据导入场景、 HBase Bulkload功能、HImporter系统、数据导出场景、HExporter系统这些部分进行了讲述。
直播视频请点击
PPT下载请点击
精彩视频整理:

数据导入场景

生意参谋

生意参谋是一种为商家服务,帮助商家进行决策和运营的数据产品。如在淘宝或天猫上开一家店,生意参谋会提供店里每天进入的流量、转化率、客户的画像和同行业进行对比这些数据属于什么位置。商家可以根据流量分析、活动分析和行业分析去进行决策。可以根据平时日志、点击量和访问量,数据库把数据通过实时的流处理写入HBase。有一部分写到离线系统里,定期做一些清洗和计算再写入HBase,然后供业务去查询 HBase。

蚂蚁风控

在蚂蚁上任何一笔交易支付都会调用风控,风控主要是去看这次交易是否属于同一个设备,是否是经常交易的地点,以及交易的店铺信息。它必须在100ms—200ms把风险做完,风控是根据长期的历史信息、近期历史的信息和实时的信息三个方向做综合考量。用户的输入会实时的写入HBase,同时这个实时的信息增量也会导入到离线系统里面,离线系统会定期的对数据进行计算,计算的数据结果会作为历史或近期历史再写回HBase,一个支付可能会调百十次的风控,而且需要在百毫秒内进行返回。

数据导入需要解决的问题

2013年刚刚开始做数据导入的时候面临的更多的是功能需求性的问题,现在需要考虑的是导入的周期性调度、异构数据源多、导入效率高和多集群下的数据一致性的问题。前两个问题更适合由平台化去解决,HBase的数据导入更关注的是导入效率和多集群下的数据的一致性。

什么是Bulkload?Bulkload有什么功能?

 

_1


Bulkload使用的是一种新的结构LSM Tree进行写入更新,其结构如上图所示。使用Application code 进行数据写入,数据会被写入到MemStore,MemStore在HBase里是一个跳表,可以把它看成一个有序的列表,并不断往里面插入数据。当数据达到一定量时就会启动flush对数据进行编码和压缩,并写成HFile。HFile是由索引块和数据块组成的文件结构,其特点是只读性,生成HFile之后就不可改了。当用户进行读取数据的时候,就会从三个HFile和一个MemStore进行查找进行读取。这个结构的优化就是就把随机的写变成了有序的写。Bulkload就可以把上千上万条数据在毫秒内加入到HBase里。所以Bulkload的优势如下:

  • 高吞吐
  • 不需要WAL
  • 避免small compaction
  • 支持离线构建

    _2

 


Bulkload的导入结构如上图所示,数据来源于数仓,首先根据HBase的分区规则对数据进行分区和排序。然后会生成Partition Data,需要写一个HBase插进去。同步中心就会调动一个作业,作业内部会有很多的tasks,每个task独立的执行把文件读出,写到HDFS上,形成一个HFile文件。当把所有文件写完,同步中心就会调Bulkload指令到HBase,把所有的HFile一次性的load进去。
以前采用的是多集群导入的方法,但是多集群导入有很多缺点如下:

  • 很难保证多个任务同时完成,导致一定时间窗口内数据不一致
  • 调度后的运行环境不一致
  • 网络延迟不一致
  • 失败重试
    集群部署对业务不透明的缺点:
  • 需要配置多个任务
  • 集群迁移需要重新配置任务
    为了保证数据的一致性,采用了逻辑集群导入法。

 

_3

逻辑集群的流程如上图所示,首先进行分区合并,然后进行双数据流处理,把流分别写到Active和Backup里,当Active和Backup的HFile文件写完后执行Bulkload。因为Bulkload是毫秒级别的,所以能实现一致性。
多任务和逻辑集群的差别比较如下:

  • 多任务模式:需要重复配置,是不透明的,很难保证一致性,分区排序
    需要执行两次,编码压缩两次。
  • 逻辑集群模式:配置一次,迁移无感知,在一致性上达到毫秒级,分区排序是执行一次,但分区数量变多,编码压缩一次。
    随着业务做得越来越大,这种导入就会遇到新的线上问题,如扩展性、资源利用率、研发效率、监控等。

什么是HImporter系统?

HImporter是用于辅助数据同步的中间层,他会把所有HFile的构建,加载逻辑下沉到HImporter层。

_4


HImporter所处的位置如上图所示。

HImporter的优势

  • 分布式水平扩展,同一个作业的不同任务可以调度到HImporter的不同worker节点
  • 提高资源利用率,将压缩等CPU密集操作下降到HImporter
  • 快速迭代,HImporter的运维和迭代与同步中心独立
  • 独立监控,HImporter可按照自己的需求实现监控

HImporter 功能迭代

功能迭代主要包括表属性感知、保证本地化率、支持轻量计算和安全隔离。其中表属性感知就是感知特性,并保证特征不会变,主要包括、混合存储、新压缩编码、表级别副本数;保证本地化率是将Hfile写入到分区所在服务器,保证本地化率和存储特性,对一些rt敏感的业务效果明显;支持轻量计算就是支持MD5,字符串拼接等函数;安全隔离是避免对外暴露HDFS地址、支持Task级别重试。

数据导出场景

菜鸟联盟

 

_5


菜鸟联盟的场景如上图所示。一个物流详情会传到HBase,HBase会传到数据仓库,数据仓会产生报表,然后去训练路由算法。

淘宝客服

 

_6


淘宝客服的一个退款应用场景如上图。这是一个逆向链接,把退款、纠纷、退款物流、退款费用等实时的写入到HBase里,HBase会实时的写入queue里,blink流系统会消费queue产生一些数据会返回到HBase,blink输出会支撑智能服务、客户监控等。

增量数据导出需要解决的问题

增量数据导出需要解决的问题主要是离线数据的T+1处理特点、吞吐量 、实时性、主备流量切换等。
早期的方案是会周期性的从HDFS里把所有的日志罗列出来,然后对日志进行排序会产生一个有序的时间流。取work里同步时间最短的作为最终的同步时间。这种方案具有对NN节点造成很大压力、无法应对主备切换、日志热点处理能力低等问题。

HExporter系统

 

_7


HExporter1.0如上图所示,HExporter1.0优势主要有主备流量切换不影响数据导出,能够识别数据来源,过滤非原始数据;独立的同步时间流,能够保障数据按有序时间分区Dump到数据仓库;复用HBase replication框架,能够降低开发工作量,复用HBase的监控,运维体系。
HExporter1.0 优化主要包括以下五点:

  • 减少拓扑网络中的数据发送,备库避免向Exporter发送重复数据;
  • 远程辅助消化器,空闲的机器帮助消化热点;
  • 避免发送小包,HExporter在接收到小包后,等待一段时间再处理;
  • 同步通道配置隔离,实时消费链路和离线消费链路可以采用不同的配置;
  • 数据发送前压缩。
    HExporter1.0的问题是业务写入流量产生高峰,离线出现同步延迟;HBase升级速度慢。然后我们就有了以下解决思路,离线同步的资源可以和在线资源隔离,利用离线大池子可以削峰填谷;Exporter的worker是无状态的,如果把所有逻辑都放在Exporter,那么升级、扩容会简单快速。然后就产生了HExporter2.0。

 

_8


HExporter2.0如上图所示

总结

ALiHBase数据通道的导入和导出都是添加了中间层,中间层的核心价值易扩展、可靠性高、迭代快和稳定。因为采用分布式水平扩展更易扩展;采用自主识别主备切换,封装对HBase访问更可靠;采用架构解耦,快速迭代使迭代速度更快;因为无状态,节点对等所以更加稳定。

 原文链接

本文为云栖社区原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gradle官方文档_Spring Boot+Gradle+MyBatisPlus3.x搭建企业级的后台分离框架

你再主动一点点 我们就有故事了原文:toutiao.com/i68614564967402706041、技术选型解析器:FastJSON开发工具:JDK1.8 、Gradle、IDEA技术框架:SpringBoot 2.1.5.RELEASEORM技术:MyBatisPlus3.1.2数据库:My…

java random用法_JAVA面试题(1)

1.Java内部类和子类之间有什么区别?答案:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类 中定义的所有变量和方法。子类是从父类(superclass)中继承的类,子类可以访问父类所有public和…

【不了解你就OUT了】云原生基本原则

戳蓝字“CSDN云计算”关注我们哦!作者 | 架构师技术联盟责编 | 阿秃云原生指的是一个敏捷的工程团队,遵循敏捷的研发原则,使用高度自动化的研发工具,开发基于云基础设施和服务的应用以满足快速变化的客户需求。这些应用采用弹性&…

如何降低90%Java垃圾回收时间?以阿里HBase的GC优化实践为例

摘要: GC一直是Java应用中讨论的一个热门话题,尤其在像HBase这样的大型在线存储系统中,大堆下(百GB)的GC停顿延迟产生的在线实时影响,成为内核和应用开发者的一大痛点。 过去的一年里,我们准备在Ali-HBase上突破这个被…

会不会导致内存泄漏_Java内存泄漏!为什么会泄漏?如何泄漏?怎么定位?

JVM应该可以算Java中最为核心的部分了,其中开箱即用的内存管理又是JVM中的核心组成部分。我们都知道JVM的内存管理具有垃圾回收功能(Java Garbage Collector),编码时只需要new而无需主动的释放(类似于C中的delete操作),所以Java中比较少出现内…

看了三张照片,这个AI只用20分钟破获六年“悬案”

摘要: 浙江实现首个AI破案:钱某某夫妇在衢州“国字号”水利风景区信安湖使用“电鱼”方式偷了六年鱼,但由于缺少证据始终无法定罪,然而最终没有逃过衢州城市大脑的AI神眼。 近日,浙江实现首个AI破案:钱某某…

c语言 异或_编程入门:C语言基础知识全网超全不用到处找了!(文末附清单)

你背或者不背,干货就在那里,不悲不喜你学或者不学,编程就在那里,不来不去听到这话的你是否略感扎心?01基础知识1. 计算机系统的主要技术指标与系统配置。2. 计算机系统、硬件、软件及其相互关系。3. 微机硬件系统的基本…

oracle中如何创建表的自增ID(通过序列)

1、什么是序列呢?序列是一数据库对象,利用它可生成唯一的整数。一般使用序列自动地生成主码值。一个序列的值是由特别的Oracle程序自动生成,因而序列避免了在运用层实现序列而引起的性能瓶颈。Oracle序列允许同时生成多个序列号,而…

反转!以视频搜视频,这批 AI 程序员要逆天了!

抖音AI火了!以图搜图,已经无法满足我们了。近期抖音新功能以视频搜视频上新,不知小姐姐叫什么,也能搜出她的影像!比如,你捕捉了一只可爱的妹子,想要看到更多她的影像,只要点一下“识…

阿里云消息队列Kafka商业化:支持消息无缝迁移到云上

摘要: 7月25日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态。在兼容Apache生态的基础上,阿里云消息队列Kafka彻底解决了开源产品稳定性不足的痛点,可用性达99.9%,数据可靠性99.999999%,并…

excel三维地图数据源引用无效_Excel函数公式应用的基础,数据源的引用,动图解释...

一、数据源的相对引用公式的使用就是对数据源的引用,默认使用相对引用方式。采用这种方式引用的数据源,当将公式复制到其他位置时,公式中的单元格地址会随着变化。方法:1、选中C2单元格,在公式编辑栏中可以看到该单元格…

一份帮助你更好地理解深度学习的资源清单

摘要: 深度学习朝着可解释的方向发展,理解背后的基本原理显得更加重要。本文是一份帮助读者更好地理解深度学习基本过程的清单,便于初学者和部分起步者针对性地补充自己的知识体系。 人工智能和深度学习太火了,火得一塌糊涂&#…

python 按条件选择行和列数据_小白学数据结构-排序算法Python(冒泡、选择、快速、希尔等等)...

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内…

【戳进来有福利】|【技巧帖】3个Tips提升云性能

戳蓝字“CSDN云计算”关注我们哦!作者 | David Linthicum转自 | InfoWorld翻译 | 孔子东游责编 | 阿秃当企业遭遇云计算性能瓶颈时,一般人能想到的而且是最简单的办法,就是针对那些表现不佳的工作负载来增加可用的资源数量。具体来说&#x…

目标检测技术演化:从R-CNN到Faster R-CNN

摘要: 一文了解目标检测技术发展,不要错过哟。 目标检测旨在准确地找到给定图片中物体的位置,并将其正确分类。准确地来讲,目标检测需要确定目标是什么以及对其定位。 然而,想要解决这个问题并不容易。因为&#xff…

关于解决jdbc版本错误问题

关于解决jdbc版本错误问题 最近在做一个项目,在使用IDEA测试某个接口时出现了这个异常: 然后百度了一下发现很多都说是mysql-connector-java.jar包版本不一样,或者是jdbc.properties文件内容出错。 一定要仔细检查自己的数据库名跟账户密码…

深度学习之优化详解:batch normalization

摘要: 一项优化神经网络的技术,点进来了解一下? 认识上图这些人吗?这些人把自己叫做“The Myth Busters”,为什么?在他们的启发下,我们才会在Paperspace做类似的事情。我们要解决是Batch Normal…

无法通过sak判断卡片类型_如何判断你家门能否更换智能锁?选锁门道你要懂!...

选择智能锁有三个门道,你不可不知。门道一:小心“特斯拉线圈”攻击去年在智能锁行业,最能刷屏的是“特斯拉线圈”事件,多个智能锁品牌被轻易入侵攻陷,让消费者关注智能锁的安全问题。行业人士建议消费者:将…

@程序员 天冷了,你准备抱键盘还是抱女朋友取暖?

01恭喜你已经过完了2019年所有的法定节假日有没有一点心寒但随之而来的冷空气更是肉体上的折磨真想说这个天气说好的春夏秋冬的呢为什么我只感受到了夏天和冬天骗子!02手里拿着抽纸随时准备擦去感冒导致的鼻涕不行,我要穿厚衣服打开我的衣橱咦&#xff1…

改变世界的七大NLP技术,你了解多少?(下)

摘要: 这里有改变世界的7大NLP技术,点进来了解一下吧! 改变世界的七大NLP技术,你了解多少?(上) 在第1部分中,我介绍了自然语言处理(NLP)领域以及为其提供支持…