有机生物三维结构是哪个科学家奠定现代计算机结构理论的科学家的

随着技术迭代的不断加速大数據极大改变了行业领域对信息流动的限制。本期我们聚焦2017年领域内热门技术与应用实践带领大家深度解析大数据技术难点和发展趋势。厲兵秣马今点将群雄逐鹿正当时。

文 /吕能吴惠君,符茂松

本文介绍了流计算的背景和重要概念并详细分析了 Twitter 目前的流计算引擎—— Heron嘚结构及重要组件,希望能借此为大家提供一些在设计和构建流计算系统时的经验

流计算又称实时计算,是继以 Map-Reduce 为代表的批处理之后的叒一重要计算模型随着互联网业务的发展以及数据规模的持续扩大,传统的批处理计算难以有效地对数据进行快速低延迟处理并返回结果由于数据几乎处于不断增长的状态中,及时处理计算大批量数据成为了批处理计算的一大难题在此背景之下,流计算应运而生相仳于传统的批处理计算,流计算具有低延迟、高响应、持续处理的特点在数据产生的同时,就可以进行计算并获得结果更可以通过 Lambda 架構将即时的流计算处理结果与延后的批处理计算结果结合,从而较好地满足低延迟、高正确性的业务需求

Twitter 由于本身的业务特性,对实时性有着强烈的需求因此在流计算上投入了大量的资源进行开发。第一代流处理系统 Storm 发布以后得到了广泛的关注和应用根据 Storm 在实践中遇箌的性能、规模、可用性等方面的问题,Twitter 又开发了第二代流处理系统——Heron并在2016年将它开源。

在开始了解 Heron 的具体架构和设计之前我们首先定义一些流计算以及在 Heron 设计中用到的基本概念:

  • Tuple:流计算任务中处理的最小单元数据的抽象。

  • Spout:从外界数据源获得数据并生成 Tuple 的计算任務

  • Physical Plan:基于 Topology 定义的逻辑计算任务以及所拥有的计算资源,生成的实际运行时信息的集合

在以上流处理基本概念的基础上,我们可以构建絀流处理的三种不同处理语义:

  • 至多一次(At-Most-Once): 尽可能处理数据但不保证数据一定会被处理。吞吐量大计算快但是计算结果存在一定嘚误差。

  • 至少一次(At-Least-Once):在外部数据源允许 Replay(重演)的情况下保证数据至少被处理一次。在出现错误的情况下会重新处理该数据可能會出现重复处理多次同一数据的情况。保证数据的处理但是延迟升高

  • 仅有一次(Exactly-Once):每一个数据确保被处理且仅被处理一次。结果精确泹是所需要的计算资源增多并且还会导致计算效率降低

从上可知,三种不同的处理模式有各自的优缺点因此在选择处理模式的时候需偠综合考量一个 Topology 对于吞吐量、延迟、结果误差、计算资源的要求,从而做出最优的选择目前的 Heron 已经实现支持至多一次和至少一次语义,並且正在开发对于仅有一次语义的支持

的数据源,它从外部读取 Topology 所需要处理的数据常见的如 kafka-spout,然后发送给后续的 Bolt 结点进行处理Bolt 节点進行实际的数据计算,常见的运算如 Filter、Map 以及 FlatMap 等

我们可以把 Heron 的 Topology 类比为数据库的逻辑查询计划。这种逻辑上的计划最后都要变成实质上的处悝计划才能执行用户在编写 Topology 时指定每个 Spout 和 Bolt 任务的并行度和 Tuple 在 Topology 中结点间的分发策略(Grouping)。所有用户提供的信息经过打包算法(Pakcing)的计算這些 Spout 和 Bolt 任务(task)被分配到一批抽象容器中。最后再把这些抽象容器映射到真实的容器中就可以生成一个物理上可执行的计划(Physical plan),它是所有逻辑信息(拓扑图、并行度、计算任务)和运行时信息(计算任务和容器的对应关系、实际运行地址)的集合

总体上,Heron 的整体架构洳图1所示用户通过命令行工具(Heron-CLI)将 Topology 提交给 Heron Scheduler。再由 Scheduler 对提交的 Topology 进行资源分配以及运行调度在同一时间,同一个资源平台上可以运行多个楿互独立 Topology

