代志远早年就职网易研究院从事MapReduce与DFS系统的自主研发,后增加支付宝数据平台负责Hadoop与HBase体系的架构设计与二次研发,支付宝流计算与分布式搜索系统的设计和研发,后成为支付宝海量计算体系架构师兼支付宝三代架构成员。现就转战于阿里巴巴集团-CDO-海量数据部门。负责创新性项目的研究和跟进,眼下专注于Google第二代数据库产品MegaStore的研究和在阿里的落地。

在即将召开的HBTC大会中。我们有幸邀请到代志远作为我们的演讲嘉宾,请他分享下阿里巴巴在海量数据分布式数据库领域的探索。我们也对他提前做了邮件採訪,让用户能够更快地了解阿里巴巴海量数据分布式数据库以及在Hadoop应用领域的实践。

阿里巴巴海量数据部门: 代志远

CSDN: Hadoop眼下是大数据处理领域的王者,你觉得中小企业应用Hadoop的瓶颈在哪里?

代志远:首先由于Hadoop本身机制复杂,所依赖的參数配置颇多。并且Hadoop须要像数据库一样稳定,满足性能的执行,就须要运维人员如同DBA一样要懂网络、磁盘、内核以及其它一些硬件知识。这对于运维人员的要求是比較高的。其次Hadoop社区蓬勃发展,生态圈不断扩大。用户不断增多,规模极限也不断突破。这就促使了Hadoop的架构和代码发展非常快并且变更也比較快。正由于如此,系统在高速发展的时候easy引入非常多的Bug和一些缺陷(可能由于稍稍的使用不当或比較小的问题就引起总体性能和稳定性的波动)。更重要的是,Hadoop代码复杂,并且须要与社区接轨。可以找到对Hadoop源代码熟悉并能优化升级和bugfix的人才是非常难的。这对于一个公司的研发来说是个非常大的挑战。

最后一点是公司的认知,除了类似Cloudera、MapR之类的软件公司须要对软件技术负责。其它多数公司不管大中小都依赖于公司业务,尤当中小公司业务压力大、人员紧张,可以从业务研发人员中抽调或通过其它方式组建专有的Hadoop运维团队甚至是研发团队。从公司规划与发展上来说是比較困难的事情。

CSDN: Hadoop的本质是为全量而生。就是说它重吞吐量,响应时间全然没有保障。那么对于像淘宝、天猫在“双11”活动抢购的时候,须要实时处理数据(可能是毫秒级。秒级的响应),是怎样进行实现的?

代志远:Hadoop是离线计算平台,当中包含分布式文件系统(HDFS)和分布式计算(MapReduce)。这本身是无法对响应时间做保证的。

可是眼下在Hadoop之上的生态系统越来越完好。当中HBase就是支持海量数据、高并发的在线数据库,应对这样的场景就很适合。

HBase在这次双十一中与MySQL等在线数据库共同作为线上库使用,承担了重要的责任。并创下了并在全天高压力之下无故障的佳绩。另外非Hadoop生态圈的流式计算框架Storm、S4也相同能够为实时计算分担一定的压力。

CSDN: 你在云计算大会时做的一场有关HBase的报告,主要讲怎样用HBase替代MySQL,HBase对照MySQL的优势在哪里?

代志远:准确来说是HBase替换MySQL的一部分应用。这些应用自然是要符合HBase的应用场景(与MySQL对照),比方数据量大、对线性拓展有需求、对自己主动化运维(负载均衡)有要求并且应用模式简单。在支付宝中因其增长速度快,业务量大,造成了非常多应用都是数据量庞大并且速度增长快。因此有一些应用迫切须要一个数据库可以支撑如今的业务而减少对关系型的需求。所以尝试了HBase的解决方式。

CSDN: 阿里巴巴在部署Hadoop的过程中有哪些比較好的经验能够跟技术人员分享?

代志远:最重要的是要有一个完好团队,健全的流程。

  • 集群越来越大,要树立以集群稳定性和性能为要领的工作思路。

  • 如今进入Hadoop应用开发领域的人变多,但本身知识因其入行早晚而积累不同,无法对集群的稳定性负责。经常会写出跑死集群的任务(数据库中SQL使用不善也常会如此)。因此要有一个较好的管理流程约束开发者做到责任分明,以便促使应用开发不仅要对自己的任务负责还要对集群负责。不断学习和检查降低故障的产生。
  • 要有一个好的运维团队,懂硬件、重流程、负责任。
  • 公司在资源和战略上应有所倾斜,重视研发人员加强在研发的投入。毕竟分布式系统的入行门槛相比应用开发的技术门槛要高。当然有好的应用架构师可以取长补短规避大多数问题也是可行的,但单一系统的稳定性还是须要靠人来保证。

CSDN: 请您简要介绍一下本次HBTC2012大会上的议题的内容。

