Druid 在小米公司部分技术实践

引言:Druid作为一款开源的实时大数据分析软件,自诞生以来,凭借自己优秀的特质,不仅逐渐在技术圈收获了越来越多的知名度与口碑,并且陆续成为了很多技术团队解决方案中的关键一环,从而真正在很多公司的技术栈中赢得了一席之地。
   本文通过对小米公司技术团队对Druid 的实践案例与经验的介绍,让大家对Druid有更加全面和深入的了解,希望能够帮助你事半功倍地学习Druid 这项年轻的技术。
   本文选自《Druid实时大数据分析原理与实践》。

  小米公司正式成立于2010 年4 月,是一家专注于高端智能手机、互联网电视以及智能家居生态链建设的创新型科技企业。
  “让每个人都能享受科技的乐趣”是小米公司的愿景。小米公司应用互联网模式开发产品,用工匠精神做产品,用互联网模式节省了中间环节,致力于让全球每个人都能享用来自中国的优质科技产品。
           
                     小米大云平台技术架构示意图

  Druid 在数据分析层帮助实时收集海量的事件数据,快速进行商业分析,在多个场景中都有应用。这里介绍Druid 在小米统计产品和小米广告平台中的部分技术实践。

场景一:小米统计服务

  小米统计是小米为App 开发者提供的移动应用数据统计服务,帮助开发者通过数据了解应用发展状况、渠道推广效果和用户参与情况等信息,使开发者可以更好地优化体验和运营,促进产品不断发展进步。小米统计的入口是tongji.xiaomi.com,服务界面如下。
               
                     小米统计服务界面

  实时的数据分析重要需求,在产品发展过程中,也经历了几个技术阶段,这几个阶段并非完全互斥,而是应用于不同的场景和时间。
  第一阶段:数据存储在Hadoop 中,通过MapReduce 的脚本进行分析和处理。有一部分复杂的任务会以天为单位被执行,并且最后会将结果写入到如MySQL 的RDBMS 中。
  第二阶段:在业务发展过程中MySQL 很快变成了瓶颈,有两个原因,一是数据库的Schema 更改成本高,新业务不断需要增加新列和新表,流程烦琐而且需要进行Schema 设计;二是在进行大量写操作的情况下,数据库的负载增加会导致数据库的读性能下降,而且偶尔有死锁的现象。为了解决这些问题,引入了HBase 作为主要存储数据库,利用HBase 的列族,方便增加数据列。另外,HBase 的可用性也高于MySQL。
  第三阶段:为了改进数据的实时性,后期增加了Storm 分布式计算模式,使用Storm 可以方便地进行各种复杂的数据处理,各种聚合和处理需要通过程序实现,增加一个数据维度,改动比较大,需要从上游到下游整体修改。这种方式的优点是可靠性好,数据处理能力强,可以进行各种角度的优化。
  第四阶段:小米统计的很多数据查询都是选择一些指标和过滤条件,很多场景类似于传统的数据仓库,因此引入Druid 处理一些标准报告的实时数据查询场景。数据流会依次通过Kaa 和Tranquility,最后进入Druid 集群。Druid 集群最终能提供最近一天的数据查询功能,并且允许用户直接访问。
                 
                      小米统计数据流

  Druid 作为一种实时分析数据库,提升了小米大数据平台和商业产品部门的实时数据分析能力。

场景二:广告平台实时数据分析

  Druid 来源于广告业务,小米广告平台也利用Druid 进行实时的数据分析,帮助实时分析线上的各种维度的变化,包括上线部署的实时监控分析、A/B 测试的效果查询、一些细粒度的数据分析。
  对广告数据有两条路径进行处理:一条是实时的数据流,通过Druid 处理,主要是针对内部的实时数据分析需求;另一条是通过Mini-batch 方式。
  数据的DataSource(数据源)包括:

  • 小米广告交易平台(Xiaomi Ad Exchange, MAX):广告流量的调度管理平台。
  • 广告平台的计费分析模块:广告主的计费、各种维度数据。
  • 广告媒体分析数据:各个广告媒体的请求、展现等数据。

比如对于广告计费分析模块,Druid 会包括实时的广告主计费信息,这些数据用于内部的数据分析,不用于广告主投放平台。广告主投放平台使用Mini-batch 方式,通过可重放的方式更新和聚合数据结果。
  在使用Druid 的过程中也会碰到一些问题。