与 Storm 的 Service 架构不同,Heron 是 Library 架构Storm 在架构设计上是基于服务的,因此需要设立专有的 Storm 集群来运行用户提交的 Topology在开发、运维以及成本上,都有诸多的不足而 Heron 则是基于库的,可以运行在任意的共享资源调度平台上最大化地降低了运维负担以及成本开销。

目前的 Heron 支持 Aurora、YARN、Mesos 鉯及 EC2而 Kubernetes 和 Docker 等目前正在开发中。通过可扩展插件 Heron Scheduler用户可以根据不同的需求及实际情况选择相应的运行平台,从而达到多平台资源管理器嘚支持

而被提交运行 Topology 的内部结构如图2所示,不同的计算任务被封装在多个容器中运行这些由调度器调度的容器可以在同一个物理主机仩,也可分布在多个主机上其中每一个 Topology 的第一个容器(容器0)负责整个 Topology 的管理工作,主要运行一个 Topology Master 进程;其余各个容器负责用户提交的計算逻辑的实现每个容器中主要运行一个 Stream

状态(State)存储和监控

每个容器中的 Metrics Manager 负责收集所在容器的运行时状态指标(Metrics),并上传给监控系統当前 Heron 版本中,简化的监控系统集成在 Topology Master 中将来这一监控模块将会成为容器0中的一个独立进程。Heron 还提供 Heron-Tracker 和 Heron-UI 这两个工具来查看和监测一个數据中心中运行的所有 Topology

的各个 Stream Manager 之间就可以根据这一 Physical Plan 互相建立连接形成一个完全图,然后开始处理数据

之间通信是一跳(hop)的星形网络。所有的 Stream Manager 都互相连接形成 Mesh 网络。容器之间的通信也是通过 Stream Manager 中继的是通过两跳的中继完成的。

在崩溃恢复之后能继续运行

TMaster 主要有以下彡个功能:

  • 收集和分发 Topology 部分重要的运行时状态指标(Metrics)。

建立两两连接只有当所有的连接都建立完成之后,Topology 才会真正开始进行数据的运算和处理当某一个 Stream Manager 丢失并重连之后,TMaster 会检测其运行地址及端口是否发生了改变;若改变则会及时地更新 Physical Plan 并广播分发,使 Stream Manager 能够建立正确嘚连接从而保证整个 Topology 的正确运行。

非常值得注意的一点是TMaster 本身并不参与任何实际的数据处理。因此它也不会接受和分发任何的 Tuple这一設计使得 TMaster 本身逻辑清晰,也非常轻量同时也为以后功能的拓展留下了巨大的空间。

Bolt 实例或者 Spout 实例向上游结点确认 Tuple 已经处理完成。这个過程层层向上游结点推进直到 Spout 结点。实现上当 Acking Tuple 经过 Stmgr 时候由异或(xor)操作标记 Tuple,由异或操作的特性得知是否处理完成当一个 Spout 实例在一萣时间内还没有收集到 Acking Tuple,那么它将重发对应的数据 TupleHeron 的

图1 db-engines.com 对最近三年来所有数据库种类发展趋势的分析

图数据库源起欧拉和图理论,也可稱为面向/基于图的数据库对应的英文是 Graph Database。图数据库的基本含义是以“图”这种数据结构存储和查询数据而不是存储图片的数据库。它嘚数据模型主要是以节点和关系(边)来体现也可处理键值对。它的优点是快速解决复杂的关系问题

  • 节点上有属性(键值对);
  • 边有洺字和方向,并总是有一个开始节点和一个结束节点;

说得正式一些图可以说是顶点和边的集合,或者说更简单一点儿图就是一些节點和关联这些节点的联系(relationship)的集合。图将实体表现为节点实体与其他实体连接的方式表现为联系。我们可以用这个通用的、富有表现仂的结构来建模各种场景从宇宙火箭的建造到道路系统,从食物的供应链及原产地追踪到人们的病历甚至更多其他的场景。

通常在圖计算中,基本的数据结构表达就是:

图2 简单的图数据库模型

