编辑推荐
本书详细介绍了大数据的基本概念、原理与方法,以及通过大数据实践来讲述大数据技术的应用,包括如何运用阿里云大数据计算平台解决和分析实际的问题。本书*后还提供了大数据实践案例,完整地体现了理论与实践的有机结合。
内容简介
本书从大数据的基本概念开始,由浅入深地领会大数据的精髓。本书除了讲述必要的大数据理论之外,还通过大数据实践来讲述大数据技术的应用,包括如何运用阿里云大数据计算平台分析和解决实际问题,很好地体现了大数据理论与实践的有机结合。
本书分为三大部分,分别是大数据概述及基础、大数据处理和大数据分析与应用。其中,大数据概述及基础部分重点介绍数据组织、重要数据结构、大数据协同技术以及大数据存储技术等内容; 大数据处理部分重点介绍大数据处理框架,包括大数据批处理和流处理框架等内容; 大数据分析与应用部分重点介绍数据分析技术和机器学习的相关内容,以及如何利用阿里云的数加平台进行基本的大数据开发工作。
本书既可以作为高等院校计算机科学、软件工程及相关专业“大数据”课程的教材,也可以供系统分析师、系统架构师、软件开发工程师和项目经理,以及其他准备或正在学习大数据技术的读者(包括参加计算机等级考试或相关专业自学考试的人员)阅读和参考。
内页插图
目录
第一部分大数据概述及基础
第1章大数据概念和发展背景
1.1什么是大数据
1.2大数据的特点
1.3大数据的发展
1.4大数据的应用
1.5习题
第2章大数据系统架构概述
2.1总体架构概述
2.1.1总体架构设计原则
2.1.2总体架构参考模型
2.2运行架构概述
2.2.1物理架构
2.2.2集成架构
2.2.3安全架构
2.3阿里云飞天系统体系架构
2.3.1阿里云飞天整体架构
2.3.2阿里云飞天平台内核
2.3.3阿里云飞天开放服务
2.3.4阿里云飞天的特色
2.4主流大数据系统厂商
2.4.1阿里云数加平台
2.4.2Cloudera
2.4.3Hortonworks
2.4.4Amazon
2.4.5Google
2.4.6微软
2.5习题
第3章分布式通信与协同
3.1数据编码传输
3.1.1数据编码概述
3.1.2LZSS算法
3.1.3Snappy压缩库
3.2分布式通信系统
3.2.1远程过程调用
3.2.2消息队列
3.2.3应用层多播通信
3.2.4阿里云夸父RPC系统
3.2.5Hadoop IPC的应用
3.3分布式协同系统
3.3.1Chubby锁服务
3.3.2ZooKeeper
3.3.3阿里云女娲协同系统
3.3.4ZooKeeper在HDFS高可用方案中的使用
3.4习题
第4章大数据存储
4.1大数据存储技术的发展
4.2海量数据存储的关键技术
4.2.1数据分片与路由
4.2.2数据复制与一致性
4.3重要数据结构和算法
4.3.1Bloom Filter
4.3.2LSM Tree
4.3.3Merkle Tree
4.3.4Cuckoo Hash
4.4分布式文件系统
4.4.1文件存储格式
4.4.2GFS
4.4.3HDFS
4.4.4阿里云盘古
4.5分布式数据库NoSQL
4.5.1NoSQL数据库概述
4.5.2KV数据库
4.5.3列式数据库
4.5.4图数据库
4.5.5文档数据库
4.6阿里云数据库
4.6.1云数据库Redis
4.6.2云数据库RDS
4.6.3云数据库Memcache
4.7大数据存储技术的趋势
4.8习题
第二部分大数据处理
第5章分布式处理
5.1CPU多核和POSIX Thread
5.2MPI并行计算框架
5.3Hadoop MapReduce
5.4Spark
5.5数据处理技术的发展
5.6习题
第6章Hadoop MapReduce解析
6.1Hadoop MapReduce架构
6.2Hadoop MapReduce与高效能计算、网格计算的区别
6.3MapReduce工作机制
6.3.1Map
6.3.2Reduce
6.3.3Combine
6.3.4Shuffle
6.3.5Speculative Task
6.3.6任务容错
6.4应用案例
6.4.1WordCount
6.4.2WordMean
6.4.3Grep
6.5MapReduce的缺陷与不足
6.6习题
精彩书摘
第5章分布式处理
5.1CPU多核和POSIX Thread
为了提高任务的计算处理能力,下面分别从硬件和软件层面研究新的计算处理能力。
在硬件设备上,CPU技术不断发展,出现了SMP(对称多处理器)和NUMA(非一致性内存访问)两种高速处理的CPU结构。处理器性能的提升给大量的任务处理提供了很大的发展空间。图5.1是SMP和NUMA结构的CPU,CPU核数的增加带来了计算能力的提高,但是也随之带来了大量的问题需要解决,比如CPU缓存一致性问题、NUMA内存分配策略等,目前已经有比较不错的解决方案。
图5.1SMP和NUMA架构CPU
在软件层面出现了多进程和多线程编程。进程是内存资源管理单元,线程是任务调度单元。图5.2是进程和线程之间的区别。
图5.2进程与线程
总的来说,线程所占用的资源更少,运行一个线程所需要的资源包括寄存器、栈、程序计数器等。早期不同厂商提供了不同的多线程编写库,这些线程库差异巨大,为了统一多种不同的多线程库,共同制定了POSIX Thread多线程编程标准,以充分利用多个不同的线程库。组成POSIX Thread的API分成以下4个大类:
(1) 线程管理。线程管理主要负责线程的create、detach、join等,也包括线程属性的查询和设置。
(2) mutexes。处理同步的例程(routine)称为mutex,mutex提供了create、destroy、lock和unlock等函数。
(3) 条件变量。条件变量主要用于多个线程之间的通信和协调。
(4) 同步。同步用于管理读/写锁以及barriers。
5.2MPI并行计算框架
MPI(Message Passing Interface)是一个标准且可移植的消息传递系统,服务于大规模的并行计算。MPI标准定义了采用C、C++、Fortran语言编写程序的函数语法和语义。目前有很多经过良好测试和高效率的关于MPI的实现,广泛采用的实现有MPICH。下面以MPICH为例展开对MPI的讲解。
MPICH是一个高性能且可以广泛移植的MPI实现。图5.3为MPICH的架构图。
图5.3MPICH架构
如图5.3所示,应用程序通过MPI结构连接到MPICH接口层,图中的ROMIO是MPI.IO的具体实现版本,对应MPI标准中的高性能实现。MPICH包括ADI3、CH3 Device、CH3 Interface、Nemesis、Nemesis NetMod Interface。
(1) ADI3。ADI是抽象设备接口(abstract device interface),MPICH通过ADI3接口层隔离底层的具体设备。
(2) CH3 Device。CH3 Device是ADI3的一个具体实现,使用了相对少数目的函数功能。在CH3 Device实现了多个通信channel,channel提供了两个MPI进程之间传递数据的途径以及进程通信。当前包括两个channel,即Nemesis和Sock,其中Sock是一个基于UNIX Socket的channel,而Nemesis支持多种方法,不仅仅局限于Socket通信。
(3) CH3 Interface。CH3 Inferface用于定义访问Nemesis的接口规范。
(4) Nemesis。Nemesis允许两个MPI进程之间的网络通信采取多种方法,包括TCP、InfiniBand等。
5.3Hadoop MapReduce
Hadoop是一个由Apache基金会开发的分布式系统基础架构。Hadoop框架*核心的设计就是HDFS和MapReduce,HDFS为海量的数据提供了存储,而MapReduce为海量的数据提供了计算。
HDFS(Hadoop Distributed File System)有高容错性的特点,并且设计用来部署在低廉的硬件上; 而且它提供高吞吐量来访问应用程序的数据,适合有着超大数据集的应用程序。HDFS放宽了POSIX的要求,可以用流的形式访问文件系统中的数据。
MapReduce是Google公司提出的一个软件框架,用于大规模数据集(大于1TB)的并行运算。“Map”和“Reduce”概念以及它们的主要思想都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。
当前的软件实现是指定一个Map函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce函数,用来保证所有映射的键值对中的每一个共享相同的键组。
处理流程如下:
(1) MapReduce框架将应用的输入数据切分成M个模块,典型的数据块大小为64MB。
(2) 具有全局*的主控Master以及若干个Worker,Master负责为Worker分配具体的Map或Reduce任务并做全局管理。
(3) Map任务的Worker读取对应的数据块内容,从数据块中解析Key/Value记录数据并将其传给用户自定义的Map函数,Map函数输出的中间结果Key/Value数据在内存中缓存。
(4) 缓存的Map函数产生的中间结果周期性地写入磁盘,每个Map函数中间结果在写入磁盘前被分割函数切割成R份,R是Reduce的个数。一般用Key对R进行哈希取模。Map函数完成对应数据块处理后将R个临时文件位置通知Master,Master再转交给Reduce任务的Worker。
(5) Reduce任务Worker接到通知时将Map产生的M份数据文件pull到本地(当且仅当所有Map函数完成时Reduce函数才能执行)。Reduce任务根据中间数据的Key对记录进行排序,相同Key的记录聚合在一起。
(6) 所有Map、Reduce任务完成,Master唤醒用户应用程序。
5.4Spark
Spark是UC Berkeley AMP Lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于Map.Reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点; 不同于MapReduce的是中间输出和结果可以保存在内存中,从而不再需要读/写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的Map.Reduce的算法。
Spark*主要的结构是RDD(Resilient Distributed Datasets),它表示已被分区、不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现。RDD必须是可序列化的。RDD可以缓存到内存中,每次对RDD数据集操作之后的结果都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘I/O操作。这很适合迭代运算比较常见的机器学习算法、交互式数据挖掘。
与Hadoop类似,Spark支持单节点集群或多节点集群。对于多节点操作,Spark可以采用自己的资源管理器,也可以采用Mesos集群管理器来管理资源。Mesos为分布式应用程序的资源共享和隔离提供了一个有效平台(参见图5.4)。该设置允许Spark与Hadoop共存于节点的一个共享池中。
图5.4Mesos集群管理器
5.5数据处理技术的发展
数据处理从早期的共享分时单CPU操作系统处理到多核并发处理,每台计算机设备的处理能力在不断增强,处理的任务复杂度在不断增加,任务的处理时间在不断减少。
然而,随着大数据技术的不断发展,一台计算设备无法胜任目前大数据计算的庞大的计算工作。为了解决单台计算机无法处理大规模数据计算的问题,连接多台计算机设备整合成一个统一的计算系统,对外提供计算服务。早期Google公司的分布式计算框架MapReduce采用的思想就是连接多台廉价的计算设备,以此来提供进行大规模计算任务的能力。但是MapReduce是建立在磁盘之上的并行计算框架,由于机械磁盘本身的局限性,MapReduce仍然有很大的计算延迟。Spark提出了把计算结果存放在内存中,利用内存作为存储介质的方法极大地缩短了系统的响应时间,降低了计算任务返回结果的延迟。为了满足大规模机器学习计算任务的需求,也设计了大量的分布式机器学习框架来训练机器模型参数,比如Parameter Server;针对图计算场合,Google公司设计实现了Pregel图计算框架,用于处理*短路径、Dijstra等经典图计算任务; 为了满足实时计算任务需求,设计实现了流计算框架,比如Spark Streaming、Storm、Flink等实时计算框架。
总之,目前处理技术在往大规模、低延迟方向发展,内存空间的扩大以及内存存储成本的降低给大规模数据处理提供了极好的发展契机。
5.6习题
1. 简述CPU技术的发展趋势。
2. 简述MPICH并行计算框架。
3. 简述MapReduce的原理。
……
前言/序言
互联网技术不断发展,各种技术不断涌现,其中大数据技术已成为一颗闪耀的新星。我们已经处于数据世界,互联网每天产生大量的数据,利用好这些数据可以给我们的生活带来巨大的变化以及提供极大的便利。目前大数据技术受到越来越多的机构的重视,因为大数据技术可以给其创造巨大的利润,其中的典型代表是个性化推荐以及大数据精准营销。
本书在讲述大数据的基本概念、原理与方法的基础上,详细而全面地介绍了可以实际用于大数据实践的各种技能,旨在使学生通过有限课时的学习后,不仅能对大数据技术的基本原理有所认识,而且能够具备基本的大数据技术开发能力以及运用大数据技术解决基本的数据分析问题,理解大数据框架(尤其是阿里云大数据计算平台),在阿里云大数据平台上进行基本的大数据开发工作的能力。
本书分为三大部分,分别是大数据概述及基础、大数据处理和大数据分析与应用。其中,大数据概述及基础部分重点介绍数据组织、重要数据结构、大数据协同技术以及大数据存储技术等内容; 大数据处理部分重点介绍大数据处理框架,包括大数据批处理和流处理框架等内容; 大数据分析与应用部分重点介绍数据分析技术和机器学习的相关内容,以及如何利用阿里云的数加平台进行基本的大数据开发工作。
本书与其他类似著作的不同之处在于,除了讲述必要的大数据理论之外,还通过大数据实践来讲述大数据技术的应用,包括如何运用阿里云大数据计算平台解决和分析实际的问题,如阿里云MaxCompute和StreamCompute等。本书的*后一章“大数据实践: 基于数加平台的推荐系统”是学生在做课程设计时可供模仿的一个项目,它完整地体现了理论与实践的有机结合。
本书的理论知识的教学安排建议如下。
章节内容学时数
第1章大数据概念和发展背景1
第2章大数据系统架构概述1~2
第3章分布式通信与协同2~4
第4章大数据存储4~6
第5章分布式处理2
第6章Hadoop MapReduce解析2~4
第7章Spark解析2~4
第8章流计算2
第9章图计算2
第10章阿里云大数据计算服务平台2
第11章集群资源管理与调度4~6
第12章数据分析2~4
第13章数据挖掘与机器学习技术2~4
第14章大数据实践: 基于数加平台的推荐系统4~5
建议理论教学时数: 32~48学时。
建议实验(实践)教学时数: 16~32学时。
教师可以按照自己对大数据的理解适当地删除一些章节,也可以根据教学目标,灵活地调整章节的顺序,增减各章的学时数。
在本书成书的过程中,得到了万昭祎、李旭、苏俊洋以及阿里巴巴的李妹芳等人的大力支持,在此表示衷心的感谢。
由于大数据是一门新兴学科,大数据的教学方法本身还在探索之中,加之我们的水平和能力有限,本书难免有疏漏之处。恳请各位同仁和广大读者给予批评指正,也希望各位能将实践过程中的经验和心得与我们交流。
作者2017年1月
《海量数据的崛起:洞察与实践》 在这个信息爆炸的时代,我们正被前所未有的数据洪流所淹没。从社交媒体上的每一次互动,到传感器收集的每一次读数,再到商业交易的每一次记录,数据以前所未有的速度和规模产生、积累和传播。这股汹涌的数据浪潮,不仅仅是数字的堆砌,更是蕴藏着巨大价值的宝藏。如何有效地驾驭这股力量,从中挖掘出深刻的洞察,并将其转化为切实可行的行动,已成为个人、组织乃至社会面临的关键挑战。《海量数据的崛起:洞察与实践》正是为了应对这一时代需求而精心构思。 本书并非旨在罗列枯燥的技术名词,而是致力于为读者勾勒出一幅清晰、全面且引人入胜的关于海量数据世界的全景图。我们将从数据产生的源头追溯,探讨其演变路径,并深入理解现代社会为何如此依赖并被数据所驱动。我们的目标是帮助读者建立起对海量数据本质的深刻认识,理解其潜在的力量,以及如何在日常工作和生活中,乃至在更广阔的社会层面,有效地利用这些数据。 第一章:数据时代的黎明——理解海量数据的本质与演变 本章将带您穿越时空,回溯数据发展的历史轨迹。从纸质文档到电子表格,再到如今无处不在的数字信息,我们将审视数据记录方式的每一次飞跃,以及这些飞跃如何为我们今天所面临的海量数据时代奠定基础。我们将探讨“大数据”这一概念的由来,理解它所指代的不仅仅是数据的“量”,更包含数据的“多样性”和“速度”。我们将解析为什么我们现在会如此频繁地听到“大数据”这个词,它在科技、经济、社会等多个领域所引发的变革。 具体而言,本章将深入探讨: 数据的起源与演变: 从原始的记录方式到现代的数字化信息,数据形态的变迁如何塑造了信息时代的到来。 “大数据”的定义与特征: 深入解析大数据的三大经典特征——体量(Volume)、速度(Velocity)、多样性(Variety),并引入新的维度,如真实性(Veracity)和价值(Value),阐述其多维度、动态化的内涵。 数据驱动的社会: 为什么数据已成为现代社会运转的基石?分析数据在决策制定、科学研究、商业运营、公共服务等各个领域的关键作用。 海量数据带来的机遇与挑战: 探讨海量数据为我们带来的前所未有的机遇,例如更精准的预测、更个性化的服务、更深入的科学发现;同时也审视其带来的挑战,如隐私保护、数据安全、算法偏见等。 第二章:数据驱动的洞察——从海量数据中挖掘价值 海量数据本身并不能直接带来价值,关键在于我们如何从中提炼出有意义的洞察。本章将聚焦于数据分析的核心理念和基本方法,帮助读者理解如何将原始数据转化为可以指导行动的知识。我们将介绍数据分析的思维模式,从提出问题、收集数据、清洗数据到分析数据、解读结果,逐步建立起一个完整的数据洞察流程。 本章将涵盖: 数据分析的思维范式: 如何像一位侦探一样,从看似杂乱的数据中寻找线索,发现隐藏的模式和关联。 数据收集与预处理: 了解不同来源的数据收集方式,以及如何进行数据清洗、转换和整合,以保证数据质量,为后续分析打下基础。 探索性数据分析(EDA): 运用统计学方法和可视化技术,初步了解数据的分布、趋势和异常值,为更深入的分析提供方向。 关联分析与模式识别: 学习如何发现数据项之间的关系,例如用户购买行为的关联性,或者社交网络中的社群结构。 预测与分类: 介绍基于历史数据预测未来趋势,或者将数据项归入特定类别的基本方法,理解这些技术如何在实际场景中应用。 可视化呈现: 强调清晰、有效的可视化手段在传达数据洞察中的重要性,让复杂的分析结果一目了然。 第三章:数据驱动的实践——海量数据在各行各业的应用 本章将带领读者走进真实世界,审视海量数据如何在不同行业和领域落地生根,并产生巨大的实际效益。我们将通过生动具体的案例,展示数据分析和数据应用是如何重塑商业模式、提升服务效率、推动科学进步,乃至改善民生的。 我们将深入探讨以下领域的应用: 商业与零售: 客户洞察与精准营销: 如何通过分析用户的购买历史、浏览行为、社交互动,构建用户画像,实现个性化推荐和精准广告投放。 供应链优化: 如何利用数据分析预测需求,优化库存管理,降低物流成本。 欺诈检测: 如何通过分析交易数据,识别异常模式,有效防范金融欺诈。 医疗健康: 疾病预测与诊断: 如何利用基因数据、病历数据、可穿戴设备数据,辅助医生进行疾病的早期诊断和预测。 药物研发: 如何通过分析大量的生物医学数据,加速新药的发现和研发进程。 公共卫生监测: 如何通过分析人口流动、疾病报告等数据,及时监测和预警疫情。 金融服务: 风险评估与信贷审批: 如何基于多维度的数据,更准确地评估借款人的信用风险。 量化交易: 如何利用海量市场数据,构建交易策略,实现自动化交易。 反洗钱与反恐融资: 如何通过分析交易网络,识别可疑活动。 智慧城市与公共服务: 交通管理: 如何利用交通流量数据,优化信号灯配时,缓解交通拥堵。 能源管理: 如何通过分析能源消耗数据,提高能源利用效率。 公共安全: 如何利用视频监控、社交媒体数据,提升城市安全水平。 科学研究与探索: 天文学: 如何分析望远镜收集的海量观测数据,发现新的天体和宇宙现象。 气候科学: 如何处理全球气候模型产生的大量数据,理解气候变化的机制。 基因组学: 如何分析人类基因组测序数据,揭示生命的奥秘。 第四章:数据驱动的未来——构建数据智能社会 展望未来,海量数据将继续以前所未有的方式渗透到我们生活的方方面面。本章将探讨数据在人工智能、物联网、区块链等前沿技术融合下的未来发展趋势,以及如何构建一个更加智能、高效、可持续的数据化社会。我们将讨论数据伦理、数据治理、数据安全等重要议题,强调在拥抱数据带来的便利的同时,也必须审慎地处理其带来的伦理和社会影响。 本章将重点讨论: 数据与人工智能的协同: 探讨数据在驱动机器学习、深度学习等人工智能技术发展中的核心作用,以及人工智能如何反过来赋能数据分析。 物联网(IoT)时代的数据洪流: 分析海量物联网设备产生的数据将如何改变我们的生活方式和生产模式。 区块链技术与数据安全: 探讨区块链技术如何在保障数据安全、透明和可追溯性方面发挥作用。 数据伦理与隐私保护: 深入讨论在使用和分析数据时,如何尊重个人隐私,避免歧视和不公平。 数据治理与政策法规: 探讨建立健全的数据治理框架和相关政策法规的重要性,以促进数据的合理利用和发展。 培养数据素养: 强调个人和社会层面提升数据素养的紧迫性,让每个人都能更好地理解、使用和参与到数据驱动的未来中。 《海量数据的崛起:洞察与实践》不仅仅是一本介绍技术的书籍,它更是一次关于如何理解、驾驭和利用数据力量的探索之旅。我们希望通过本书,能够激发您对海量数据的好奇心,培养您从数据中发现价值的能力,并引导您在日益数据化的世界中,成为一个更有洞察力、更有行动力的参与者。无论您是学生、研究者,还是行业从业者,亦或是对数据驱动的未来充满憧憬,本书都将是您不可或缺的指南。让我们一起,乘风破浪,拥抱数据时代的无限可能。