[个推 CTO 谈数据智能] 之多维度分析系统的选型方法

标签: cto 数据 智能 | 发表时间:2019-08-28 17:18 | 作者:jack
出处:https://www.diycode.cc/

“最近看到一句话:“架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现”,深以为然!
文 | 个推CTO Anson

引言
前文回顾:《数据智能时代来临:本质及技术体系要求》作为本系列的第一篇文章,概括性地阐述了对于数据智能的理解以及推出了对应的核心技术体系要求:

数据智能就是以数据作为生产资料,通过结合大规模数据处理、数据挖掘、机器学习、人机交互、可视化等多种技术,从大量的数据中提炼、发掘、获取知识,为人们在基于数据制定决策时提供有效的智能支持,减少或者消除不确定性。

从对数据智能的定义来看,数据智能的技术体系至少需要包含几个方面,见下图所示:

▲数据智能技术体系构成

其中数据资产治理、数据质量保证、数据智能下的安全计算体系会在后续的系列文章中重点阐述。

然而最近在实际工作中,发现大家对于如何处理多维数据进行分析以解决实际业务问题方面存在一些实实在在的困扰,特别是对于选择什么样的底层系统无所适从,毕竟有资源给大家进行试验的公司并不是太多。

故此我和团队一起研究,同时也借鉴了外部的一些资料,针对这个议题撰写了本系列的第二篇文章,主要围绕“多维度分析系统的选型方法”的主题,供大家参考,希望能缩短大家的决策时间。

正文内容

分析系统的考量要素

CAP 理论大家都已经比较熟悉, C.A.P 之间无法兼得,只能有所取舍。在分析系统中同样需要在三个要素间进行取舍和平衡,三要素分别是数据量、灵活性以及性能。

▲分析系统考量三要素

有的系统在数据量达到一定数量,譬如超过P级别后,在资源不变情况下,就无法满足处理要求了,哪怕是一个简单的分析需求。

灵活性主要指操作数据时的方式是否灵活,比如对于一般的分析师而言,使用SQL来操作是首选,没有太多的约束,如果使用特定领域的语言 (DSL) 相对就比较受限;另外一个意思是操作是否受预先条件的限制,譬如是否支持在多个维度下进行灵活的即席(Ad-Hoc)查询;最后一个就是性能要求,是否满足多并发操作、能否在秒级进行响应。

数据查询的过程分析

对数据进行聚合类型的查询时,一般按照以下三个步骤进行:

▲实时查询过程

首先,需要用索引检索出数据所对应的行号或者索引位置,要求能够从上亿条数据中快速过滤出几十万或几百万的数据。这方面是搜索引擎最擅长的领域,因为一般关系型数据库擅长用索引检索出比较精确的少量数据。

然后从主存储按行号或者位置进行具体数据的加载,要求能够快速加载这过滤出的几十上百万条数据到内存里。这方面是分析型数据库最擅长的领域,因为一般它们采用列式存储,有的还会采用mmap的方式来加快数据的处理。

最后进行分布式计算,能够把这些数据按照GROUP BY和SELECT的要求计算出最终的结果集。而这是大数据计算引擎最擅长的领域,如Spark、Hadoop等。

架构的比较和分析

结合以上两方面的要素,在架构方面目前主要是三类:

MPP (Massively Parallel Processing)
基于搜索引擎的架构
预计算系统架构

MPP架构
传统的RDBMS在ACID方面具有绝对的优势。在大数据时代中,如果你的数据大部分依然还是结构化的数据,并且数据并不是如此巨大的话,不一定非要采用类似Hadoop这样的平台,自然也可以采用分布式的架构来满足数据规模的增长,并且去解决数据分析的需求,同时还可以用我们熟悉的SQL来进行操作。

这个架构就是MPP(Massively Parallel Processing)–大规模并行处理。

当然实际上MPP只是一个架构,其底层未必一定是RDBMS, 而可以是架设在Hadoop底层设施并且加上分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine等组成),不使用MapReduce这样的批处理方式。

这个架构下的系统有:Greenplum、Impala、Drill、Shark等,其中Greenplum (一般简称GP) 使用PostgreSQL作为底层数据库引擎。

基于搜索引擎的架构
相对比MPP系统,搜索引擎在进行数据(文档)入库时将数据转换为倒排索引,使用Term Index、Term Dictionary、Posting 三级结构建立索引,同时采用一些压缩技术来进行空间的节省。

这些数据(文档)会通过一定的规则(譬如对文档ID进行哈希算法)分散到各个节点上。在进行数据检索的时候,采用Scatter-Gather计算模型,在各个节点上分别进行处理后,集中到发起搜索的节点进行最终聚合。

这个架构下的系统主要有:ElasticSearch、Solr,一般采用DSL进行操作。

预计算系统架构
类似Apache Kylin这样的系统就是预计算系统架构。其在数据入库时对数据进行预聚合,通过事先建立一定的模型,对数据进行预先的处理,形成“物化视图”或者数据Cube,这样对于数据的大部分处理实际是在查询阶段之前就完成了,查询阶段相当于进行二次加工。

这个架构下的系统主要有: Kylin,Druid。虽然Kylin和Druid都属于预计算系统架构,两者之间还是有不少差别。

Kylin是使用Cube的方式来进行预计算(支持SQL方式),一旦模型确定,要去修改的成本会比较大,基本上需要重新计算整个Cube,而且预计算不是随时进行,是按照一定策略进行,这个也限制了其作为实时数据查询的要求。

而Druid 更加适合做实时计算、即席查询(目前还不支持SQL),它采用Bitmap作为主要索引方式,因此可以很快地进行数据的筛选及处理,但是对于复杂的查询来说, 性能上比Kylin要差。

基于上面的分析,Kylin一般主推超大数据量下的离线的OLAP引擎,Druid是主推的大数据量下的实时OLAP引擎。

三种架构的对比
MPP架构的系统:
有很好的数据量和灵活性支持,但是对响应时间是没有必然保证的。当数据量和计算复杂度增加后,响应时间会变慢,从秒级到分钟级,甚至小时级都有可能。

搜索引擎架构的系统:
相对比MPP系统,牺牲了一些灵活性换取很好的性能,在搜索类查询上能做到亚秒级响应。但是对于扫描聚合为主的查询,随着处理数据量的增加,响应时间也会退化到分钟级。

预计算系统:
在入库时对数据进行预聚合,进一步牺牲灵活性换取性能,以实现对超大数据集的秒级响应。

结合上面的分析,以上三种分别是:
对于数据量的支持从小到大
灵活性从大到小
性能随数据量变大从低到高

因此,我们可以基于实际业务数据量的大小、对于灵活性和性能的要求综合来进行考虑。譬如采用GP可能就能满足大部分公司的需要,采用Kylin可以满足超大数据量的需求等。

结语
最近看到一句话:“架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现”,深以为然!

未来,我们个推技术团队也将不断探索多维度分析系统的选型方法,与大家共同探讨,一如既往地为各位开发者提供更优质的服务。

更多内容请关注:个推技术学院

相关 [cto 数据 智能] 推荐:

[个推 CTO 谈数据智能] 之本质及技术体系要求

- - DiyCode - 致力于构建开发工程师高端交流分享社区社区
毕业于浙江大学,现全面负责个推技术选型、研发创新、运维管理等工作,已带领团队开发出针对移动互联网、金融风控等行业的多项前沿数据智能解决方案. 曾任MSN中国首席架构师,拥有十余年资深技术开发与项目管理经验,在大数据处理系统、大规模并发平台、分布搜索系统、手机应用开发、无线通信领域和智慧金融系统等领域拥有丰富实践经验.

[个推 CTO 谈数据智能] 之多维度分析系统的选型方法

- - DiyCode - 致力于构建开发工程师高端交流分享社区社区
“最近看到一句话:“架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现”,深以为然. 文 | 个推CTO Anson. 前文回顾:《数据智能时代来临:本质及技术体系要求》作为本系列的第一篇文章,概括性地阐述了对于数据智能的理解以及推出了对应的核心技术体系要求:. 数据智能就是以数据作为生产资料,通过结合大规模数据处理、数据挖掘、机器学习、人机交互、可视化等多种技术,从大量的数据中提炼、发掘、获取知识,为人们在基于数据制定决策时提供有效的智能支持,减少或者消除不确定性.

CTO这点事