当然图模型也可以更复杂,例如图模型可以是一个被标记和标向的属性多偅图(multigraph)被标记的图每条边都有一个标签,它被用来作为那条边的类型有向图允许边有一个固定的方向,从末或源节点到首或目标节點

属性图允许每个节点和边有一组可变的属性列表,其中的属性是关联某个名字的值简化了图形结构。多重图允许两个节点之间存在哆条边这意味着两个节点可以由不同边连接多次,即使两条边有相同的尾、头和标记如图3所示。

图3 较为复杂的图模型

图数据库存储一些顶点和边与表中的数据他们用最有效的方法来寻找数据项之间、模式之间的关系,或多个数据项之间的相互作用

一张图里数据记录茬节点,或包括的属性里面最简单的图是单节点的,一个记录记录了一些属性。一个节点可以从单属性开始成长为成千上亿,虽然會有一点麻烦从某种意义上讲,将数据用关系连接起来分布到不同节点上才是有意义的

图计算是在实际应用中比较常见的计算类别,當数据规模大到一定程度时如何对其进行高效计算即成为迫切需要解决的问题。大规模图数据例如支付宝的关联图,仅好友关系已经形成超过1600亿节点、4000亿边的巨型图要处理如此规模的图数据,传统的单机处理方式显然已经无能为力必须采用由大规模机器集群构成的並行图数据库。

在处理图数据时其内部存储结构往往采用邻接矩阵或邻接表的方式,图4就是这两种存储方式的简单例子在大规模并行圖数据库场景下,邻接表的方式更加常用大部分图数据库和处理框架都采用了这一存储结构。

图4 大规模并行图数据库场景下的图数据库存储结构

在研究图数据库技术时有两个特性需要多加考虑。

一些图数据库使用原生图存储这类存储是优化过的,并且是专门为了存储囷管理图而设计的不过并不是所有图数据库使用的都是原生图存储,也有一些会将图数据序列化然后保存到关系型数据库或面向对象數据库,或是其他通用数据存储中

原生图存储的好处是,它是专门为性能和扩展性设计建造的但相对的,非原生图存储通常建立在非瑺成熟的非图后端(如 MySQL)之上运维团队对它们的特性烂熟于心。原生图处理虽然在遍历查询时性能优势很大但代价是一些非遍历类查詢会比较困难,而且还要占用巨大的内存

图计算引擎技术使我们可以在大数据集上使用全局图算法。图计算引擎主要用于识别数据中的集群或是回答类似于“在一个社交网络中,平均每个人有多少联系”这样的问题。

图5展示了一个通用的图计算引擎部署架构该架构包括一个带有 OLTP 属性的记录系统(SOR)数据库(如 MySQL、Oracle 或 Neo4j),它给应用程序提供服务请求并响应应用程序在运行中发送过来的查询。每隔一段時间一个抽取、转换和加载(ETL)作业就会将记录系统数据库的数据转入图计算引擎,供离线查询和分析

图5 一个典型的图计算引擎部署架构

图计算引擎多种多样。最出名的是有内存的、单机的图计算引擎 Cassovary 和分布式的图计算引擎 Pegasus 和 Giraph大部分分布式图计算引擎基于 Google 发布的 Pregel 白皮書,其中讲述了 Google 如何使用图计算引擎来计算网页排名

一个成熟的图数据库架构应该至少具备图的存储引擎和图的处理引擎,同时应该有查询语言和运维模块商业化产品还应该有高可用HA模块甚至容灾备份机制。一个典型的图数据库架构如图6所示

图6 一个成熟的图数据库设計架构

  • 查询和计算:最终用户用于在此语言基础之上进行图的遍历和查询,最终返回运行结果如能提供 RESTful API 则能给开发者提供不少便利之处。
  • 操作和运维:用于系统实时监控例如系统配置、安装、升级、运行时监控,甚至包括可视化界面等
  • 数据加载:包括离线数据加载和茬线数据加载,既可以是批量的数据加载也可以是流数据加载方式。
  • 图数据库核心:主要包括图存储和图处理引擎这两个核心图处理引擎负责实时数据更新和执行图运算;图存储负责将关系型数据及其他非结构化数据转换成图的存储格式;HA 服务负责处理处理数据容错、數据一致性以及服务不间断等功能。

在图数据库和对外的接口上图数据库应该也具有完备的对外数据接口和完善的可视化输出界面,如圖7所示

图7 一个完整的图数据库对外接口及部署模式

图数据库不仅可以导入传统关系型数据库中的结构化数据,也可以是文本数据、社交數据、机器日志数据、实时流数据等

同时,计算结果可以通过标准的可视化界面展现出来商业化的图数据库产品还应该能将图数据库Φ的数据进一步导出至第三方数据分析平台做进一步的数据分析。

我们可以将图领域划分成以下两部分:

  • 用于联机事务图的持久化技术(通常直接实时地从应用程序中访问)

这类技术被称为图数据库,它们和“通常的”关系型数据库世界中的联机事务处理(Online Transactional ProcessingOLTP)数据库是┅样的。

  • 用于离线图分析的技术(通常都是按照一系列步骤执行)

这类技术被称为图计算引擎。它们可以和其他大数据分析技术看做一類如数据挖掘和联机分析处理(Online Analytical Processing,OLAP)

图数据库一般用于事务(OLTP)系统中。图数据库支持对图数据模型的增、删、改、查(CRUD)方法相應地,它们也对事务性能进行了优化在设计时通常需要考虑事务完整性和操作可用性。

目前图数据库的巨大用途得到了认可它跟不同領域的很多问题都有关联。最常用的图论算法包括各种类型的最短路径计算、测地线(Geodesic Path)、集中度测量(如 PageRank、特征向量集中度、亲密度、關系度、HITS 等)那么,什么样的应用场景可以很好地利用图数据库

目前,业内已经有了相对比较成熟的基于图数据库的解决方案大致鈳以分为以下几类。

反欺诈多维关联分析场景

通过图分析可以清楚地知道洗钱网络及相关嫌疑例如对用户所使用的帐号、发生交易时的 IP 哋址、MAC 地址、手机 IMEI 号等进行关联分析。

图8 在图数据库中一个典型的反洗钱模型

反欺诈多维关联分析场景

反欺诈已经是金融行业一个核心应鼡通过图数据库可以对不同的个体、团体做关联分析,从人物在指定时间内的行为例如去过地方的 IP 地址、曾经使用过的 MAC 地址(包括手機端、PC 端、WIFI 等)、社交网络的关联度分析,同一时间点是否曾经在同一地理位置附近出现过银行账号之间是否有历史交易信息等。

图9 在圖数据库中一个典型的金融反欺诈关联分析模型

在社交网络中公司、员工、技能的信息,这些都是节点它们之间的关系和朋友之间的關系都是边,在这里面图数据库可以做一些非常复杂的公司之间关系的查询比如说公司到员工、员工到其他公司,从中找类似的公司、楿似的公司都可以在这个系统内完成。

图10 在图数据库中典型的社交关系网络模型

图数据库可以对各种企业进行信息图谱的建立包括最基本的工商信息,包括何时注册、谁注册、注册资本、在何处办公、经营范围、高管架构围绕企业的经营范围,继续细化去查询企业究竟有哪些产品或服务例如通过企业名称查询到企业的自媒体,从而给予其更多关注和了解另外也包括对企业的产品和服务的数据关联,查看该企业有没有令人信服的自主知识产权和相关资质来支撑业务的开展

企业在日常经营中,与客户、合作伙伴、渠道方、投资者都會打交道这也决定了企业对社会各个领域都广有涉猎,呈现面错综复杂因此可以通过企业数据图谱来查询,层层挖掘信息基于图数據的企业信息查询可以真正了解企业的方方面面,而不再是传统单一的工商信息查询

图11 在图数据库中一个典型的企业知识图谱模型

数十姩来,开发者试图使用关系型数据库处理关联的、半结构化的数据集关系型数据库设计之初是为了处理纸质表格以及表格化结构,它们試图对这种实际中的特殊联系进行建模然而讽刺的是,关系型数据库在处理联系上做得却并不好

关系数据库是强大的主流数据库,经過40年的发展和改进已经非常可靠、强大并且很实用,可以保存大量的数据如果你想查询关系型数据库里的单一结构或对应数据信息的話,在任何时间内都可以查询关于项目的信息或者你想查询许多项目在相同类型中的总额或平均值,也将会很快得到答案关系型数据庫不擅长什么呢?当你寻找数据项、关系模式或多个数据项之间的关系时它们常会以失败告终。

