分享
Scan me 分享到微信

漫谈地图“开放平台”大数据技术

开放平台背后大数据的故事

  本文作者:帝都小肥羊。更多内容请关注:Map_technology。

  随着时下“大数据”概念的火热,各方群雄都不能免俗的炒作起来。这里面有一些人,不过是随波逐流的看热闹,而另一些人,则是由于团队业务的快速发展,真真切切的需要一种技术手段,来解决业务发展中的难题。在这种不断挑战业务难题的实战中,各家都锻炼出了自己独门的大数据领域相关技术架构。

  地图的业务体量很大,每天产生的数据量亦很可观,诸如大家耳熟能详的每天几百亿次的定位,百亿次的客户端访问等等,这些数据构成了地图大数据计算的原材料。依赖这些丰富的原始素材,我们的道路、导航、轨迹、开放平台等迭代进化,反哺用户端产品的体验不断提升,构成了用户和平台的双赢。而今天我们就把目光,聚焦在地图“开放平台”背后的大数据技术上,谈谈“开放平台”背后的大数据故事。

泰伯网

  “开放平台”的大数据业务,兴起于2013年,彼时平台面临的数据量大约每天百亿级别,如何将这么庞大的数据从各个地方收集上来,是我们面临的第一个难题,我们就从数据收集和交换这个环节开始讲起。

  数据交换

  从时效性上,数据的收集分为“实时”和“离线”(T+1)两种形态,从数据来源上,一般我们有日志和DB数据两类相对普遍的来源。

  就日志收集而言,无论是实时还是离线,我们的核心产品都复用了公司基础架构部的系统组件,类比于开源产品的flume、kafka等。在一些特定的业务场景下,我们也搭建了一套flume+kafka的数据传输流,以做到面对快速发展小业务必须的灵活性。

  就DB数据收集而言,除却前文的架构,我们还需要一种将DB数据实时发送给下游的方案,诸如同步、解析binlog,然后转发消息队列等。目前我们同步使用了公司级的databus和开源的canal,背后的理念类似,后续我们会逐步收敛到一种架构上去,减少维护成本。

  离线计算

  数据交换的终点,通常是Hadoop集群,在这里我们需要完成复杂数据的多维度、多层次的计算和存储,最终构建一套开放平台的数据仓库体系。

  在数据仓库的内容组织上,我们一直在学习银行、电信等“传统”领域的宝贵经验,力争在快速变化的互联网产品架构下,寻找一种相对稳定,可长期演变的数据模型设计之道。由于内容的组织和业务紧相关,不具备普适性意义,这里不多展开。

  在数据计算上,我们重度依赖公司级的Hadoop集群。在这之上,我们构建了一套相对完备的数据计算平台系统,包括“任务调度”“资源管理”“元数据”“质量监控”等等。

  任务调度系统,它承载了每天万级别任务的自动触发、回溯,解决了传统crontab在任务规模上升后,维护低效的问题,且更加直观。

  资源管理系统,它承载了平台上所有任务的自动分析,以任务的优化、资源的节约为第一要务,通过开源节流里“节流”的方式,尽可能提高平台的计算效率。

  元数据系统,它是我们所有系统的meta系统,是其他系统高效运转的“起点”。

  质量监控系统,它承载了平台每天万级别任务的基础监控和应用级质量控制,解决了数据不产出、异常波动等各种非常规场景的自动发现,力争缩短异常“发生”“发现”“解决”等环节的时间,保障上层业务的高效运转。

  在数据存储上,由于数据量级的庞大,且对于不可再生数据我们的观点是永久存储,因此除了日常计算的“热数据”,相对久远的冷数据,我们亦通过计算性能相对弱一些的冷备集群来进行永久保存。

  实时计算

  相对于离线计算,实时计算的场景会更加聚焦、直观,比如地图“热力图”产品,背后就是对每天百亿次定位请求的宏观实时分析。

  在实时计算上,我们也复用了有OP运维的公司级架构,类比开源产品的话,可以近似看作是“storm”。通过简单的“importer”“task processor”“exporter”等概念模块,完成复杂实时流计算业务。

  查询引擎

  在数据通过“实时”“离线”等不同技术栈处理完成后,需要一套面向用户的暴露机制,这种暴露机制也和上层产品的形态有一定的关联。

  在常见的报表产品上,我们通过mysql来存储报表数据,背后的理据一方面是报表型数据一般量级较小,关系型数据库能够承载,另一方面是由于sql对大部分研发而言,是非常友好的语言。

  对面向C端用户的数据查询上,我们部分使用了Redis来存储偏kv型的数据,以获取足够高的访问性能。

  对面向内部决策分析的产品经理、运营等同学,我们提供了一套多维分析架构的数据引擎,来解决亿级、多维、cube查询模式下的业务人员诉求,这套体系基于Apache Kylin来进行搭建和二次开发。

  从进一步发展看,除了上面这些系统,基于MPP架构的adhoc query是我们目前比较明显的能力gap,也会作为下一步的重点去发展,并结合元数据,给终端用户一种更友好和自由的数据分析能力。

  数据产品

  一切大数据技术,都是为了支撑上层的产品形态,目前我们典型的产品形态包括报表平台、多维分析平台、热力图、面向B端的web产品等。背后一般是典型的LAMP架构,对数据可视化技术也是一种挑战。我们亦开源了一套可视化的js库mapv,参见http://mapv.baidu.com/

  写在最后

  地图开放平台的大数据技术,历经三年多的发展,逐步形成了相对完备的技术栈和团队梯队。同步的,业务的形态还在不断演变,我们既有的技术形态亦会快速演变。在技术演进上,我们没有完美且一成不变的“银弹”,保持技术的敬畏和开放的初心,相信明天会更美好。

     如果您对您所在行业有很深认知,也想在我们的平台上说点什么,我们欢迎您来投稿!

参与评论

【登录后才能评论哦!点击

  • {{item.username}}

    {{item.content}}

    {{item.created_at}}
    {{item.support}}
    回复{{item.replynum}}
    {{child.username}} 回复 {{child.to_username}}:{{child.content}}

更多精选文章推荐