1. 关于查询界面

  Druid 的查询语言还不是特别友好,在第一阶段部署Druid 后,我们开发了一套Druid查询接口,主要是满足业务的需求,初期效果还好,但是随着数据源的增加,每次增加数据源都需要额外开发一些界面,增加维度,也需要修改前端工程,因此效率也不高。在后期的工作中,尝试了Pivot 工具,功能使用方便,渐渐代替了自定义的查询界面。

2. 关于查询效率

  Druid 的大部分时间性能表现都很好,但是如果进行长时间范围的查询,系统会变得非常慢。为了解决这个问题,对于频繁查询的数据源,可以分为两个部分:一部分是按照分钟级别聚合的数据源,数据保持10 天;另一部分是按照小时级别聚合的数据源,数据保持2年。每天晚上的时候,聚合小时级别的数据,这样可以避开高负载的集群时间。聚合粒度与查询效率的关系如下。
            
                       聚合粒度与查询效率的关系

3. 部署情况

  Druid 集群每天处理近百亿的事件请求,集群规模为近10 台机器,索引服务和历史节点数量相当,机器的数量随着事件数的增长而增加。当数据源在某时间数据急剧增加时,系统索引文件所占用的CPU 会很高,有时候影响正常的查询性能。
  第一阶段,我们尝试在服务层使用流量控制,但是后来放弃了。原因是,数据在1 小时后会有过期机制,因此如果有数据无法进入系统,那么这些数据可能丢失。因此,我们还是尽量让数据进入Druid 系统,虽然偶尔会带来系统的峰值压力。
基于Druid 的架构和数据流如下。
             
                       基于Druid 的架构和数据流

  “纸上得来终觉浅,绝知此事要躬行”,如同学习其他技术一样,掌握Druid 最好的方法就是实践,因此大家在对Druid 有了一定的认识后应该尽快上手练习,并且争取早日将其应用到自己的实际工作中,在战斗中学习战斗,让在实践中碰到的问题驱动自己对Druid 技术的学习和理解。

  本文选自《Druid实时大数据分析原理与实践》,点此链接可在博文视点官网查看此书。
                    
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                       

时间: 2024-11-03 17:44:56

Druid 在小米公司部分技术实践的相关文章

小米崔建伟答疑HBase在小米中的应用实践

2014年3月25日,CSDN在线培训:HBase在小米中的应用实践圆满结束,本次培训讲师是来自小米的崔建伟,他表示随着小米业务的逐渐扩展,特别是大数据时代的到来,原有的关系型数据库MySQL已经逐渐无法满足需求,因此向NoSQL迁移是很自然的事情. CSDN在线培训是专为广大技术从业人员准备的在线实时互动技术培训,邀请各个行业一线技术工程师分享他们工作中遇见的各种问题以及解决方案,同时给大家带来一些新技术.思路.解决方案! CSDN在线培训以"经典性.实战性.系统性.前瞻性.专业性"

阿里中间件技术专家魏鹏:基于Java容器的多应用部署技术实践

首届阿里巴巴在线技术峰会(Alibaba Online Technology Summit),将于7月19日-21日 20:00-21:30 在线举办.本次峰会邀请到阿里集团9位技术大V,分享电商架构.安全.数据处理.数据库.多应用部署.互动技术.Docker持续交付与微服务等一线实战经验,解读最新技术在阿里集团的应用实践. 阿里巴巴在线技术峰会专题:https://yq.aliyun.com/activity/97峰会统一报名链接:https://yq.aliyun.com/webinar/j

小米公司新投资了无人机研发团队飞米

摘要: 科技圈当下热点非无人机莫属,无论是闯入白宫还是助力汪峰求婚上头条,无人机曝光度逐日飙升,新时代大玩具的商用价值也正迅速挖掘.近日就有传闻,小米公司新投资了无人机研 科技圈当下热点非无人机莫属,无论是"闯入"白宫还是助力汪峰求婚上头条,无人机曝光度逐日飙升,新时代"大玩具"的商用价值也正迅速挖掘.近日就有传闻,小米公司新投资了无人机研发团队飞米.上周淘宝与圆通联合商家在北京等地特定区域进行了无人机送货服务. 随着在包括航拍.快递.安防领域被渐渐应用,无人机的商

