一、大数据概述

第三次信息化浪潮的发生标志:物联网、云计算和大数据

数据产生方式的变革主要经历了三个阶段
1. 运营式系统阶段
2. 用户原创内容阶段
3. 感知式系统阶段

大数据的概念/特征(4V1低):
1、Volume,数据量大
2、Variety,数据类型多
3、Velocity,处理速度快
4、Value,价值密度低

大数据由结构化和非结构化数据组成
10%的结构化数据,存储在数据库中;
90%的非结构化数据,与人类信息密切相关。

在思维方式方面,大数据完全颠覆了传统的思维方式:
l 全样而非抽样
l 效率而非精确
l 相关而非因果

大数据的关键技术:
1、分布式存储 (e.g.分布式数据库,分布式文件系统HDFS)
GFS\HDFS
BigTable\HBase
NoSQL(键值、列族、图形、文档数据库)
NewSQL(如:SQL Azure)
2、分布式处理(e.g.分布式并行处理技术MapReduce)

Hadoop技术核心:HDFS和MapReduce


大数据的计算模式:不同的计算模式需要使用不同的产品
1、批处理模式:一堆数据一起做批量处理,不能满足实时性要求。
如MapReduce,Spark(实时性比MapReduce好,可以做迭代计算,MapReduce不能)
2、流计算:针对流数据(日志流、用户点击流)的实时计算,需要实时处理。只能用流计算框架做。 代表产品:S4+Storm+Flume
3、图计算:如社交网络数据,地理信息数据等。MapReduce也能处理,但效率不高。
代表软件:Pregel
4、查询分析计算:交互式查询,要求实时性高
代表产品:Google Dremel、Hive、Cassandra、Impala
大数据技术原理与应用-学习笔记 - 图1

大数据与云计算、物联网的关系

大数据技术原理与应用-学习笔记 - 图2

云计算,通过网络以服务的方式为用户提供非常廉价的IT资源。
1、解决了分布式存储和分布式处理问题
2、虚拟化和多租户

云计算的3种类型:
IaaS:面向网络架构师
PaaS:面向应用开发者
SaaS:面向用户

物联网可以分为:网络层,应用层,处理层,感知层(4层)

二、大数据存储与管理

Hadoop: 高可靠性、高效性、高可扩展性、高容错性、成本低、运行在Linux平台上、支持多种编程语言

分布式文件系统HDFS-较多

优点:兼容廉价的硬件设备、流数据读写、大数据集、简单的文件模型、强大的跨平台兼容性

★HDFS系统架构

大数据技术原理与应用-学习笔记 - 图3
l HDFS默认一个块64MB,一个文件被分成多个块,以块作为存储单位
l 块的大小远远大于普通文件系统,可以最小化寻址开销

块是HDFS的核心概念,采用抽象块概念的优点:
l 支持大规模文件存储
l 简化系统设计
l 适合数据备份

l 元数据:用来描述一个文件的特征的系统数据,eg:访问权限、文件拥有者以及文件数据块的分布信息
l 文件是什么:以计算机硬盘为载体存储在计算机上的信息集合
l 每个块和文件是怎么映射的

HDFS两大组件:
1、名称节点(主节点,NameNode,只有1个)
l 整个HDFS集群的管家,负责元数据的存储,相当于数据目录
l 保留了两个核心的数据结构:FsImage, EditLog
l FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据
l EditLog中记录了所有针对文件的创建、删除、重命名等操作
l 名称节点记录了每个文件中各个块所在的数据节点的位置信息
★第二名称节点-工作情况图
(1)解决EditLog不断增大的问题
(2)可以当做名称节点的冷备份
l 保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间
2、数据节点(从节点,有多个):负责数据的存储和读取,保存在各自节点本地Linux文件系统中

FsImage: 用于维护文件系统树以及文件树中所有的文件和文件夹的元数据

★HDFS体系结构的局限性

