大数据思维
什么是大数据
大数据具备Volume、Velocity、Variety和Value四个特征,简称“4V”,即数据体量巨大、速度快、类型多样,价值密度低但整体价值高。
大数据产生
数据产生经历了被动、主动和自动三个阶段,分别是运营式系统阶段、用户原创内容阶段和感知式系统阶段。
对数据分析的新认识
- 不是随机样本,而是全体数据
- 不是纯净,而是混杂
- 不是精确,而是趋势
- 不是因果关系,而是相关关系
大数据技术概述
大数据相关技术
大数据处理的基本流程
数据抽取与集成。
-
数据分析。
核心,大数据的价值产生于分析过程。
挑战,噪音数据清洗,处理大数据的算法,数据结果的衡量标准。
-
数据解释。用户更关心对结果的解释。
引入可视化技术;让用户了解并参与分析过程。
大数据关键技术
- 大数据采集技术。
- 大数据预处理技术。
- 大数据存储和管理技术。
- 大数据处理技术。批处理模式和流处理模式。
- 大数据分析和挖掘技术。常用方法包括:分类、回归分析、聚类、关联规则。
- 大数据展示技术。特征:实时性、操作简单、丰富的展现、支持多种数据源。
大数据采集
大数据采集概述
挑战:数据源的种类多,类型繁杂,数据量大,产生速度快。所以大数据采集技术面临的挑战是,一方面要保证数据采集的可靠性和高效性,同时还要避免重复数据。
大数据采集方法
- 数据库采集
- 系统日志采集
- 网络数据采集
- 感知设备数据采集
系统日志采集
特征:
- 解耦应用系统和分析系统。
- 支持近实时的在线分析和分布式并发的离线分析。
- 高可扩展性。数据量增加时,可以水平扩展结点。
工具:
- Hadoop Chukwa
- Apache Flume
- Facebook Scribe
- LinkedIn Kafka
分布式架构,能够满足每秒数百兆的日志采集和传输需求。
大数据预处理
大数据预处理概述
作用:数据预处理能够改善数据质量,从而提高数据挖掘过程中的有效性和准确性。
数据清洗
补全遗漏数据,消除噪音数据,纠正不一致的错误。
数据集成
将来自多个数据源的数据合并到一起,构成一个完整的数据集。
数据转换
将数据格式转换成适合数据挖掘的形式。
处理内容:
- 平滑处理
- 合计处理
- 数据泛化处理
- 规格化处理。重要。
- 属性构造处理
数据消减
删除冗余特征,聚类消除多余数据。
主要策略:
- 数据立方合计
- 维度消减
- 数据压缩
- 数据块消减
- 离散化与概念层次生成
大数据处理系统
Google大数据处理系统
Google使用的大数据平台包括三个相互独立又紧密结合的系统,GFS,分布式文件系统,MapReduce,分布式计算框架,BigTable,面向列的分布式数据库。
GFS
GFS采用廉价的商用服务器组成分布式集群,能够在频繁的故障中确保数据存储的安全,不间断的提供服务。
GFS架构设计的优势:1. Client和Master Server之间只有控制流,没有数据流,降低了Master Server的负载。2. Client和Chunk Server之间直接传输数据流,文件被分成多个chunk存储,提高了系统I/O的并行度。
MapReduce
MapReduce封装了分布式系统中并行处理、容错处理、本地化计算、负载均衡等细节,用户只需要关心Map和Reduce两个计算过程。
Hadoop大数据处理系统
开源,与Google内部使用的分布式处理系统原理相同。
大数据文件系统HDFS
HDFS简介
HDFS是Hadoop分布式文件系统。在Hadoop体系结构中有两类结点,一类是NameNode,一类是DataNode,分别承担Master和Worker的职责。
HDFS主要针对“一次写入,多次读取”的应用场景,不适合实时交互性很强的应用场景,也不适合存储大量小文件。
HDFS基本原理
传统分布式系统问题
- 各个存储结点负载不均衡
- 数据可靠性低
- 文件管理困难
HDFS基本思想
- 对外提供统一的文件管理功能。
- 将大文件分割成不同的块,存储在不同的服务器上。
- 每个文件块有多个备份,一般是3个。
- 在NameNode中记录和维护文件的元信息。
HDFS设计理念
- 可构建在廉价机器上
- 高容错性
- 适合批处理
- 适合存储大文件
HDFS的局限
- 实时性差。
- 小文件问题。
- 文件修改问题。不支持多个写入者,不支持在任意位置修改。
HDFS系统实现
其他参考:Hadoop分布式文件系统 - 架构和设计
HDFS整体架构
HDFS数据复制
HDFS中的文件都是一次性写入的,并且严格要求在任何时候只能有一个写入者。
同一个机架内的两台机器间的带宽会比不同机架的两台机器间的带宽大,HDFS默认的副本实例数为3,其中两个在同一机架,另一个在不同机架。
HDFS数据访问机制
其他参考:hdfs架构详解
读取流程
写入流程
大数据批处理Hadoop MapReduce
其他参考: Hadoop Map/Reduce教程
MapReduce简介
Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。
一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序, 然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。 整个框架负责任务的调度和监控,以及重新执行已经失败的任务。
通常,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说,计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常高效地利用。
Map/Reduce框架由一个单独的master JobTracker 和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由master指派的任务。
应用程序至少应该指明输入/输出的位置(路径),并通过实现合适的接口或抽象类提供map和reduce函数。再加上其他作业的参数,就构成了作业配置(job configuration)。然后,Hadoop的 job client提交作业(jar包/可执行程序等)和配置信息给JobTracker,后者负责分发这些软件和配置信息给slave、调度任务并监控它们的执行,同时提供状态和诊断信息给job-client。
MapReduce工作流程
MapReduce实际处理过程可以分解为Input、Map、Sort、Combine、Partition、Reduce、Output等阶段。
MapReduce作业执行流程
MapReduce的Shuffle阶段
大数据快速处理Spark
Hadoop MapReduce要求每个步骤间的数据都要序列化到磁盘,这意味着Map Reduce作业的I/O成本很高,不适合于交互分析和机器学习。
Spark是一个基于内存的开源计算框架,通过提供内存计算,减少了迭代计算时的I/O开销。
Spark与Hadoop
Hadoop MapReduce缺点
- MapReduce表达能力有限
- 磁盘I/O开销大
- 计算延迟高
Spark优点
- 基于内存计算
- 提供了更多的计算类型
- 提供统一的框架管理批量数据和流数据
- Spark基于有向无环图的任务调度机制比MapReduce的迭代执行机制更优越
RDD概念
Spark的核心是建立在统一的抽象弹性分布式数据集(Resilient Distributed Dataset)。
可以将RDD理解为一个分布式对象集合,本质上是一个只读的分区记录集合。每个RDD可以分成多个分区,每个分区就是一个数据集片段。一个RDD的不同分区可以保存到集群中的不同结点上,从而可以在集群中的不同结点上进行并行计算。
RDD特点:1. 只读,2. 分布式,3. 弹性,计算过程中如果内存不足会和硬盘交换数据,4. 基于内存,可以全部或部分缓存在内存中,多次计算间重复利用。
RDD基本操作:转化(Transformation)操作和行动(Action)操作。转化操作就是从一个RDD产生一个新的RDD,而行动操作就是进行实际的计算。
大数据实时流计算Spark Streaming
Spark Streaming简介
Spark Streaming的处理机制是,接收实时的输入数据流,并根据一定的时间间隔(如1秒)拆分成一批批的数据,通过Spark Engine处理这些批数据,得到结果。
Spark Streaming支持一个高层的抽象,叫做离散流(Discretized Stream)或者DStream,它代表连续的数据流。在内部,DStream是由一系列RDD组成。一批数据对应一个RDD实例。
大数据挖掘
数据挖掘简介
数据挖掘就是通过对大量数据的分析,发现信息之间的关联,找到有用的知识的过程。
数据挖掘的价值:1. 相关性,2. 趋势,3. 特征分析
数据挖掘算法: