IOTA是什么?你是否为下一代大数据架构做好准备?

经过这么多年的发展,已经从大数据1.0的BI/Datawarehouse时代,经过大数据2.0的Web/APP过渡,进入到了IOT的大数据3.0时代,而随之而来的是数据架构的变化。

▌Lambda架构

在过去Lambda数据架构成为每一个公司大数据平台必备的架构,它解决了一个公司大数据批量离线处理和实时数据处理的需求。一个典型的Lambda架构如下:

数据从底层的数据源开始,经过各种各样的格式进入大数据平台,在大数据平台中经过Kafka、Flume等数据组件进行收集,然后分成两条线进行计算。一条线是进入流式计算平台(例如 Storm、Flink或者Spark Streaming),去计算实时的一些指标;另一条线进入批量数据处理离线计算平台(例如Mapreduce、Hive,Spark SQL),去计算T+1的相关业务指标,这些指标需要隔日才能看见。

Lambda架构经历多年的发展,其优点是稳定,对于实时计算部分的计算成本可控,批量处理可以用晚上的时间来整体批量计算,这样把实时计算和离线计算高峰分开,这种架构支撑了数据行业的早期发展,但是它也有一些致命缺点,并在大数据3.0时代越来越不适应数据分析业务的需求。缺点如下:

● 实时与批量计算结果不一致引起的数据口径问题:因为批量和实时计算走的是两个计算框架和计算程序,算出的结果往往不同,经常看到一个数字当天看是一个数据,第二天看昨天的数据反而发生了变化。

● 批量计算在计算窗口内无法完成:在IOT时代,数据量级越来越大,经常发现夜间只有4、5个小时的时间窗口,已经无法完成白天20多个小时累计的数据,保证早上上班前准时出数据已成为每个大数据团队头疼的问题。

●数据源变化都要重新开发,开发周期长:每次数据源的格式变化,业务的逻辑变化都需要针对ETL和Streaming做开发修改,整体开发周期很长,业务反应不够迅速。

● 服务器存储大:数据仓库的典型设计,会产生大量的中间结果表,造成数据急速膨胀,加大服务器存储压力。

▌Kappa架构

针对Lambda架构的需要维护两套程序等以上缺点,LinkedIn的Jay Kreps结合实际经验和个人体会提出了Kappa架构。Kappa架构的核心思想是通过改进流计算系统来解决数据全量处理的问题,使得实时计算和批处理过程使用同一套代码。此外Kappa架构认为只有在有必要的时候才会对历史数据进行重复计算,而如果需要重复计算时,Kappa架构下可以启动很多个实例进行重复计算。

一个典型的Kappa架构如下图所示:

Kappa架构的核心思想,包括以下三点:

1.用Kafka或者类似MQ队列系统收集各种各样的数据,你需要几天的数据量就保存几天。

2.当需要全量重新计算时,重新起一个流计算实例,从头开始读取数据进行处理,并输出到一个新的结果存储中。

3.当新的实例做完后,停止老的流计算实例,并把老的一些结果删除。

Kappa架构的优点在于将实时和离线代码统一起来,方便维护而且统一了数据口径的问题。而Kappa的缺点也很明显:

● 流式处理对于历史数据的高吞吐量力不从心:所有的数据都通过流式计算,即便通过加大并发实例数亦很难适应IOT时代对数据查询响应的即时性要求。

● 开发周期长:此外Kappa架构下由于采集的数据格式的不统一,每次都需要开发不同的Streaming程序,导致开发周期长。

● 服务器成本浪费:Kappa架构的核心原理依赖于外部高性能存储redis,hbase服务。但是这2种系统组件,又并非设计来满足全量数据存储设计,对服务器成本严重浪费。

▌IOTA架构

而在IOT大潮下,智能手机、PC、智能硬件设备的计算能力越来越强,而业务需求要求数据实时响应需求能力也越来越强,过去传统的中心化、非实时化数据处理的思路已经不适应现在的大数据分析需求,我提出新一代的大数据IOTA架构来解决上述问题,整体思路是设定标准数据模型,通过边缘计算技术把所有的计算过程分散在数据产生、计算和查询过程当中,以统一的数据模型贯穿始终,从而提高整体的预算效率,同时满足即时计算的需要,可以使用各种Ad-hoc Query来查询底层数据:

IOTA整体技术结构分为几部分:

● Common Data Model:贯穿整体业务始终的数据模型,这个模型是整个业务的核心,要保持SDK、cache、历史数据、查询引擎保持一致。对于用户数据分析来讲可以定义为“主-谓-宾”或者“对象-事件”这样的抽象模型来满足各种各样的查询。以大家熟悉的APP用户模型为例,用“主-谓-宾”模型描述就是“X用户 – 事件1 – A页面(2018/4/11 20:00) ”。当然,根据业务需求的不同,也可以使用“产品-事件”、“地点-时间”模型等等。模型本身也可以根据协议(例如 protobuf)来实现SDK端定义,中央存储的方式。此处核心是,从SDK到存储到处理是统一的一个Common Data Model。