l 不适合低延迟数据访问
l 无法高效存储大量小文件
l 不支持多用户写入及任意修改文件

存储策略

1. 数据的冗余存储:保证容错性和可用性,采用多副本方式
a) 一个数据块的多个副本会被分布到不同的数据节点
b) 增强了数据可靠性,加快了数据传输速度
2. 数据存取策略
a) 数据存放——副本放置策略
• 第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点
• 第二个副本:放置在与第一个副本不同的机架的节点上
• 第三个副本:与第一个副本相同机架的其他节点上
• 更多副本:随机节点
大数据技术原理与应用-学习笔记 - 图4
b) 数据读取
c) 数据复制

数据错误与恢复(三种容错机制-了解)

  1. 名称节点出错
    2. 数据节点出错——心跳机制
    3. 数据出错

    分布式数据库Hbase

    大数据技术原理与应用-学习笔记 - 图5

    HBase需要根据(列限定符,行键,时间戳,列族)唯一地确定一个单元格(cell)

    ★实验原理/三层架构



    NoSql数据库

    ★NoSQL的三大基石:

    1、CAP(一致性,可用性,分区容忍性)
    2、最终一致性
    3、BASE(基本可用,软状态,最终一致性)

    BASE

    l 基本可用:一个分布式系统一部分发生问题不可用时,其他部分仍然可以正常使用,允许分区失败的情形出现;
    l 软状态:状态可以有一段时间不同步,具有一定的滞后性;
    l 最终一致性:强一致性,当执行完一次更新操作后,后续的读操作可以保证读到更新后的最新数据;反之,如果不能保证后续读到的都是更新后的最新数据,就是弱一致性。/ 最终一致性是弱一致性的一种特例,允许暂时读不到更新后的数据,但是经过一段时间之后,必须读到更新后的数据。

    数据库类型

    大数据技术原理与应用-学习笔记 - 图6


    关系数据库的关键特性:事务机制和高效查询机制,在Web2.0时代不需要。

    大数据技术原理与应用-学习笔记 - 图7大数据技术原理与应用-学习笔记 - 图8大数据技术原理与应用-学习笔记 - 图9

    三、大数据处理与分析

    MapReduce分布式并行编程框架

    并行——>集群——>计算能力
    大数据技术原理与应用-学习笔记 - 图10

    MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象成两个函数:Map和Reduce(核心)。

    ★MapReduce的理念:
    1、采用“分而治之”的策略,存储在分布式文件系统中的大规模数据集被切分成许多独立的小数据块,分别生成Map任务进行并行处理;
    2、计算向数据靠拢。因为,移动数据需要大量的网络传输开销
    大数据技术原理与应用-学习笔记 - 图11
    理想的分片大小是一个HDFS块

    l 采用了Master/Slave架构,包括一个Master和若干个Slave。Master上运行JobTracker(作业跟踪器,负责资源监控和作业调度),Slave上运行TaskTracker(分布在不同的机器上,接收JobTracker发送的作业处理指令,完成具体的任务处理)。
    l Hadoop框架是用Java实现的,但是,MapReduce应用程序则不一定要用Java来写
    Map和Reduce函数
    大数据技术原理与应用-学习笔记 - 图12

    MapReduce体系结构主要由四个部分组成:
    1、Client(客户端)
    2、JobTracker(作业跟踪器)
    3、TaskTracker
    4、Task
    大数据技术原理与应用-学习笔记 - 图13

    Task分为Map Task和Reduce Task两种,均由TaskTracker启动。一台机器上可以同时执行两种任务。数据的来源是分布式文件系统HDFS,经过中间的Map、Reduce处理后,最终写入分布式文件系统HDFS中。HDFS为MapReduce提供底层存储。

★MapReduce工作流程

大数据技术原理与应用-学习笔记 - 图14
大数据技术原理与应用-学习笔记 - 图15
图表 1 MapReduce各个执行阶段

★WordCount实例

大数据技术原理与应用-学习笔记 - 图16
图表 2 Map过程示意图

