大数据技术体系笔记——概述

本系列文章按照大数据五层架构介绍整个大数据技术体系,即 数据收集→数据存储→资源管理与服务协调→计算引擎→数据分析

一、总体概述

1、大数据技术体系概述

大数据的基本概念:大数据是以容量大、类型多、存取速度快、应用价值高为主要特征的数据集合,正快速发展为对数量巨大、来源分散、格式多样的数据进行采集、存储和关联分析,从中发现新知识、创造新价值、提升新能力的新一代信息技术和服务业态。——《促进大数据发展行动纲要》(2015)

广泛应用:它产生于互联网领域,并逐步推广到电信、医疗、金融、交通等领域,大数据技术在众多行业中产生了实用价值。

  • 互联网领域的三大场景:搜索引擎、推荐系统和广告系统。
  • 电信领域:网络管理和优化、市场与精准营销、客户关系管理、企业运营管理、数据商业化。
  • 医疗领域:临床数据对比、药品研发、临床决策支持、实时统计分析、基本药物临床应用分析、远程病人数据分析、人口统计学分析、新农合基金数据分析、就诊行为分析、新的服务模式等。
  • 金融领域: 客户画像应用、精准营销、风险管控、运营优化。

大数据尝试从海量数据中,通过一定的分布式技术手段,挖掘出有价值的信息,最终提供给用户,进而产生实用价值和商业价值。

2、大数据技术体系

从数据在信息系统中的生命周期看,大数据从数据源开始,经过分析、挖掘到最终获得价值一般需要经过6个主要环节 [1] ,包括数据收集、数据存储、资源管理与服务协调、计算引擎、数据分析和数据可视化
企业级大数据技术体系

(1)数据收集层

数据收集层:由直接跟数据源对接的模块构成,负责将数据源中的数据近实时或实时收集到一起。

  • 数据源:具有分布式、异构性、多样化及流式产生等特点;
  • 一个适用于大数据领域的收集系统,一般具备以下几个特点:扩展性、可靠性、安全性、低延迟

为了让后端获取全面的数据,以便进行关联分析和挖掘,通常我们建议将数据收集到一个中央化的存储系统中。

(2)数据存储层

数据存储层:主要负责海量结构化与非结构化数据的存储。

  • 传统的关系型数据库(比如MySQL)和文件系统(比如Linux文件系统):因在存储容量、扩展性及容错性等方面的限制,很难适应大数据应用场景。
  • 大数据时代,对数据存储层的扩展性、容错性及存储模型等有较高要求。

(3)资源管理与服务协调层

为了解决存在的资源利用率低、运维成本高和数据共享困难等问题,在集群中引入资源统一管理层。

  • 特点:资源利用率高、运维成本低、数据共享

(4)计算引擎层

针对不同应用场景,单独构建一个计算引擎,每种计算引擎只专注于解决某一类问题,进而形成了多样化的计算引擎。(系统吞吐率和处理延迟往往是矛盾的两个优化方向)

总体上讲,可按照对时间性能的要求,将计算引擎分为三类:

  • 批处理: 对时间要求最低,一般处理时间为分钟到小时级别,甚至天级别,它追求的是高吞吐率,即单位时间内处理的数据量尽可能大,典型的应用有搜索引擎构建索引、批量数据分析等。
  • 交互式处理: 对时间要求比较高,一般要求处理时间为秒级别,这类系统需要跟人进行交互,因此会提供类SQL的语言便于用户使用,典型的应用有数据查询、参数化报表生成等。
  • 实时处理: 对时间要求最高,一般处理延迟在秒级以内,典型的应用有广告系统、舆情监测等。
    在这里插入图片描述

(5)数据分析层

数据分析层:直接跟用户应用程序对接,为其提供易用的数据处理工具。

  • 例如:包括应用程序API、类SQL查询语言、数据挖掘SDK等。
  • 典型的使用模式是:多种工具混合使用。如首先使用批处理框架对原始海量数据进行分析,产生较小规模的数据集,在此基础上,再使用交互式处理工具对该数据集进行快速查询,获取最终结果。

(6)数据可视化层

数据可视化技术:运用计算机图形学和图像处理技术,将数据转换为图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。

二、企业级大数据技术实现方案

1、Google大数据技术栈

涉及的大数据系统主要分布在数据存储层、资源管理与服务协调层、计算引擎层、数据分析层这四层中。
在这里插入图片描述

2、Hadoop与Spark开源大数据技术栈

目前开源社区中应用最广泛的是以Hadoop与Spark为核心的生态系统

整个大数据技术栈涉及数据收集、数据存储、资源管理与服务协调、计算引擎和数据分析五个层级

在这里插入图片描述

(1)数据收集层

组成:关系型数据收集组件、非关系型数据收集组件、分布式消息队列

  • Sqoop/Canal关系型数据收集和导入工具,是连接关系型数据库(比如MySQL)和Hadoop(比如HDFS)的桥梁,Sqoop可将关系型数据库中的数据全量导入Hadoop,反之亦可,而Canal则可用于实现数据的增量导入。
  • Flume非关系型数据收集工具,主要是流式日志数据,可近实时收集,经过滤,聚集后加载到HDFS等存储系统。
  • Kafka分布式消息队列,一般作为数据总线使用,它允许多个数据消费者订阅并获取感兴趣的数据。相比于其他消息队列,它采用分布式高容错设计,更适合大数据应用场景。

(2)数据存储层

