一文纵览大数据计算生态

欢迎关注wx公众号:DLab数据实验室 关注更多知识干货~

​​​​

概述

大数据计算发展至今,已经形成了一个百花齐放的大数据生态,通用的、定制的,批量的、实时的,关系的、图的、非结构的,数据计算的、机器学习的,我们都可以找到各种对应的计算引擎。
本文拟以大数据平台从底到高的层次为主线,梳理整个大数据计算生态。
下面大数据计算生态的图最上层为应用层,也就是实际与开发人员交互的层,例如分析人员通过在Hive中写SQL就可以调用到中间层的MapReduce引擎来进行分析处理。Spark的GraphX、MLlib等组件可以用来进行图分析和机器学习等。中间层的Spark、Flink等作为核心计算引擎提供批计算和流计算支持。左边ZK和Oozie是任务配置协调,右边的是日志采集、迁移或者获取数据相关的组件,再往下是最重要的资源调度管理系统,最底层是数据存储,一个大数据平台就要提供能进行多模型数据存储的能力,比如除了最常见的关系数据,还有时序、文档、键值和图等数据。
当然,这个图有些组件所处的层次其实还值得继续讨论,例如ElasticSearch其实也是一个存储组件,Hbase在作为存储组件的时候其实也作为查询计算组件使用,Flink也可以放到最上层,作为开发人员直接交互的组件。Anyway,整体来讲,整个大数据生态差不多就是这样子的,下面来具体进行介绍一下。

 

分析

大数据平台按照整体架构从底向上可以分为:存储层、缓存层、计算层、组件层、工具层、调度协调层。大数据平台的各层之间是向上赋能的。例如计算层依赖存储层,组件应用层依赖于计算层。
下面针对每个不同的功能层中的每个组件进行介绍。这里将会从概览的角度来介绍每个引擎或者组件,后续会通过一系列的文章对每个引擎或者组件进行详细的分析。

1.存储层

存储层负责进行大数据平台的数据存储。过去的几十年,数据大部分以结构化的形式存储在关系数据库中,常见的如Oracle和MySQL两种。随着数据越来越多样,出现了各种类型的数据库,如图数据库、键值数据库、时序数据库、文档数据库等,以及除了传统的行存数据库外,也出现了列存数据库或者文件格式。

1.1 HDFS:HDFS 是 Hadoop Distribute File System,Hadoop分布式文件系统的简称。这个文件系统是一个适用于大的数据集的支持高吞吐和高容错的运行在通用(廉价)机上的分布式文件系统。

HDFS 是一个主从架构的服务。一个 HDFS 集群包括一个 NameNode 节点、一个 SecondaryNameNode 节点(非必须)和多个 DataNode 节点。

图中的几个要点:

  • NameNode管理着Metadata(元数据)
  • 客户端client对元数据的操作是指向NameNode,对用户数据的读写是通过DataNode
  • NameNode向DataNode发送Block的操作命令
  • 一块的副本被存储在不同的机架中

1.2 关系数据存储(行存储)

传统的数据库例如MySQL,Oracle等关系数据库,都采用的是行存储引擎,在基于行式存储的数据库中, 数据是按照行数据为基础逻辑存储单元进行存储的, 一行中的数据在存储介质中以连续存储形式存在。

1.3 列存储

列式存储(Column-based)是相对于行式存储来说的,新兴的 Hbase、HP Vertica、EMC Greenplum 等分布式数据库均采用列式存储。在基于列式存储的数据库中, 数据是按照列为基础的逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。

1.4 多模型存储

随着数据多样性的发展,多种类型的数据大量涌出,相对应的NoSQL系统也出现了。例如Neo4j图存储,用来存储社交网络、知识图谱等图数据;再入近两年Iot智能制造的兴起,大量工业生产生活中的时序数据,也对应出现了InfluxDB这种存储时序数据的系统;还有生产中常用的键值数据库Redis等。

2. 缓存层

缓存其实已经不是什么新概念了,无论是在操作系统还是传统的数据管理系统,都有缓冲区或者缓存的概念,主要是为了平衡CPU和磁盘之间的速度的差异,提高效率。在大数据的应用场景中,由于数据量比较大,数据的处理逻辑也比较复杂,因此一些中间过程结果可以复用的数据就可以通过分布式缓存来进行临时存储,其他的任务就可以避免数据的二次加工从而提高效率。

2.1 Alluxio

Alluxio(之前名为Tachyon)是世界上第一个以内存为中心的虚拟的分布式存储系统。它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁。 应用只需要连接Alluxio即可访问存储在底层任意存储系统中的数据。此外,Alluxio的以内存为中心的架构使得数据的访问速度能比现有方案快几个数量级。

 

Alluxio的特点是数据存储与计算分离,两部分引擎可以进行独立的扩展。上层的计算引擎(如Hadoop, Spark)可以通过Alluxio访问不同数据源(Amazon S3, HDFS)中的数据,通过Alluxio屏蔽底层不同的数据源,做到数据的无感获取。

3. 计算层(计算引擎)

有了数据之后,各个应用就可以利用这些数据进行不同维度或角度的分析,从而形成不同的数据价值产品。支撑这一过程的最重要的就是计算引擎。计算引擎为各个数据任务提供算力支持。
目前可以把计算引擎分为三类,批处理、流处理和即席(Ad-Hoc)查询三类。
批处理指的是大规模复杂的数据处理过程,通常的时间跨度在几分钟到数小时甚至数日;流处理指的是实时的数据处理和查询,通常的时间跨度在数百毫秒到数秒之间;即席(Ad-Hoc)查询指的是介于实时和批处理之间的一种查询处理,如一些交互式的数据探查任务,需要秒级或分钟级的较快的响应时间。

3.1 批处理

3.1.1 MapReduce(Hadoop)

MapReduce就是指我们常说的Hadoop MapReduce,它是一个批处理计算引擎。每个MapReduce任务都包含两个过程:Map过程和Reduce过程。

 

    • MapReduce的计算模型:Map和Reduce两个计算过
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值