● Edge SDKs & Edge Servers:这是数据的采集端,不仅仅是过去的简单的SDK,在复杂的计算情况下,会赋予SDK更复杂的计算,在设备端就转化为形成统一的数据模型来进行传送。例如对于智能Wi-Fi采集的数据,从AC端就变为“X用户的MAC 地址-出现- A楼层(2018/4/11 18:00)”这种主-谓-宾结构,对于摄像头会通过Edge AI Server,转化成为“X的Face特征- 进入- A火车站(2018/4/11 20:00)”。也可以是上面提到的简单的APP或者页面级别的“X用户 – 事件1 – A页面(2018/4/11 20:00) ”,对于APP和H5页面来讲,没有计算工作量,只要求埋点格式即可。

● Real Time Data:实时数据缓存区,这部分是为了达到实时计算的目的,海量数据接收不可能海量实时入历史数据库,那样会出现建立索引延迟、历史数据碎片文件等问题。因此,有一个实时数据缓存区来存储最近几分钟或者几秒钟的数据。这块可以使用Kudu或者Hbase等组件来实现。这部分数据会通过Dumper来合并到历史数据当中。此处的数据模型和SDK端数据模型是保持一致的,都是Common Data Model,例如“主-谓-宾”模型。

● Historical Data:历史数据沉浸区,这部分是保存了大量的历史数据,为了实现Ad-hoc查询,将自动建立相关索引提高整体历史数据查询效率,从而实现秒级复杂查询百亿条数据的反馈。例如可以使用HDFS存储历史数据,此处的数据模型依然SDK端数据模型是保持一致的Common Data Model。

● Dumper:Dumper的主要工作就是把最近几秒或者几分钟的实时数据,根据汇聚规则、建立索引,存储到历史存储结构当中,可以使用map reduce、C、Scala来撰写,把相关的数据从Realtime Data区写入Historical Data区。

● Query Engine:查询引擎,提供统一的对外查询接口和协议(例如SQL JDBC),把Realtime Data和Historical Data合并到一起查询,从而实现对于数据实时的Ad-hoc查询。例如常见的计算引擎可以使用presto、impala、clickhouse等。

● Realtime model feedback:通过Edge computing技术,在边缘端有更多的交互可以做,可以通过在Realtime Data去设定规则来对Edge SDK端进行控制,例如,数据上传的频次降低、语音控制的迅速反馈,某些条件和规则的触发等等。简单的事件处理,将通过本地的IOT端完成,例如,嫌疑犯的识别现在已经有很多摄像头本身带有此功能。

IOTA大数据架构,主要有如下几个特点:

● 去ETL化:ETL和相关开发一直是大数据处理的痛点,IOTA架构通过Common Data Model的设计,专注在某一个具体领域的数据计算,从而可以从SDK端开始计算,中央端只做采集、建立索引和查询,提高整体数据分析的效率。

● Ad-hoc即时查询:鉴于整体的计算流程机制,在手机端、智能IOT事件发生之时,就可以直接传送到云端进入real time data区,可以被前端的Query Engine来查询。此时用户可以使用各种各样的查询,直接查到前几秒发生的事件,而不用在等待ETL或者Streaming的数据研发和处理。

● 边缘计算(Edge-Computing):将过去统一到中央进行整体计算,分散到数据产生、存储和查询端,数据产生既符合Common Data Model。同时,也给与Realtime model feedback,让客户端传送数据的同时马上进行反馈,而不需要所有事件都要到中央端处理之后再进行下发。

如上图,IOTA架构有各种各样的实现方法,为了验证IOTA架构,易观也自主设计并实现了“秒算”引擎,目前支持易观内部月活5.5亿设备端进行计算的同时,也基于“秒算”引擎研发出了可以独立部署在企业客户内,进行数字用户分析和营销的“易观方舟”,可以访问ark.analysys.cn进行体验。

在大数据3.0时代,Lambda大数据架构已经无法满足企业用户日常大数据分析和精益运营的需要,去ETL化的IOTA大数据架构才是未来。

本文对比了 Lambda数据架构的痛点,通过实践和总结出新一代大数据分析架构IOTA架构,欢迎讨论

IOTA架构分析说明PPT, 请查阅!

