Facebook的大规模时空数据处理技术栈
极客时间编辑部
讲述:丁婵大小:1.36M时长:02:59
在 2017 年,Facebook 已经覆盖全球 130 多个国家和地区,服务 20 亿用户,在地理位置数据处理方面的技术(包括轨迹追踪、定向圈人、GEO 相关研究)上,Facebook 在全球名列前茅。
近日,聊聊架构采访了 Facebook GEO 组的研发组长宾理涵,他解释了在万亿级数据处理背后,Facebook 是如何设计数据库索引结构、查询优化、数仓建模等难题的。
目前,宾理涵正在带领团队开发 Geospatial Indexing 平台,该平台能将地理大数据和实时数据流检索导入,以提供实时的查询和计算。
据介绍,处理大规模空间数据有着一些独特的问题。对于一个没有做过空间数据的人,第一个常犯的错误就是两个坐标点的距离,如果简单地计算了两地间的距离,那么最后在产品中计算出来的点肯定是错的。
其次是空间数据的分布问题,大城市密度比小城市密度高,这将在多个层面影响到算法。最后是工具的缺失,传统大数据分析不是为空间数据优化的。
针对这些问题,Facebook 打造了大规模时空数据处理的技术栈,其特性主要包括以下几点:
数据来源于 HIVE 和 Scribe;
离线查询使用 Presto 加上专门的 spatial join 的支持,在线查询通过 indexer 建立索引提供低延时实时查询;
在线系统基于 Facebook 的 Thrift 框架提供高性能、高并发,来实现海量查询;
实时流数据,采用 Facebook 开发的 Stylus 平台。
此外,技术栈的大多数系统采用 C++ 开发,算法上用的比较多的是 RTree 和 QuadTree,另外使用开源的谷歌 S2 做为坐标编码。据宾理涵介绍,他们的在线 index 系统经历了一系列的架构升级,从最简单的静态 In-memory 到现在的分布式、多存储形式,并支持实时数据更新。
宾理涵表示,第一个项目的产生完全是因为一个产品组需要高性能的 circle index,而现成的系统虽然功能非常强大,但是对几何图形的支持却非常有限。因此,他们用 boost rtree 写了一个原始版本,性能超过了其他的所有方案。
同时,在程序设计初期,他们先制定了 MVP,不会过度设计。随着 index 平台的用户越来越多,团队开始针对一个又一个的产品需求进行优化,最终演变到了现在产品的样子。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- _WeiJiecircle index是什么1
收起评论