IOTA大数据架构是一种基于AI生态下的全新的数据架构模式,2018年,易观首次提出这一概念。IOTA的整体思路是设定标准数据模型,通过边缘计算技术把所有的计算过程分散在数据产生、计算和查询过程当中,以统一的数据模型贯穿始终,从而提高整体的计算效率,同时满足计算的需要,可以使用各种Ad-hoc Query来查询底层数据。

IOT大潮下,智能手机、PC、智能硬件设备的计算能力越来越强,业务要求数据有实时的响应能力,Lambda架构已经不能适应当今大数据分析时代的需求。IOTA架构如下图:

IOTA架构 --- 数据流转过程示例

Common Data Model


  • 贯穿整体业务始终的数据模型,这个模型是整个业务的核心,要保持SDK、cache、历史数据、查询引擎保持一致。
  • 对于用户数据分析来讲可以定义为“主-谓-宾”或者“对象-事件”这样的抽象模型来满足各种各样的查询。

用户行为“主-谓-宾”模型示例:

  • 智能手表:X用户 – 进行了 – 游泳运动
  • 视频APP:X用户 – 播放 – 影片
  • 电商网站:X用户 – 购买 – 手机( 2018/12/11 18:00:00 , IP , GPS)

用户行为“对象-事件”模型

  • 事件(Event):主要是描述用户做了什么事情,记录用户触发的行为,例如注册、登录、支付事件等等
  • 事件属性: 更精准的描述用户行为,例如事件发生的位置、方式和内容
  • 每一条event数据对应用户的一次行为信息, 例如浏览、登录、搜索事件等等

--- 当然,根据业务需求的不同,也可以使用“产品-事件”、“地点-时间”模型等等。模型本身也可以根据协议(例如 protobuf)来实现SDK端定义,中央存储的方式。此处核心是,从SDK到存储到处理是统一的一个Common Data Model。

Edge SDK


  • 这是数据的采集端,不仅仅是过去的简单的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页面来讲,没有计算工作量,只要求埋点格式即可。

一个稳定的数据采集端需要有如下功能,存储、回数、控制、保护:

  • 存储:数据存储,校验当前存储数据合法性,及防止数据被第三方篡改
  • 回数:数据上报,加密上报数据,防止被第三方截取,保证不受 HOOK 等影响,防止 DNS 污染等。
  • 控制:控制发送策略,可以指定 3G / 4G / wifi 环境上传,可以调整上报时间频次、本地数据缓存规则全部可动态调整
  • 保护:有自保护机制。不要影响用户的正常使用,减少因逆向导致的数据异常

显而易见,普通的采集端都具有这些功能。作为 IOTA 架构下的采集端进行了哪些优化呢?如下:

  • 统一模型:在 IOTA 架构下从数据采集到数据接收以及数据处理都是用一套数据模型。
  • 聚合:同样的数据进行边缘聚合计算,如某些用户访问路径可以直接由采集端来完成,生成对应类似漏斗的事件。一般这个计算是服务器下发策略来动态控制的,当然也可以随时做出调整,值得注意的是这是不可以逆的运算,并且这种模式只适用于适合间隔发送模式的数据
  • 校验:数据的完整和有效性可以放到采集端处理,确保 SDK 给 server 的数据不是被修改的,产生的数据是合理的,这就要求采集端加入防作弊的功能。这是一个成熟产品长期需要投入的项目,大部分公司的风控做的也有一部分这样的工作。
  • 实时:数据实时上报给服务器,这样才能让用户感觉到零延迟,实时计算。如12306购票,要立即的进行查看结果,不能等得到次日才看到结果。同样的带来另一个问题,
  • 高可控:高可控是对数据采集最基础,也是最重要的一个要求。不然面对攻击,服务器无法实时监控,动态调整,立即处理,可能会导致服务器的短时间无法正常工作(如数据处理延迟,严重的乃至宕机)

Real Time Data


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

Historical Data


  • 历史数据沉浸区,这部分是保存了大量的历史数据,为了实现Ad-hoc查询,将自动建立相关索引提高整体历史数据查询效率,从而实现秒级复杂查询百亿条数据的反馈。例如可以使用HDFS存储历史数据,此处的数据模型依然SDK端数据模型是保持一致的Common Data Model。
  • 当buffer区的数据量达到一定规模时,调度会启动DumpMR(Spark、MR任务)会将缓冲区数据flush到HDFS中去,因为还要支持数据的实时查询,我们采用R/W表切换方案,即一直写入一张表直到阈值,就写入新表,老表开始转为ORC格式。

HDFS高效存储:

  • 按天分区
  • 基于用户ID,事件时间排序
  • 冷热分层
  • Orc存储
  • BloomFilter
  • 稀疏索引
  • Snappy压缩

小文件问题:

  • 不按事件分区
  • MergerMR定时合并小文件

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 vs Lambda


IOTA vs Kappa


参考资料