- - 博海拾贝
几乎整个互联网行业都缺CTO,特别是一些草根背景的创业者,这个问题更加显著. 从我自己的感受,身边各种朋友委托我找CTO的需求,嗯,算下来超过两位数了,光最近一个月就有3个,而且这三家都是刚拿了A轮的. 其他那些公司CTO大部分空缺了一两年,或者其他高管临时暂代过渡. 实话说,我觉得每个公司都不错的,但通常也只能遗憾的说,真没有能推荐的.

奇才CTO——Nathan Myhrvold

- Kindy - 《程序员》杂志官网
这期我们要介绍的人物,实在是太有趣了. 当时,IBM公司推出了一套名为TopView的多任务环境,并准备把这个环境作为PC的用户界面. 比尔·盖茨自然不肯容忍自己在这方面落后,也想要搞一套类似的多任务环境. 就在这个时候,盖茨听说,在加州奥克兰,有一家Dynamical System Research公司开发了一套效果几乎一模一样的多任务环境,而且消耗的资源更少,运行速度更快.

谈谈CTO的职责

- zhengyun - 互联网旁观者
想想技术人员的职业道路,很多人都希望成为公司的技术领袖,把握公司及其产品技术方向的人. 技术色彩浓厚的创始人/CEO、CTO、总工程师、工程副总裁、技术总监、研究员院长、首席科学家等都可以纳入技术领袖的范畴. 既然梦寐以求的是CTO,但什么是CTO. 雾里看花,还真是说不清道不明呀. 业内公认的最优秀的CTO之一Amazon的Werner Vogels,还专门为CTO的角色定义写过一篇文章.

Twitter CTO 离职了,他是谁?

- yat - 爱范儿 · Beats of Bits
Twitter 是硅谷的创业传奇. 几位创始人的故事之前也有介绍过. 上周末,Twitter CTO Greg Pass 离职. 相信大部分的反应是:Twitter CTO. Greg Pass 相比几位创始人确实不太知名. 从 LinkedIn 的信息来看,他于 1997 年毕业于康奈尔大学,获计算机和认知科学学士学位,创办过 ToFish,后来加入了风险投资和私募股权公司 Walker Ventures.

未来你是CTO还是架构师?

- - SegmentFault 最新的文章
春节就要到了,每到年末就非常适合总结、反思,思考过去一年的成长(就),过去一年的收获,过去一年的改变,所以接下来两三周的时间,我想给大家分享一些技术以外的思考. 这次先跟大家分享关于未来的思考, 职业目标和规划决定了你以后的职业高度、职业角色,你本来想成架构师、技术VP、CTO,结果就是没有了结果.

从程序员到CTO的Java技术路线图

- - ITeye博客
 总感觉需要提升自己,也摸索了一下路子. 但有如此清晰的指示图供参考还是非常不错的,不是需要我们完全掌握,只是扩展思维.               反射、泛型、注释符、自动装箱和拆箱、枚举类、可变.               参数、可变返回类型、增强循环、静态导入.         核心编程.              IO、多线程、实体类、.

腾讯CTO张志东(Tony)培训笔记

- - 标点符
公司请来了Tony给我们培训(感谢公司),以下为Pony培训中涉及到的内容,膜拜前辈真的是非常的兴奋,同时也是学习到了不少知识. 对于这样的前辈,最深的感受就是谦逊与实在. 1、关于网传的QQ架构从建立初期一直沿用到现在的解释. 林军的《沸腾十五年》中关于“腾讯创始人们”的章节中,有一段关于张志东技术能力的描述: QICQ最开始只是一个纯汉化的版本,毕竟是系统集成项目中很小的一部分,但之后要放在网上,因此,张志东带着小光、夜猫又重新写了一遍,从客户端到服务器端,这个架构沿用至今,没有做大的修改,只是不断扩充用户和升级系统,张志东真天才也.

联想CTO:我们为什么要预装Superfish

- - cnBeta.COM
联想集团CTO彼得·霍腾休斯(Peter Hortensius)近日就预装Superfish一事接受了《纽约时报》专访,就此事发生的原因做出了解释,并公开道歉,还透露了该公司的一些解决方案. 在用户发现这家全球最大PC制造商预装了Superfish广告软件,并将其隐藏在用户和杀毒软件难以发现的地方后,舆论哗然.