代志远:06年Google发表论文Bigtable,社区随之出现HBase,后Google 08年发表第二代数据库产品MegaStore至今未有社区同类产品出现,现今Google又出现新一代数据库理论Spanner和F1。 而近期几年随之Bigtable和NoSQL的兴起,社区产品HBase逐步走向NoSQL系统的主流产品,优势明显然而缺点也明显,大数据平台下的业务由SQL向NoSQL的迁移比較复杂而应用人员学习成本颇高。而且无法支持事务和多维索引,使得很多业务无法享用来自NoSQL系统中线性拓展能力。

Google内部MegaStore就作为Bigtable的一个补充而出现。在Bigtable的上层支持了SQL,事务、索引、跨机房灾备。并成为大名鼎鼎的Gmail、Google App Engine、Android Market的底层存储。因此我们决定以MegaStore为理论模型进行探索怎样在HBase系统上不牺牲线性拓展能力,同一时候又能提供跨行事务、索引、SQL的功能。

HBase系统故障恢复的优化实践

事实上在第四届中国云计算大会上,当时还在支付宝数据平台的架构师代志远就为大家带来了题为“HBase系统故障恢复的优化实践分享”的精彩演讲,他分析了支付宝海量数据在线处理的现状。以HBase解决方式代替传统MySQL解决方式的技术历程,并详尽分享了Region Server的宕机恢复流程(阅读全文)。

在Hadoop的体系其中。支持实时的一条线,HBase。支持海量数据库初衷的时候,设计为了设计万一级实时数据库。HBase这个东西经过这几年的发展。已经逐渐成为眼下业界其中基本的实时数据库,分布式数据库,像支付宝直接上HBase系统,就是考虑到HBase的先进架构,可以帮助支付宝完毕如今非常多的海量数据的存储以及在线随机读写高性能的訪问和存储。

只是在HBase的系统其中,体现它的可用性有几个风险。第一个是HBase本身在底层依赖的HDFS,载入了唯一一块数据,单台机器保证一致性,HDFS保持了冗余。第二点,恢复过程其中,Failover过程很复杂。这个时间消耗越长,作为在线系统,这样的时间越长可能会影响到在线訪问用户体验。第三点它依赖的HDFS,HBase作为在线数据库依赖HDFS有故障的,经过几小时恢复提供生产业务,对业务方没有直接感受,作为在线系统假设挂掉。假设须要经过近小时恢复时间,恐怕就会直接收到自于支付宝外部的用户投诉了。HBase眼下它自己的监控体系尚不完好。眼下的监控力度很得粗。仅仅能监控到单台的Region
Server的情况。看不到当前用户表有多少读写比例。看不到当前服务结点写作量多少,读出量多少。

Region Server在恢复过程其中有几个流程,这个流程很复杂。流程很许多。以当前的系统规模。它凸显出来的问题,这几个流程是影响到它的恢复速度的关键流程。等待时间周期很长。周期之所以比較长,是由于如今的机器发展速度很得快。每台机器从两个G到8个G,96G。140G的大层次的机器,Java语言实现了系统其中大内存管理本身存在问题,除非革新这门语言,否则别无他法。假设说在设计的參数不合理,就可能会导致一个问题。有可能这台server就会停止执行,发生这么一次情况就很可怕,几十G的内存这个过程须要几十秒甚至上分钟,通常情况下。我们会设置到3分钟,这就意味着,为了避免出现这样的问题,就会同一时候引入新的问题,宕机之后恢复等待时间须要三分钟。

第二个关键流程其中,当它感知到已经挂掉了,在线数据库协助WL数据又一次做到存储其中去,以保证实时更新是同步,否则这个数据库肯定要丢出去,重做数据过程其中。会有一个过程,Split
Hlog。跟当前数据量有关系,Edit Log数据又比較多。大家在业余时间能够进行測试。数据不以支付宝的为准,以当前数据系统大小为准。

第三个关键流程。重做完数据之后,这部分又一次上线,上线之前进行数据进行二次扫描,告诉系统。Region怎么增加到Region Server其中去,扫描也存在问题。问题可能引发到两分钟到6分钟。这也跟当前系统数据有关。第四部分,这个过程称之为再次上线的过程,这个再次上线,上线时间跟当前这台机器的Region上线有关系。

支付宝面对消费记录查询,用户查不出来数据。15分钟之后才干查到,在面临在线问题上这是很可怕的事情。

针对Region Server这一关键流程。做了一些优化。这个优化正是提到关键流程第一点。在推断宕机超市的情况下,不强依赖于Zookeeper,支付宝又启动了监控进程Mirror Process。每一台,Region Server其中都会起到PID存不存在,这样的检查并不是全然可靠。当检查PID不存在。就有理由觉得已经挂掉了,要进行可靠检查,通常DBA在线推断数据库是否可用。一般会用PIng连续服务port,这就弥补了系动中的调用命令不可靠的事情。最后当发现服务port不可用时。有理由觉得当前进程已经死掉了,死掉了之后。那么就依照现有逻辑删除结点,这三分钟的时间就全然省略掉了。