大数据分析的下一代架构--IOTA架构[上]相关推荐

  1. 下一代大数据即时分析架构--IOTA架构

    经过这么多年的发展,已经从大数据1.0的BI/Datawarehouse时代,经过大数据2.0的Web/APP过渡,进入到了IOT的大数据3.0时代,而随之而来的是数据架构的变化. ▌Lambda架构 ...

  2. 大数据分析整体技术流程及架构

    本文对项目中所用到的大数据分析整体流程技术及其架构进行简要的总结,以供大家在大数据分析平台对数据处理流程更加明确 1.1 数据处理流程 该项目是一个纯粹的数据分析项目,其整体流程基本上就是依据数据的处 ...

  3. TA大数据分析系统的高可用架构从设计到实现

    随着大数据时代的到来,对海量数据进行数据分析,并依据分析结果进行精细化运营成为各大企业的重要课题.但大数据行业门槛高,自建平台成本高.难度大.效率低,因此企业越来越需要专业的大数据分析工具. 针对市场 ...

  4. 知行教育大数据分析平台之基于Spark架构

    1 介绍一下你们的项目 教育数仓解决的问题: 首先,受互联网+概念影响,越来越多的教育平台机构涌现,在线教育发展火热.但是由于信息的共享利用不充分,导致企业多年积累了大量数据,而因为信息孤岛的问题,一 ...

  5. Java job interview:项目架构研发使用Apache Kylin搭建企业级开源大数据分析平台

    Kylin(麒麟)是什么?我们听到过有麒麟芯片.麒麟OS等等,我们这个全名是叫Apache Kylin,是一个大数据分析的项目. 从名字上或许可以猜到,它来自中国,的确这也是我们想让世界知道的,有一群 ...

  6. Lambda架构,Kappa架构和去ETL化的IOTA架构

    经过这么多年的发展,已经从大数据1.0的BI/Datawarehouse时代,经过大数据2.0的Web/APP过渡,进入到了IOT的大数据3.0时代,而随之而来的是数据架构的变化. ▌Lambda架构 ...

  7. 【2015年第4期】面向国防安全的网络大数据分析与应用系统

    面向国防安全的网络大数据分析与应用系统 许洪波, 陈 波 (中国科学院计算技术研究所 北京 100190) 摘要:在调研国内外大数据分析与应用研究现状的基础上,针对国防安全领域现有业务体系中存在的数据 ...

  8. 学大数据分析可以从事什么工作

    从来没有比现在更好的时间来学习大数据分析并以数据科学家的身份进入工作队伍.工作前景广阔,机会跨越多个行业,工作性质通常允许远程工作灵活性甚至自雇. 另外,许多大数据分析专家甚至在入门级职位上都拥有很高 ...

  9. python实习生面试题_大数据分析实习生面试题库

    原标题:大数据分析实习生面试题库 大数据分析是一个有吸引力的领域,因为它不仅有利可图,而且您有机会从事有趣的项目,而且您总是在学习新事物.如果您想从头开始,请查看大数据分析实习生面试题库以准备面试要点 ...

最新文章

  1. k8s label和label选择器
  2. PyCharm之python书写规范--消去提示波浪线
  3. 强大的jQuery图片查看器插件Viewer.js
  4. python difflib详解
  5. python参数传递_python参数的传递
  6. Django应用部署 - 上线指南
  7. matlab cos sinx,matlab求y=sinxcos(2x)及其包络线急!!!
  8. Visio 安装与操作小结
  9. 经典数据可视化案例-百度迁徙图
  10. 算法 | 生命游戏 (Game of Life)
  11. 基础篇——View和ViewGroup的区别
  12. php支付宝封装类,android封装支付宝支付
  13. 3D MAX 中的 vary 参数建议。测试图以及中等质量和高等质量参数设置.
  14. Java中的字节是什么意思?
  15. 【LaTeX笔记12】Latex分栏布局及模板使用
  16. node mysql商城开发_NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦
  17. TC Games教你如何在电脑上玩手游梦幻西游,无需模拟器
  18. 攻防世界(PWN)forgot
  19. Android开发者跳槽面试,Android面试题及解析
  20. java仿QQ聊天室群聊(快速写一个简易QQ)

热门文章

  1. 企业级360°全方位用户画像:标签系统[四]
  2. 百度地图API详解之地图标注
  3. 利用word的freemarker模板导出word文件
  4. 英文文本导入去停用词
  5. “厚德载物”是哪几德,做事先学做人
  6. SAS内部连接器(上):SAS 4i 整合并塑身
  7. S32K系列S32K144学习笔记——UART2
  8. 一年手机信息安全囧事大调查,你有没有中招
  9. 如何运用计算机进行课堂教学,运用多媒体进行课堂教学的心得体会(精选6篇)...
  10. 华为OD机试 - 找数字、找等值元素(Java JS Python)