大数据技术原理与应用-学习笔记 - 图17
图表 3 用户没有定义Combiner时的Reduce过程示意图(shuffle洗牌)

大数据技术原理与应用-学习笔记 - 图18
图表 4 用户有定义Combiner(组合器)时的Reduce过程示意图

Spark

Spark是基于内存的大数据并行计算框架(Hadoop是基于磁盘的),可用于构建大型的、低延迟数据分析应用程序。
主要特点:
1、运行速度快。使用DAG(有向无环图)执行引擎,以支持循环数据流与内存计算;
2、易使用。支持使用Scala、Java、Python和R语言进行编程,可以通过Spark Shell进行交互式编程;
3、通用性。提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件;
4、运行模式多源。可运行于独立的集群模式中,可运行于Hadoop中,可运行于Amazon EC2等云环境中,并且可以访问HDFS、HBase、Hive等多种数据源。

关于Spark的特性说法正确的是:
l Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制
l Spark的计算模式也属于MapReduce,但编程模型比Hadoop MapReduce更灵活
l Scala是Spark的主要编程语言,但Spark还支持Java、Python、R作为编程语言
l Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高

Spark生态系统:Spark的设计遵循“一个软件栈满足不同应用场景”的理念,能同时支持批处理、交互式查询流数据处理。既能够提供内存计算框架,也可以支持SQL即时查询、实时流式计算、机器学习和图计算等

Spark采用RDD(弹性分布式数据集)实现高效计算的原因:
1、高效的容错性RDD:血缘关系、重新计算丢失分区、无需回滚系统、重算过程在不同节点之间并行、只记录粗粒度的操作
2、中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递,避免了不必要的读写磁盘开销
3、存放的数据可以是JAVA对象,避免了不必要的对象序列化和反序列化。



Spark RDD支持两种类型的操作:
1、动作(action):在数据集上进行运算,返回计算值
2、转换(transformation):基于现有的数据集创建一个新的数据集,返回RDD

用于批处理计算的框架有: MapReduce, Spark
用于流计算的框架:Spark Streaming, Storm

流计算——Storm

流计算:实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息。

流计算适合于需要处理持续到达的流数据、对数据处理有较高实时性要求的场景。

基本理念:数据的价值随着时间的流逝而降低,如用户点击流,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。

流计算系统的需求:高性能、海量式、实时性、分布式、易用性、可靠性。

流计算的处理流程的三个阶段:
1、数据实时采集
2、数据实时计算
3、实时查询服务

大数据技术原理与应用-学习笔记 - 图19

流计算的应用:购物网站的广告推荐,实时交通路线推荐

图数据库

Pregel

大数据技术原理与应用-学习笔记 - 图20


四、大数据的应用

推荐系统

大数据技术原理与应用-学习笔记 - 图21

大数据技术原理与应用-学习笔记 - 图22
图表 5 基于用户的协同过滤


大数据技术原理与应用-学习笔记 - 图23
图表 6 基于物品的协同过滤

长尾理论

l 不热门商品的总量庞大,其销售额也很可观,甚至超过热门商品的销售额。
l 热门商品往往代表了用户的普遍需求,而长尾商品则代表了用户的个性化需求

五、实验

hadoop的启动命令是:start-dfs.sh
Hadoop中有三种Shell命令方式:
hadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统hadoop dfs只能适用于HDFS文件系统hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

hadoop fs -ls :显示指定的文件的详细信息
hadoop fs -mkdir :创建指定的文件夹
hdfs dfs -put file.txt /path:上传file.txt到
hadoop fs -cat :将指定的文件的内容输出到标准输出(stdout)
hadoop fs -copyFromLocal :将本地源文件复制到路径指定的文件或文件夹中

向表中插入一条记录{id:2015001,name:Mary,{score:math}:88},其id作为行键,其中,在插入数学成绩88分时
put ‘student’,‘2015001’,‘score:math’,’88