原文作者:友盟数据平台架构师吴磊
数据是移动互联网的主旋律,面对海量的数据,友盟平台的开源大数据系统是如何实践的?日前,友盟数据平台架构师磊叔在 2015 年 DTCC
数据库技术大会上分享了他的一些感想。
从友盟 24 小时采样数据绘成的全球移动互联网用户活跃度的图像中,可以看出,中国居于全球最为突出的区域。仅友盟数据平台就已经累积了超过 5PB 的移动互联网历史数据,并且这些数据正以每天 5TB 的速度快速增长。
友盟是一家成立于 2010 年 4 月的移动应用分析平台,目前拥有 52 万 App。磊叔按照大数据的“采集 —— 传输 —— 处理 —— 存储 —— 分析 —— 展示”这个流程介绍了友盟移动应用分析平台架构的变迁。
友盟移动应用分析平台在成立初期采用了 Ruby on Rails 框架,但是随着移动互联网的爆发式增长,很快这个传统的架构就不能满足性能需求了。于是采用了基于 lambda 架构思想的 Realtime+Batch 架构。通过将实时计算和离线批处理计算灵活地结合起来,既能对增量数据进行低延迟的实时计算,也能轻松地对海量的全量数据进行离线处理,来完成多个维度统计指标和统计模型的计算。
该架构中日志收集部分使用了 finagle 异步非阻塞式 RPC 框架,通过横向扩展能够支撑海量的日志上传请求。在数据传输部分利用 kafka 作为数据总线,kafka 对 storm 和 hadoop 都提供了原生的支持,方便和它们集成使用。实时处理部分通过 Storm 集群来提供服务。离线计算部分则是基于 Hadoop 生态系统,包括 Hadoop , Pig , Hive , Spark 等。通过这些开源大数据生态中的多个组件为友盟的数据平台提供了有力的支撑。
接下来的重点就是海量数据的存储了。在数据存储层面,友盟数据平台的实时数据采用 MongoDB ,能够提供横向扩展功能和丰富的特性。对于离线数据而言,考虑到数据量特别大,因此采用 HDFS 存储和 HBase 存储两种方式。对于只需要顺序读写的数据,存储在 HDFS 上,已经达到 PB 级规模。对于需要提供随机读写的数据,存储在 HBase 中。
对于 HBase 的使用,吴磊介绍了友盟多年积累的实践经验。分别就 HBase 在读写方面的优化方法做了深入剖析。
对于 HBase,吴磊详细的介绍了使用经验。HBase 如果是采用默认参数,那么对于大批量的随机读性能是完全不够的,需要对随机读进行针对性优化才能有很大的性能提升。例如 HBase 参数调优,在 MR 中通过采取全局排序的方式变随机读为顺序读、数据聚合、RowKey 设计、表预先切分、客户端使用参数调优、大批写使用 Bulk Load 、中间数据和小表使用文件替代等多种具体的优化手段。
在 HBase 使用过程中,为了避免踩坑,吴磊提醒大家注意三点:第一,重视运维;第二,及时关注官方动态;第三,在使用一些新特性时需要谨慎对待。
关注友盟博客,查看更多数据架构分析文章。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。