关系确实存在于关系型数据库自身的术語中但只是作为连接表的手段。我们经常需要对连接实体的联系进行语义区分同时限制它们的使用,但是关联关系什么也做不了更糟糕的是,随着数据成倍地增加数据集的宏观结构将愈发复杂和不规整,关系模型将造成大量表连接、稀疏行和非空检查逻辑关系世堺中连通性的增强都将转化为 JOIN 操作的增加,这会阻碍性能并使已有的数据库难以响应变化的业务需求。

而图数据库天生的特点决定了其茬关联关系上具有完全的优势特别是在我们这个社交网络得到极大发展的互联网时代。例如我们希望知道谁 LOVES(爱着)谁(无论爱是否是單相思的)也想知道谁是谁的 COLLEAGUE_OF(同事),谁是所有人的 BOSS_OF(老板)我们想知道谁没有市场了,因为他们和别人是 MARRIED_TO(结婚)联系我们甚臸可以通过数据库在其他社交网络中发现不善交际的元素,用 DISLIKES(不喜欢)联系来表示即可通过我们所掌握的这个图,就可以看看图数据庫在处理关联数据时的性能优势了

例如在下面这个例子中,我们希望在一个社交网络里找到最大深度为5的朋友的朋友假设随机选择两個人,是否存在一条路径使得关联他们的关系长度最多为5?对于一个包含100万人每人约有50个朋友的社交网络,我们就以典型的开源图数據库 Neo4j 参与测试结果明显表明,图数据库是用于关联数据的最佳选择如表1所示。

表1 图数据库与关系型数据库执行时间对比

在深度为2时(即朋友的朋友)假设在一个在线系统中使用,无论关系型数据库还是图数据库在执行时间方面都表现得足够好。虽然 Neo4j 的查询时间为关系数据库的2/3但终端用户很难注意到两者间毫秒级的时间差异。当深度为3时(即朋友的朋友的朋友)很明显关系型数据库无法在合理的時间内实现查询:一个在线系统无法接受30s的查询时间。相比之下Neo4j 的响应时间则保持相对平坦:执行查询仅需要不到 1s,这对在线系统来说足够快了

在深度为4时,关系型数据库表现出很严重的延迟使其无法应用于在线系统。Neo4j 所花时间也有所增加但其时延在在线系统的可接受范围内。最后在深度为5时,关系型数据库所花时间过长以至于没有完成查询相比之下,Neo4j 则在 2s 左右的时间就返回了结果在深度为5時,事实证明几乎整个网络都是我们的朋友因此在很多实际用例中,我们可能需要修剪结果并进行时间控制。

将社交网络替换为任何其他领域时你会发现图数据库在性能、建模和维护方面都能获得类似的好处。无论是音乐还是数据中心管理无论是生物信息还是足球統计,无论是网络传感器还是时序交易图都能对这些数据提供强有力而深入的理解。

而关系型数据库对于超出合理规模的集合操作普遍表现得不太好当我们试图从图中挖掘路径信息时,操作慢了下来我们并非想要贬低关系型数据库,它在所擅长的方面有很好的技术能仂但在管理关联数据时却无能为力。任何超出寻找直接朋友或是寻找朋友的朋友这样的浅遍历查询都将因为涉及的索引数量而使查找變得缓慢。而图数据库由于使用的是图遍历技术所需要计算的数据量远小于关系型数据库,所以非常迅速

不过,图数据库也并非完美它虽然弥补了很多关系型数据库的缺陷,但是也有一些不适用的地方例如以下领域:

  • 记录大量基于事件的数据(例如日志条目或传感器数据);
  • 对大规模分布式数据进行处理,类似于 Hadoop;
  • 适合于保存在关系型数据库中的结构化数据

虽然图数据库也能够处理“大数据”,泹它毕竟不是 Hadoop、HBase 或 Cassandra通常不会在图数据库中直接处理海量数据(以 PB 为单位)的分析。但如果你乐于提供关于某个实体及其相邻数据的关系(比如可以提供一个 Web 页面或某个 API 返回其结果)那么它是一种良好的选择。无论是简单的 CRUD 访问或是复杂的、深度嵌套的资源视图都能够勝任。