四:大数据架构回顾-IOTA架构的更多相关文章

  1. 大数据时代的IT架构设计

    大数据时代的IT架构设计(来自互联网.银行等领域的一线架构师先进经验分享) IT架构设计研究组 编著   ISBN 978-7-121-22605-2 2014年4月出版 定价:49.00元 208页 ...

  2. 读<大数据日知录:架构与算法>有感

    前一段时间, 一个老师建议我能够学学 '大数据' 和 '机器学习', 他说这必定是今后的热点, 学会了, 你就是香饽饽.在此之前, 我对大数据, 机器学习并没有非常深的认识, 总觉得它们是那么的缥缈, ...

  3. 新书发布《大数据时代的IT架构设计》

    <大数据时代的IT架构设计>以大数据时代为背景,邀请著名企业中的一线架构师,结合工作中的实际案例展开与架构相关的讨论.<大数据时代的IT架构设计>作者来自互联网.教育.传统行业 ...

  4. 大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)

    课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普 ...

  5. 我读《大数据时代的IT架构设计》

    架构设计是一门艺术,对架构的掌握要通过多看,多学,多交流,多积累,从实战架构上总能吸收到很好的营养,这边书虽然 (一).hadoop技术处理电信行业的上网日志 根据上网的url或未知url爬取内容,进 ...

  6. 零基础学习云计算及大数据DBA集群架构师【企业级运维技术及实践项目2015年1月29日周五】

    LNMP/LEMP项目搭建 { 项目框架 # Linux_____WEB_____PHP_____DB # rhel7_____apache__-(libphp5.so)-__php__-(php-m ...

  7. 零基础学习云计算及大数据DBA集群架构师【Linux系统配置及网络配置2015年12月30日周三】

    /Mon *************摘要************** 计划任务 )一次性计划任务 服务:atd 命令:at 服务存放文件:/etc/init.d/atd 系统配置文件:/etc/at. ...

  8. 零基础学习云计算及大数据DBA集群架构师【Linux系统环境及权限管理12.21-12.25】

    从这周开始Linux的学习,老师是一位女老师,这到给了更多的信心,老师讲得很快,如果说只谈记命令的话是不多,但是要真正去理解,其实内容还是挺多的,我都是以老师讲的内容为主线,然后自己再看鸟哥的书做加深 ...

  9. 零基础学习云计算及大数据DBA集群架构师【预科2015年12月14日周一】

    1.第一天比较轻松,上午填表格,录指纹,拍照片,做自我介绍. 2.下午老师简单介绍了一下PC\交换机\路由器\塔式服务器\机架式服务器(1U\2U)\刀片服务器\磁带机 3.班主任陈老师朱老师,预科秦 ...

  10. 零基础学习云计算及大数据DBA集群架构师【Linux Bash Shell编程及系统自动化2015年1月21日周四】

    lvy老师教项目课程,以及代课了shell部分课程,大家都觉得这位老师不行,上课时做的操作很多都是错误的,觉得她基础不好.而且,她不能解释原因,学生问为什么,她不知道.崩溃啊.向xx培训机构反应后,说 ...

随机推荐

  1. 索引与查询使用的 collate 不一致导致无法使用索引

    索引与表的collate 不一致的情况下,会导致表上的索引不可用,这时要想使用索引,必须在SQL 语句指定建索引所用的collate. 数据库默认collate : test=# \l List of ...

  2. C#数据去重的5种方式,你知道几种?

    前言 今天我们一起来讨论一下关于C#数据去重的的5种方式,每种方法都有其特点和适用场景,我们根据具体需求选择最合适的方式.当然欢迎你在评论区留下你觉得更好的C#数据去重的方式. 使用HashSet去重 ...

  3. #斯坦纳树#洛谷 4294 [WC2008]游览计划

    题目 分析 几乎就是模板题,考虑不同点就是它是点权, 所以在求两个子集的时候要减去这个点的点权, 还有一点恶心的就是要输出方案,令人作呕 代码 #include <cstdio> #inc ...

  4. JDK 14的新特性:文本块Text Blocks

    目录 举个例子 Indentation编排 Escaping转义 formatted格式化 总结 说起来,Text Blocks是在JDK13中以第一次预览版本引入的.现在在JDK14中是第二次预览版 ...

  5. C++ 运算符全解析:从基础概念到实际应用

    C++ 运算符 运算符用于对变量和值执行操作. 在下面的示例中,我们使用 + 运算符将两个值相加: int x = 100 + 50; 虽然 + 运算符经常用于将两个值相加,就像上面的示例一样,但它也 ...

  6. C++ 编译器和链接器的完全指南

    C++是一种强类型语言,它的编译和链接是程序开发过程中不可或缺的两个环节.编译器和链接器是两个非常重要的概念.本文将详细介绍C++中的编译器和链接器以及它们的工作原理和使用方法. 编译器 编译器是将源 ...

  7. Java处理关键字进行脱敏操作

    1.通过表头获取需要处理的下标列 注:此处导出表格时对关键字进行脱敏处理 /** * . * 对表头进行过滤判断 * * @param headers 表头 * @return 对应的下标列及方法名 ...

  8. openGauss支持国密SM3和SM4算法

    国密算法介绍 国密即国家密码局认定的国产密码算法,主要有 SM1,SM2,SM3,SM4.密钥长度和分组长度均为 128 位.针对银行客户对数据库安全能力的诉求以及提高产品安全竞争力的要求,进行数据库 ...

  9. 解密prompt系列27. LLM对齐经验之如何降低通用能力损失

    前面我们已经聊过众多指令微调的方案,这一章我们重点讨论下如何注入某一类任务或能力的同时,尽可能不损失模型原有的通用指令理解能力.因为在下游或垂直领域应用中,我们设计的推理任务风格或形式,往往很难通过p ...

  10. OS如何保持对计算机的控制权?

    前面我们提到:OS希望在保持控制权的同时,为用户提供高性能的并发. 那么OS究竟是如何保持对计算机的控制权呢?这似乎是一个令人迷惑(但很重要!)的问题:OS也是进程,自然也需要计算资源.那既然我们希望 ...