购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章 企业级大数据技术体系概述

随着机构和企业积累的数据越来越多,大数据价值逐步体现出来。2015年国务院向社会公布了《促进大数据发展行动纲要》(以下简称《纲要》),正式将大数据提升为国家级战略。《纲要》明确提出了大数据的基本概念: 大数据是以容量大、类型多、存取速度快、应用价值高为主要特征的数据集合,正快速发展为对数量巨大、来源分散、格式多样的数据进行采集、存储和关联分析,从中发现新知识、创造新价值、提升新能力的新一代信息技术和服务业态 。《纲要》提到大数据在推动经济转型发展,重塑国家竞争优势,以及提升政府治理能力等方面具有重要的意义,提出在信用、交通、医疗、卫生、金融、气象等众多领域发展大数据。

为了确保大数据思想顺利落地,在各个行业开花结果,需要掌握和利用大数据技术。本书正是从技术角度探讨了如何利用开源技术构建大数据解决方案,从而真正为政府和企业带来实用价值。

1.1 大数据系统产生背景及应用场景

1.1.1 产生背景

大数据技术直接源于互联网行业。随着互联网的蓬勃发展,用户量和数据量越来越多,逐步形成了大数据,这成为大数据技术的基础。根据有关技术报告知道,国内百度、腾讯和阿里巴巴等公司数据规模如下:

为了采集、存储和分析大数据,互联网公司尝试研发大数据技术,在众多技术方案中,开源系统Hadoop与Spark成为应用最广泛的大数据技术,由于它们的用户量巨大,已经初步成为大数据技术规范。

1.1.2 常见大数据应用场景

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

1. 互联网领域

在互联网领域,大数据被广泛应用在三大场景中,分别是搜索引擎、推荐系统和广告系统。

2. 电信领域

电信领域是继互联网领域之后,大数据应用的又一次成功尝试。电信运营商拥有多年的数据积累,拥有诸如用户基本信息、业务发展量等结构化数据,也会涉及文本、图片、音频等非结构化数据。从数据来源看,电信运营商的数据涉及移动语音、固定电话、固网接入和无线上网等业务,积累了公众客户、政企客户和家庭客户等相关信息,也能收集到电子渠道、直销渠道等所有类型渠道的接触信息,这些逐步积累下来的数据,最终形成大数据。目前电信领域主要将大数据应用在以下几个方面

3. 医疗领域

医疗领域的数据量巨大,数据类型复杂。到2020年,医疗数据将增至35ZB,相当于2009年数据量的44倍。医疗数据包括影像数据、病历数据、检验检查结果、诊疗费用等在内的各种数据,合理利用这些数据可产生巨大的商业价值。大数据技术在医疗行业的应用将包含以下方向:临床数据对比、药品研发、临床决策支持、实时统计分析、基本药物临床应用分析、远程病人数据分析、人口统计学分析、新农合基金数据分析、就诊行为分析、新的服务模式等

4. 金融领域

银行拥有多年的数据积累,已经开始尝试通过大数据来驱动业务运营。银行大数据应用可以分为四大方面

1.2 企业级大数据技术框架

大数据尝试从海量数据中,通过一定的分布式技术手段,挖掘出有价值的信息,最终提供给用户,进而产生实用价值和商业价值。由于数据本身的多样性以及数据分析需求的多元化,大数据技术体系非常复杂,涉及的组件和模块众多,为了便于读者从顶层框架上对大数据有一个清楚的认识,本节尝试概括大数据技术框架。

在互联网领域,数据无处不在。以电子商务应用为例,如图1-1所示,当用户通过浏览器在淘宝上查看或购买商品时,会向淘宝后端HTTP服务器发送HTTP请求,这些HTTP服务器收到请求后,会将相应的内容返回给用户,同时以日志的形式将用户访问记录传大数据系统,以便能够通过大数据技术理解用户的行为意图,进而为广告投放、商品推荐等提供数据支持。本节将尝试剖析其间用到的基本的大数据技术。

图1-1 数据产生到入库大数据系统

从数据在信息系统中的生命周期看,大数据从数据源开始,经过分析、挖掘到最终获得价值一般需要经过6个主要环节 ,包括数据收集、数据存储、资源管理与服务协调、计算引擎、数据分析和数据可视化,技术体系如图1-2所示。每个环节都面临不同程度的技术挑战。

图1-2 企业级大数据技术体系

1.2.1 数据收集层

数据收集层由直接跟数据源对接的模块构成,负责将数据源中的数据近实时或实时收集到一起。数据源具有分布式、异构性、多样化及流式产生等特点:

由于数据源具有以上特点,将分散的数据源中的数据收集到一起通常是一件十分困难的事情。一个适用于大数据领域的收集系统,一般具备以下几个特点:

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

1.2.2 数据存储层