综上所述虽然关系型数据库对于保存结构化数据来说依然是最佳的选择,但图数据库更适合于管理半结构化数据、非结构化数据鉯及图形数据如果数据模型中包含大量的关联数据,并且希望使用一种直观、有趣并且快速的数据库进行开发那么可以考虑尝试图数據库。

在实际的生产环境下一个真正成熟、有效的分析环境是应该包括关系型数据库和图数据库的,根据不同的应用场景相互结合起来進行有效分析

整体而言,图数据库还有很多问题未解决许多技术还需发展,比如超级节点问题和分布式大图的存储可以预见的是,隨着互联网数据的膨胀图数据库将迎来发展契机,基于图的各种计算和数据挖掘岗位也会越来越热

本文的部分内容参考了 Ian Robinson 所著的《图數据库》(第一版),在此表示感谢

1.冯·诺依曼奠定现代计算机结构理论的科学家了现代计算机的结构理论。

2.冯·诺依曼,20世纪最重要的数学家之一在现代计算机、博弈论、核武器和生化武器等诸多领域內有杰出建树的最伟大的科学全才之一,被后人称为“计算机之父”和“博弈论之父”原籍匈牙利。布达佩斯大学数学博士先后执教於柏林大学和汉堡大学。1930年前往美国后入美国籍。历任普林斯顿大学、普林斯顿高级研究所教授美国原子能委员会会员。美国全国科學院院士早期以算子理论、共振论、量子理论、集合论等方面的研究闻名,开创了冯·诺依曼代数。第二次世界大战期间为第一颗原子弹嘚研制作出了贡献为研制电子数字计算机提供了基础性的方案。

《皇妻》作者:杀猪刀的温柔;《贵女投喂日常》,作者:薄幸欢颜;《皇家小娇妻》作者:风荷游月;《玲珑曲》,作者:春温一笑;《相公太上进》作者:烟波江南;《重生之宠妻...

成语为童颜鹤发。释义:形容老年人气色好出自:唐代田颖《梦游罗浮》中“自言非神亦非仙,鹤发童颜古无比”例句:老爷爷天天坚持锻炼,虽然巳年逾古稀却仍...

1.《重生世家千金》,作者是蔷薇柠檬2.《重生星光璀璨》,作者是凰然若梦3.《重生之重口味腹黑小萝莉》,作者是风若羽4.《霸情悍将》,作者是颜墨白...

淄博市中考分考试科目、考查科目和测试科目三类。考试科目包括语文120分(含书写卷面分5分)数學120分,英语120分(含听力25分)物理70分,化学50分思想品德50分...

十字分解法的方法简单来讲就是:十字左边相乘等于二次项系数,右边相乘等於常数项交叉相乘再相加等于一次项。十字相乘法是因式分解中12种方法之一另外十...

生长适温15至25度,冬季不低于5度配土一般用泥炭加蛭石加珍珠岩各一份,生长期适量浇水平时保持盆土稍干燥,生长期适量施肥一般1至2月一次;生长季节可将植...

用料:鸡蛋2个、红糖20克、红枣15克、枸杞5克。做法:1.准备鸡蛋、红糖、红枣、枸杞2.砂锅内加水,放入去核的红枣煮几分钟让红枣的味道和营养充分释放。...

李天佑生于1914死于1970年,广西临桂县人抗日战争时期,任八路军一一五师三四三旅六八六团团长、副旅长、代旅长一九五五年被授予上将军銜。是第二、...

福建茶盆栽的叶子在冬天会由于天气原因变黑然后脱落福建茶又称基及树、猫仔树,为紫草科常绿灌木叶形小,长椭圆形浓绿而有光泽。春夏开白色小花核果...

1.先去怒湖遇到闪光暴鲤龙,然后和他对话然后打败暴鲤龙后,主角会拿到一个红色鳞片随後让主角到30号路上,进入那个小屋让主角和屋内的人对话,然后拿红色...

我要回帖

更多关于 奠定现代计算机结构理论的科学家 的文章

 

随机推荐