大拿在跨国机房数据同步等方面的最佳技术实践

4月20日,云栖大会深圳峰会在大中华深圳喜来登酒店隆重召开.本文根据深圳市大拿科技有限公司副总王彬文在海外分会场中题为<扬帆出海,阿里护航>演讲整理而成.王彬文在演讲中深入分享了大拿所面临的技术挑战,以及如何成功实现跨国机房数据同步.高并发.大数据分析等方面的技术实践经验.   以下是演讲内容整理:   首先非常感谢阿里给予此次机会同大家一起交流分享下大拿在做国际业务时的经验.今天的分享主要分为两个部分:第一是大拿是做什么的?第二个部分是大拿在开拓海外市场的过程中遇到什么问题,阿里云帮助我们解

电商架构技术实践的秘诀:成功就在那里,快了才是你的!

近期电商技术实战的内容非常丰富,4月15日在清华大学举办2016 ATF阿里技术论坛上的<电商技术:零到三万亿,从未停止的技术创新>,一次性分享了5位技术大神的技术干货: 淘宝移动平台事业部总经理庄卓然(南天):掌上精彩,连接过去与未来 阿里巴巴速卖通技术部总监郭东白(阿白):全球买全球卖,国际化的技术挑战 阿里巴巴资深总监司罗:阿里电商大脑,比你更懂你 阿里巴巴研究员墙辉(玄难):如何做电商业务中台 阿里巴巴研究员蒋江伟(小邪):双十一背后的分布式技术 不止这些.4月20日,云栖大会深圳峰会

下一代超大规模软件定义网络技术实践

云计算的 IT 架构已经在企业应用中表现出明显优势,但网络设计理念却必须是一种推倒重来的思想.为了适应云计算的灵活.弹性扩展.高效和低成本,网络设计要进化为集中式软件管理,可编程化,控制转发层面分离等.本次陈海泉分享了关于下一代超大规模软件定义网络技术实践. 以下是本次分享的内容整理. 大家好,我是 QingCloud 的工程师陈海泉,今天给大家分享一些 SDN/NFV 2.0 架构的网络技术.我解释一下什么是 SDN,SDN 就是软件定义网络.当然也不是所有网络定制一定要软件来实现,因为有很多

全球最热门的NoSQL系统——MongoDB技术实践与探索

中国云计算产业最具影响力的盛会之一--2016杭州云栖大会(https://yunqi.aliyun.com/)将在云栖小镇召开.连续举办七届的云栖大会一直是业界了解阿里云计算生态发展和应用趋势.体验前沿技术和产品的最佳平台,来自海内外的上万名开发者.创业者聚集于此,分享着他们对云计算的思考与实践经验.7年来,从产品发布到行业解决方案展示,从关注技术到技术与服务并重,从单一的客户到生态全景的展现,大会的核心内容一直在"进化",而2016年杭州云栖大会,则以"飞天・进化&quo

周卫林谈支付宝大数据技术实践及应用

文章讲的是周卫林谈支付宝大数据技术实践及应用,第三届Oracle技术嘉年华再度来袭!作为国内顶尖级别的Oracle数据库技术盛会,现场邀请到Jonathan Lewis,Tim Gorman等Oracle数据库领域国际级专家,特别为中国的数据库爱好者带来他们多年的总结与经验分享.另外,来自Linkedin.Salesforce.京东.1号店.百度.360.淘宝.阿里巴巴.支付宝.移动.联通等公司的核心数据库专家.架构师为各位朋友带来国内最新的数据库领域应用及最佳实践分享. ▲支付宝DW/BI高级

大规模代码构建技术实践

在云效持续集成持续交付专场直播中,阿里技术专家何卫龙为大家带来了<大规模代码构建技术实践>的分享.本次分享主要从持续集成的背景,持续集成平台的演进过程,以及如何进行大规模持续集成构建三部分展开,内容精彩,不容错过. 以下内容根据讲师PPT和视频整理而成. 什么是持续集成? 大师Martin Fowler认为持续集成是一种软件开发实践,在实践中团队开发成员会频繁的进行任务的集成,通常每个成员每天都会集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建来验证,从而尽快地发现集成错