数据存储层主要负责海量结构化与非结构化数据的存储。传统的关系型数据库(比如MySQL)和文件系统(比如Linux文件系统)因在存储容量、扩展性及容错性等方面的限制,很难适应大数据应用场景。

在大数据时代,由于数据收集系统会将各类数据源源不断地发到中央化存储系统中,这对数据存储层的扩展性、容错性及存储模型等有较高要求,总结如下:

1.2.3 资源管理与服务协调层

随着互联网的高速发展,各类新型应用和服务不断出现。在一个公司内部,既存在运行时间较短的批处理作业,也存在运行时间很长的服务,为了防止不同应用之间相互干扰,传统做法是将每类应用单独部署到独立的服务器上。该方案简单易操作,但存在资源利用率低、运维成本高和数据共享困难等问题。为了解决这些问题,公司开始尝试将所有这些应用部署到一个公共的集群中,让它们共享集群的资源,并对资源进行统一使用,同时采用轻量级隔离方案对各个应用进行隔离,因此便诞生了轻量级弹性资源管理平台,相比于“一种应用一个集群”的模式,引入资源统一管理层可以带来众多好处:

图1-3 共享集群模式使得资源利用率提高

在构建分布式大数据系统时,会面临很多共同的问题,包括leader选举、服务命名、分布式队列、分布式锁、发布订阅功能等,为了避免重复开发这些功能,通常会构建一个统一的服务协调组件,包含了开发分布式系统过程中通用的功能。

1.2.4 计算引擎层

在实际生产环境中,针对不同的应用场景,我们对数据处理的要求是不同的,有些场景下,只需离线处理数据,对实时性要求不高,但要求系统吞吐率高,典型的应用是搜索引擎构建索引;有些场景下,需对数据进行实时分析,要求每条数据处理延迟尽可能低,典型的应用是广告系统及信用卡欺诈检测。为了解决不同场景下数据处理问题,起初有人尝试构建一个大统一的系统解决所有类型的数据计算问题,但最终以失败告终。究其原因,主要是因为不同类型的计算任务,其追求的目标是不同的,批处理计算追求的是高吞吐率,而实时计算追求的是低延迟。在现实系统中,系统吞吐率和处理延迟往往是矛盾的两个优化方向:系统吞吐率非常高时,数据处理延迟往往也非常高,基于此,用一个系统完美解决所有类型的计算任务是不现实的。

图1-4 计算引擎分类

计算引擎发展到今天,已经朝着“小而美”的方向前进,即针对不同应用场景,单独构建一个计算引擎,每种计算引擎只专注于解决某一类问题,进而形成了多样化的计算引擎。计算引擎层是大数据技术中最活跃的一层,直到今天,仍不断有新的计算引擎被提出。如图1-4所示,总体上讲,可按照对时间性能的要求,将计算引擎分为三类:

1.2.5 数据分析层

数据分析层直接跟用户应用程序对接,为其提供易用的数据处理工具。为了让用户分析数据更加容易,计算引擎会提供多样化的工具,包括应用程序API、类SQL查询语言、数据挖掘SDK等。

在解决实际问题时,数据科学家往往需根据应用的特点,从数据分析层选择合适的工具,大部分情况下,可能会结合使用多种工具,典型的使用模式是:首先使用批处理框架对原始海量数据进行分析,产生较小规模的数据集,在此基础上,再使用交互式处理工具对该数据集进行快速查询,获取最终结果。

1.2.6 数据可视化层

数据可视化技术指的是运用计算机图形学和图像处理技术,将数据转换为图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。它涉及计算机图形学、图像处理、计算机辅助设计、计算机视觉及人机交互技术等多个领域。

数据可视化层是直接面向用户展示结果的一层,由于该层直接对接用户,是展示大数据价值的“门户”,因此数据可视化是极具意义的。考虑到大数据具有容量大、结构复杂和维度多等特点,对大数据进行可视化是极具挑战性的。下面我们举例说明发展可视技术的意义及挑战。

在医学领域,为了认识人体内部结构,美国国家医学图书馆于1989年开始实施可视化人体计划(VHP),并委托科罗拉多大学医学院建立了一男一女的全部解剖结构数据库。他们分别将男女不同性别的两具尸体从头到脚做CT扫描和核磁共振扫描(男的间距1毫米,共1878个断面;女的间距0.33毫米,共5189个断面),然后将尸体填充蓝色乳胶并裹以明胶后冰冻至零下80摄氏度,再以同样的间距对尸体作组织切片的数码相机摄影,分辨率为2048×1216,最终所得数据共56GB(男13GB,女43GB)。全球用户可以在美国国家医学图书馆允许的情况下获得该数据并用于教学和科学研究。VHP数据集的出现标志着计算机三维重构图像和虚拟现实技术进入了医学领域,从而大大促进了医学的发展和普及。

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