hbase能否代替mysql的更多相关文章

  1. 关于mapreducer 读取hbase数据 存入mysql的实现过程

    mapreducer编程模型是一种八股文的代码逻辑,就以用户行为分析求流存率的作为例子 1.map端来说:必须继承hadoop规定好的mapper类:在读取hbase数据时,已经有现成的接口 Tabl ...

  2. 读取hbase数据到mysql

    先写一个自己的MyRecordWriter类 extends RecordWriter package calllog; import java.io.IOException; import java ...

  3. 使用sqoop将MySQL数据库中的数据导入Hbase

    使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-con ...

  4. Mysql 到 Hbase 数据如何实时同步,强大的 Streamsets 告诉你

    很多情况大数据集群需要获取业务数据,用于分析.通常有两种方式: 业务直接或间接写入的方式 业务的关系型数据库同步到大数据集群的方式 第一种可以是在业务中编写代码,将觉得需要发送的数据发送到消息队列,最 ...

  5. Hbase(补充)

    1.用sqoop 从mysql数据库导入数据到hbase时: 可以用    sqoop list-databases --connect jdbc:mysql://192.168.1.152:3306 ...

  6. windows平台kettle连接hbase的问题

    我本机安装的环境是centos7,并在本机上安装了zookeeper,hadoop,hbase,hive等组件, 使用pdi7.1来连接hbase,把mysql表中的数据导出到hbase中去,没有问题 ...

  7. 从hive将数据导出到mysql(转)

    从hive将数据导出到mysql http://abloz.com 2012.7.20 author:周海汉 在上一篇文章<用sqoop进行mysql和hdfs系统间的数据互导>中,提到s ...

  8. HBase高可用原理与实践

    前言 前段时间有套线上HBase出了点小问题,导致该套HBase集群服务停止了2个小时,从而造成使用该套HBase作为数据存储的应用也出现了服务异常.在排查问题之余,我们不禁也在思考,以后再出现类似的 ...

  9. 3.12-3.16 Hbase集成hive、sqoop、hue

    一.Hbase集成hive https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration 1.说明 Hive与HBase整合在一起 ...

随机推荐

  1. 【java】【多线程】等待开启的多个线程都执行完成,再做事情,怎么实现

    今天在controller中写一个接口用来测试模拟多个请求同时到达 下订单的情况, 怎么能有效保证高并发下的库存和销量的一致性呢?[具体实现方法:https://www.cnblogs.com/sxd ...

  2. [Linux] Linux smaps接口文件结构

    在Linux内核 2.6.16中引入了一个系统内存接口特性,这个接口位于/proc/$pid/目录下的smaps文件中 ,一看内容发现是进程内存映像信息,比同一目录下的maps文件更详细些. 400d ...

  3. JQUERY中的事件处理:RETURN FALSE、阻止默认行为、阻止冒泡以及兼容性问题

    return false 在jQuery中,我们常用return false来阻止浏览器的默认行为,那"return false"到底做了什么? 当你每次调用"retur ...

  4. JavaWeb对RSA的使用

    由于公司的网站页面的表单提交是明文的post,虽说是https的页面,但还是有点隐患(https会不会被黑?反正明文逼格是差了点你得承认啊),所以上头吩咐我弄个RSA加密,客户端JS加密,然后服务器J ...

  5. 纯CSS实现多行文字垂直居中几种方法解析

    场景:父元素 高度固定,如何使其中的文字垂直居中? 1.table布局: 利用display:table+display:table-cell的方法 <!DOCTYPE html> < ...

  6. phpcms的后台网站直接访问正常,百度快照收录链接访问跳转到非法网站

    问题:    phpcms制作的网站直接访问正常,百度快照收录链接访问跳转到非法网站 百度快照收录网站域名,访问时自动跳转到一个非法网站 检查静态页index.html,index.php 网页内引用 ...

  7. g++编译问题:skipping incompatible /usr/lib//libboost_system.so when searching for -lboost_system

    接上. 连接器无法识别libboost_system.so,虽然找到了动态库文件libboost_system.so但不兼容,导致无法完成链接. 这种情况一般都是二进制不兼容(通俗的讲就是,在一台机器 ...

  8. 记一次vue2路由参数传递this指针问题

    需要船体一个data()内的对象到另一个页面. <player-card v-for="(note, key) in sortedtNodes" :imgurl=" ...

  9. QSignalMapper类的使用

    Qt中当定义了非常多的button,而他们的信号都同样时(比方都是点击信号),没有必要给他们每一个都设置信号和槽的链接.QSignalMapper给我们攻克了这个难题. 今天完毕这个相似的功能时,不知 ...

  10. Zend Guard Run-time support missing 问题的解决

    Zend Guard是目前市面上最成熟的PHP源码加密产品了. 刚好需要对自己的产品进行加密,折腾了一晚上,终于搞定,将碰到的问题及解决方法记录下来,方便日后需要,也可以帮助其他人. 我使用的是Wam ...