组成:布式文件系统(面向文件的存储)、分布式数据库(面向行/列的存储)

  • HDFS:Hadoop分布式文件系统,Google GFS的开源实现,具有良好的扩展性与容错性等优点,尤其是出色的容错机制设计,使得它非常适合构建在廉价机器上,这大大降低了大数据存储成本。
    • 目前数据存储格式,包括SSTable(Sorted String Table),文本文件、二进制key/value格式Sequence File、列式存储格式Parquet、ORC [9] 和Carbondata等。
  • HBase:构建在HDFS之上的分布式数据库,Google BigTable的开源实现,允许用户存储结构化与半结构化的数据,支持行列无限扩展以及数据随机查找与删除。
  • Kudu:分布式列式存储数据库,允许用户存储结构化数据,支持行无限扩展以及数据随机查找与更新。

(3)资源管理与服务协调

  • YARN:统一资源管理与调度系统,它能够管理集群中的各种资源(比如CPU和内存等),并按照一定的策略分配给上层的各类应用。YARN内置了多种多租户资源调度器,允许用户按照队列的方式组织和管理资源,且每个队列的调度机制可独立定制。
  • ZooKeeper:基于简化的Paxos协议实现的服务协调系统,它提供了类似于文件系统的数据模型,允许用户通过简单的API实现leader选举、服务命名、分布式队列与分布式锁等复杂的分布式通用模块。

(4)计算引擎层

三种引擎:批处理、交互式处理和流式实时处理

  • MapReduce/Tez:MapReduce是一个经典的批处理计算引擎,它是Google MapReduce的开源实现,具有良好的扩展性与容错性,允许用户通过简单的API编写分布式程序;Tez是基于MapReduce开发的通用DAG(Directed Acyclic Graph的简称,有向无环图)计算引擎,能够更加高效地实现复杂的数据处理逻辑,目前被应用在Hive、Pig等数据分析系统中。
  • Spark:通用的DAG计算引擎,它提供了基于RDD(Resilient Distributed Dataset)的数据抽象表示,允许用户充分利用内存进行快速的数据挖掘和分析。
  • Impala/Presto:分别由Cloudera和Facebook开源的MPP(MassivelyParallel Processing)系统,允许用户使用标准SQL处理存储在Hadoop中的数据。它们采用了并行数据库架构,内置了查询优化器,查询下推,代码生成等优化机制,使得大数据处理效率大大提高。
  • Storm/Spark Streaming:分布式流式实时计算引擎,具有良好的容错性与扩展性,能够高效地处理流式数据,它允许用户通过简单的API完成实时应用程序的开发工作。

(5)数据分析层

包括数据分析工具。

  • Hive/Pig/SparkSQL:在计算引擎之上构建的支持SQL或脚本语言的分析系统。其中,Hive是基于MapReduce/Tez实现的SQL引擎,Pig是基于MapReduce/Tez实现的工作流引擎,SparkSQL是基于Spark实现的SQL引擎。
  • Mahout/MLlib:在计算引擎之上构建的机器学习库实现了常用的机器学习和数据挖掘算法。其中,Mahout最初是基于MapReduce实现的,目前正逐步迁移到Spark引擎上,MLlib是基于Spark实现的。
  • Apache Beam/Cascading:基于各类计算框架而封装的高级API,方便用户构建复杂的数据流水线。Apache Beam统一了批处理和流式处理两类计算框架,提供了更高级的API方便用户编写与具体计算引擎无关的逻辑代码;Cascading内置了查询计划优化器,能够自动优化用户实现的数据流。采用了面向tuple的数据模型,如果你的数据可表示成类似于数据库行的格式,则使用Cascading处理将变得很容易。

三、大数据Lambda架构

Lambda Architecture(LA)是一种大数据软件设计架构,其目的是指导用户充分利用批处理和流式计算技术各自的优点实现一个复杂的大数据处理系统。通过结合这两类计算技术,LA可以在延迟、吞吐量和容错之间找到平衡点。

LA主要思想:将数据处理流程分解成批处理层、流式处理层和服务层三层。

  • 批处理层 :利用分布式批处理计算,以批为单位处理数据,并产生一个经预计算产生的只读数据视图。该层将数据流看成只读的、仅支持追加操作的超大数据集。它可以一次性处理大量数据,引入复杂的计算逻辑(比如机器学习中的模型迭代计算,历史库的匹配等),其优点是吞吐率高,缺点是数据处理延迟高,通常是分钟或小时级别。
  • 流式处理层 :采用流式计算技术,大大降低了数据处理延迟(通常是毫秒或秒级别),其优点是数据处理延迟低,缺点是无法进行复杂的逻辑计算,得到的结果往往是近似解。
  • 服务层 :为了整合两层的计算结果引入服务层,它对外提供了统一的访问接口以方便用户使用。
    Lambda Architecture大数据架构

示例:典型的推荐系统数据流水线架构

  • 在该架构中,数据统一流入Kafka,之后按照不同时间粒度导入批处理和流式处理两个系统中。
  • 批处理层拥有所有历史数据(通常保存到HDFS/HBase中),通常用以实现推荐模型,它以当前数据(比如最近一小时数据)和历史数据为输入,通过特征工程、模型构建(通常是迭代算法,使用MapReduce/Spark实现)及模型评估等计算环节后,最终获得最优的模型并将产生的推荐结果存储(比如Redis)起来,整个过程延迟较大(分钟甚至小时级别);
  • 为了解决推荐系统中的冷启动问题(新用户推荐问题),往往会引入流式处理层:它会实时收集用户的行为,并基于这些行为数据通过简单的推荐算法(通常使用Storm/Spark Streaming实现)快速产生推荐结果并存储起来。
  • 为了便于其他系统获取推荐结果,推荐系统往往通过服务层对外提供访问接口,比如网站后台在渲染某个访问页面时,可能从广告系统、推荐系统以及内容存储系统中获取对应的结果,并返回给客户端。

在这里插入图片描述

  • 17
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值