真正意义上的大数据技术源于互联网行业,尤其是大数据技术引领者谷歌公司,由于其数据量大,解决的问题都是前沿的,对大数据技术的发展起到了重要的作用。本节将首先解析谷歌公司的大数据架构,之后介绍开源大数据实现方案。

1.3.1 Google大数据技术栈

Google在大数据方面的技术,均是以发表论文的形式对外公开的,尽管其没有对外开源系统实现代码,但这些论文直接带动了大数据技术的发展,尤其为大数据开源技术的发展指明了方向。Google公开发表的大数据系统方面的论文目前绝大部分都存在对应的开源系统实现。总结近10年Google发表的论文,涉及的大数据系统如图1-5所示,主要分布在数据存储层、资源管理与服务协调层、计算引擎层、数据分析层这四层中。

图1-5 Google大数据技术栈

1. 数据存储层

2. 资源管理与服务协调层

3. 计算引擎层

4. 数据分析层

1.3.2 Hadoop与Spark开源大数据技术栈

随着大数据开源技术的快速发展,目前开源社区已经积累了比较完整的大数据技术栈,应用最广泛的是以Hadoop与Spark为核心的生态系统,具体如图1-6所示,整个大数据技术栈涉及数据收集、数据存储、资源管理与服务协调、计算引擎和数据分析这五个层级。

图1-6 Hadoop与Spark大数据技术栈

1. 数据收集层:

2. 数据存储层

3. 资源管理与服务协调

4. 计算引擎层

5. 数据分析层

1.4 大数据架构:Lambda Architecture

Lambda Architecture(LA)最早是Twitter工程师Nathan Marz提出来的,它是一种大数据软件设计架构,其目的是指导用户充分利用批处理和流式计算技术各自的优点实现一个复杂的大数据处理系统。通过结合这两类计算技术,LA可以在延迟、吞吐量和容错之间找到平衡点。如图1-7所示,LA主要思想是将数据处理流程分解成三层:批处理层、流式处理层和服务层。

图1-7 Lambda Architecture大数据架构

一个经典的LA应用案例是推荐系统。在互联网行业,推荐系统被应用在各个领域,包括电子商务、视频、新闻等。推荐系统的设计目的是根据用户的兴趣特点和购买行为,向用户推荐感兴趣的信息和商品。推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助商家为其顾客购物提供完全个性化的决策支持和信息服务。推荐系统最核心的模块是推荐算法,推荐算法通常会根据用户的兴趣特点和历史行为数据构建推荐模型,以预测用户可能感兴趣的信息和商品,进而推荐给用户。

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

图1-8 推荐系统数据流水线

1.5 Hadoop与Spark版本选择及安装部署

1.5.1 Hadoop与Spark版本选择

随着社区迅猛发展以及各大互联网公司投入的增加,Hadoop与Spark已经成为大数据技术标准,这吸引了大量商业公司基于开源Hadoop与Spark版本实现自己的发行版,目前比较知名的Hadoop发行版有:

各个发行版之间同一系统对外使用方式和接口是完全兼容的,不同之处在于它们引入了不同系统解决某个场景的问题,比如CDH选择Impala解决交互式分析问题,而HDP选择Hive On Tez;CDH引入了Cloudera Navigator和Sentry解决安全问题,而HDP则使用Ranger和Knox,另外,它们均提供了个性化的运维与管理工具等。在线上环境部署私有Hadoop与Spark集群时,为了避免各个系统之间兼容性(比如HBase不同版本与Hadoop版本之间的兼容性)带来的麻烦,建议大家直接选用商业公司发行版。

1.5.2 Hadoop与Spark安装部署

目前Hadoop与Spark存在两种安装部署方式:人工部署和自动化部署。其中人工部署用于个人学习、测试或者小规模生产集群,而自动化部署则适用于线上中大规模部署。为了让读者亲自动手学习Hadoop与Spark,本书主要介绍人工部署方式。读者可参考本书最后的附录,学习Hadoop生态系统中各个组件的安装部署方法。对于自动化部署方式,我们有两种选择:自己构建自动化部署系统及使用商业公司实现方案,比如Ambari 和Cloudera Manager

1.6 小结

本章首先以数据生命周期为线索,提出了六层大数据技术体系,包括数据收集、数据存储、资源管理与服务协调、计算引擎、数据分析和数据可视化,接着介绍了大数据技术体系的两个经典视线:Google大数据技术栈和Hadoop与Spark生态系统,以及大数据架构,最后介绍了Hodoop与Spark的版本选择及安装部署。

1.7 本章问题

问题1: 比较Google大数据技术栈和Hadoop/Spark开源大数据技术栈,并将它们所有对应的相似系统找出来。

问题2: 在Lambda Architecture中批处理数据线的意义何在,能否只保留实时数据线? AS4vnewBtG0jMq7hNJjk6yqngjcYrF6rIHCzRnoc2Ky6quWmh+BGr30nMk6MvgLC

点击中间区域
呼出菜单
上一章
目录
下一章
×