在11月19日由百度主办、InfoQ策划组织实施的第20期百度技术沙龙活动上,来自百度基础架构部资深工程师陈晓鸣、一淘网数据部高级技术专家张茂森分别分享了各自在日志分析和数据统计领域所取得的成果及经验,话题涉及百度海量日志分析架构及处理经验分享,以及淘宝量子统计架构设计中的核心点等。本文将对他们各自的分享做下简单的回顾,同时提供相关资料的下载。
主题一:百度海量日志分析架构及处理经验分享(演讲稿下载)
来自百度基础架构部的陈晓鸣第一个为大家分享,分别从日志分析基本过程、百度日志分析成长历程、深入LSP平台和深入DISQL语言等几个部分为参会者进行了讲述。日志可帮助我们更加清晰地了解用户(地域来源、跳转来源、所使用的终端等)和了解自己(访问量、易用性、可用性等)。日志分析的基本过程主要分为四个阶段:
- 线上(提取与处理)
- 预处理(解析与过滤)
- 计算(预定义计算、Ad hoc查询)
- 使用(报表、图表以及回馈线上等)
接下来,陈晓鸣介绍了百度日志分析的成长历程,还分别从平台架构、平台UI以及三种编辑模式(简单模式、DQuery模式、复杂模式)等角度对LSP平台进行了讨论。 陈晓鸣重点讲述了DISQL部分,他提到DISQL具有以下几个特点:
- 用PHP表达的类SQL逻辑(非常简约)
- 封装所有SQL算子的M/R分布式实现:分组、表连接、行列过滤、集合操作、输入输出格式转换
- 通过连续函数调用表达DAG数据流
- 自动翻译为一轮或多轮MapReduce
- 也可翻译为单机计算或数据流图
- 用逻辑顺序而非SQL顺序表达逻辑
- 支持PHP自定义函数(简洁)
- 支持C++自定义函数(同样简洁+高效)和C-Runtime NEW!
- 全自动高效内存管理 (RAII + 内存池)
- 廉价对象复制(Copy On Write)
- 字段操作翻译为数组操作,无字典查找 (schema推导)
- C++的性能,PHP的开发代价!
处理阶段主要可分为前端语言处理、中间语言翻译和运行时这三个阶段,其中中间语言处理主要负责对数据流图做多次等价交换,其中涉及到正规化、算子替换、优化、阶段划分、Schema推导和字段偏移量推导以及代码生成这几个步骤。
最后陈晓鸣对演讲进行了总结并回答了现场观众的提问,同时还为下月在Hadoop in China大会中的演讲进行了预告,届时,他将对DISQL2.0方面的话题进行演讲。
主题二:淘宝量子统计架构设计中的核心点(演讲稿下载)
一淘网张茂森(花名张中)第二个为大家分享,演讲主要涵盖量子统计面临的挑战、量子统计架构设计以及量子统计的技术研究方向这几部分。张中提到,量子统计主要面临的挑战有:
- 成本
- 高并发数据分析网站的C10K问题
- 关系型数据库和实时数据计算结果的异构融合
- 复杂的数据查询接口逻辑和开发效率、查询效率、和正确性
- 分布式计算和任务管理
从数据的角度来看,实时计算处理数据量在3T/日,离线分布式计算处理超过20T/日,实时结果请求1700W/日,服务超过百万的淘宝卖家。
在量子数据中间层,其核心是由Nginx和量子贡献的扩展模块组成,技术核心点主要涉及非阻塞缓存、非阻塞数据库访问、实时引擎访问接口和单元测试。异构数据的融合通过LZSQL来实现,Lua则作为粘合剂主要解决非阻塞程序编写困难,以及提升数据二次处理能力。
此外,张中还为大家分享了实时流计算框架SuperMario,实时计算、查询引擎,离线分布式计算和任务调度管理以及数据分析网站的运维等话题。最后,张中提到了量子的技术研究方向:
- 多维数据分析
- 将昂贵的数据分析技术分享给更多的用户
- 实时滑动窗口的多维分析
- 海量数据的多维分析
- 数据可视化
- 教育和培养用户解读数据
- 更直观的展现数据的价值
- NoSQL产品在实时计算中的应用
- 解决K-V服务扩展性的难题
- 解决数据实时转换的难题
- 量子和OceanBase的合作
Open Space(开放式讨论环节)
和以往的环节一样,为了让参会者能够有更多的时间进行相互的交流,本次活动依然设置了Open Space(开放式讨论)环节。除了讲师百度陈晓鸣、一淘网张中外,张俊、江畅、姚海涛和喻先兵也参与了小组讨论。在Open Space的总结环节,几位话题小组长分别对讨论的内容进行了总结:
陈晓鸣分享了“百度海量日志分析技术”的话题,继续讨论了LSP平台及DISQL在实现上的一些细节,对相应的技术点做了解答。
张中分享了“开源数据库”的话题,讨论了实时计算、数据仓库和多维数据分析相关的问题,针对大家比较关注的,如何从业务层面让数据汇总的更快、计算的更快、如何让系统运行地更稳定等问题进行了讨论。
张俊分享了“推荐系统”的话题,主要围绕推荐系统如何去设计,如何去运算和评价等问题进行了讨论。
江畅分享了“数据开发”的话题,分享了各自在自动化运维中的经验以及如何利用自动化工具来实现更新。
姚海涛分享了“基于Twitter Storm的实时计算”的话题,讨论了基于Twitter Storm构建实时计算系统时所遇到的问题及相关的经验分享,就具体的分布式存储、多维度数据等问题进行了探讨。
特别感谢从广州专程来参加本次活动的喻先兵,他来自于多玩游戏,本次还在OpenSpace环节与大家一起分享了“分布式存储与计算”的话题。
会后,一些参会者也通过新浪微博分享了他们的参会感受:
@kersus:在#百度技术沙龙#中,和@math1141 一起过来听日志分析技术。下午一点四十五到居然就没位置了,人山人海,IT果然是劳动力密集型行业啊。
@许杨毅:今天的感想就是,一淘和百度在利用开源技术和自我创新实现ETL这类经典概念,同时实时流式计算越来越形成自己的技术特征和多竞态的技术形态,storm只是一个样本,互联网技术圈的人们最为充满活力所言非虚。今天的技术沙龙百度和淘宝的朋友share了两条泾渭分明的技术路线,左边是HCE和C++,右边是JAVA和SuperMario,淘宝的实时streaming-computeing,关注@陈晓鸣在百度 很久了,但是@maosen 的确是第一次见,技术无优劣,适应有侧重,一个是私有云,一个是公有服务,数据分析是个经典的话题,若有经常的线下沙龙则更加好,期待能形成组织和团体,一淘利用JS/ajax卸载服务端数据分析逻辑和展现体现了很好的成本意识,利用LUA作为粘合剂搭建服务平台也是有益的内部工作;百度则通过DISQL层来为数据分析提供内部平台化服务。
@haitao_yao:#百度技术沙龙# 技术实力还有很大提升的余地,看到差距,同时也看到方向。
@张乙宁:#百度技术沙龙# 一淘的分享:运维的压力会是制约一个数据团队发展的重要因素。可惜国内互联网公司基本都不重视。作为一个运维工程师,真是悲哀。
@帝都小肥羊:@maosen 今天的技术沙龙讲的很给力啊,清楚的描述了整个技术架构体系,赞!要是时间多点,各个模块就能讲的更细致,就更完美了。另外,@breezelark 你又被提到啦,堪比专业DBA的美女前端。
@叫我戴夫:昨天技术沙龙,百度的一个人说他们编了一个叫DISQL的编译器做log的分析和提取,一淘的人说他们用Hive,我想这就是做C和做java的人做事风格的差异吧。c总是要把东西做的复杂,java总是朝着偷懒的方向走。不管怎样,对于还停留在cron awk的我,真的还有很长的路要走。
有关百度技术沙龙的更多信息,可以通过新浪微博关注@百度技术沙龙,或者加入百度技术沙龙微群,InfoQ上也总结了过往19期所有百度技术沙龙的演讲视频和资料等,感兴趣的读者可以直接浏览阅读。