3180 字
16 分钟
大数据技术原理及应用知识点整理
第一篇 大数据基础
第一章 大数据概述
信息技术发展史上的信息化浪潮
信息化浪潮 | 发生时间 | 标志 |
---|---|---|
第一次信息化浪潮 | 1980年前后 | 个人计算机 |
第二次信息化浪潮 | 1995年前后 | 互联网 |
第三次信息化浪潮 | 2010年前后 | 大数据、云计算、物联网 |
数据产生方式的阶段
- 运营式系统阶段:数据的产生方式是被动的
- 用户原创内容阶段:上网用户本身就是内容的生成者
- 感知式系统阶段:物联网设备每时每刻都在自动产生大量的数据
大数据的发展历程
阶段 | 时间 | 内容 |
---|---|---|
萌芽期 | 20世纪90年代~21世纪初 | 数据挖掘理论和数据库技术逐步成熟 |
成熟期 | 21世纪前十年 | 大数据技术快速突破,大数据解决方案走向成熟 |
大规模应用期 | 2010年后 | 大数据应用渗透各行各业,数据驱动决策 |
大数据的基本特征
- 数据量大(Volume)
- 数据类型繁多(Variety)
- 处理速度快(Velocity)
- 价值密度低(Value)
科学研究的范式
- 实验科学
- 理论科学
- 计算科学
- 数据密集型科学
大数据对思维方式的影响
- 全样而非抽样
- 效率而非精确
- 相关而非因果
云计算
实现了通过网络通过网络实现可伸缩的、廉价的分布式计算能力,用户只需要在具备网络接入条件的地方,就可以随时随地获得所需的各种IT资源。
云计算的服务模式
- 设施即服务(infrastructure as a Service)
- 平台即服务(Platform as a Service)
- 软件即服务(Software as a Service)
物联网
物联网是物物相连的互联网,是互联网的延伸,他利用局部网络或互联网等通信技术把传感器、控制器、计算机、人员和物等通过新的方式联系在一起,形成人与物、物与物相连,实现信息化和远程管理控制
大数据的具体应用
- 政府部门把大数据技术融入“舆情分析”,协助实现政府决策
- 帮助快递公司选择运费成本最低的最佳行车路线
- 协助投资者选择收益最大化的股票投资组合
- 辅助零售商有效定位目标客户群群体
- 帮助互联网公司实现广告精准投放
大数据的关键技术
- 数据采集与预处理
- 数据存储和管理
- 数据处理与分析
- 数据安全和隐私保护
大数据、云计算和物联网的区别与联系
- 大数据侧重对海量数据的存储、处理与分析,从海量数据中发现价值,服务于生产和生活
- 云计算旨在整合和优化各种IT资源,并通过网络以服务的方式廉价地提供给用户
- 物联网的发展目标是实现物物相连
- 大数据根植于云计算,云计算的分布式数据存储和管理系统提供了海量数据的存储和管理能力,分布式并行处理框架提供了海量数据分析能力
- 大数据为云计算提供了用武之地,发挥了云计算的应用价值
- 物联网源源不断产生的大量数据,构成了大数据的重要数据来源
第二篇 大数据存储与管理
第三章 分布式文件系统
HDFS的目标
- 兼容廉价的硬件设备
- 流数据读写
- 大数据集
- 简单的文件模型
- 强大的跨平台兼容性
HDFS的应用局限性
- 不适合低延迟数据访问
- 无法高效存储大量小文件
- 不支持多用户写入及任意修改文件
HDFS的块
在HDFS中的文件会被拆分成多个块,每个块作为独立的单元进行存储
HDFS的块带来的好处
- 支持大规模文件存储
- 简化系统设计
- 适合数据备份
HDFS的块和普通文件系统的块的区别
HDFS在块的大小的设计上明显要大于普通文件系统,默认一个块的大小是128M(2.x默认为128M,1.x默认为64M),这是为了最小化寻址开销,在处理大规模文件时能够获取更好的性能
名称节点
名称节点负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog
数据节点
数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者名称节点的调度来进行数据的存储和检索,并向名称节点定期发送自己所存储的块的列表信息
第二名称节点
为了有效解决EditLog逐渐变大带来的问题,HDFS在设计中采用了第二名称节点,它可以完成EditLog与FsImage的合并操作,减小EditLog文件大小,缩短名称节点重启时间,其次,它可以作为名称节点的检查点,保存名称节点中的元数据信息
HDFS的冗余数据保存策略
HDFS采用了多副本方式对数据进行冗余存储,通常一个数据快的多个副本会被分布到不同的数据节点上。HDFS默认的冗余复制因子为3,每个文件会被同事保存到3个地方
- 如果在集群内发起写操作的请求,则把第1个副本放置在写操作请求的数据节点上,实现就近写入数据。如果在集群外发起写操作的请求,则从集群内部挑选一台磁盘空间较为充足、CPU不太忙的数据节点作为第1个副本的存放地
- 第2个副本会被放置在与第1个副本不同的机架的数据节点上
- 第3个副本会被放置在与第1个副本相同的机架的其他节点上
- 如果还需要更多的副本,则继续从集群中随机选择数据节点进行存放
HDFS 如何探测错误发生以及如何进行数据恢复
- 名称节点出错:把名称节点上的元数据信息同步存储到其它文件系统,运行一个第二名称节点,当名称节点死机时,将备份的元数据信息放到第二名称节点上进行恢复,并把第二名称节点作为名称节点来使用
- 数据节点出错:每个数据节点会定期向名称节点发送心跳信息报告自己的状态,名称节点无法收到数据节点的心跳信息时,数据节点就会被标记,节点上的所有数据会被标记为不可读,如果某个数据快的副本数量小于冗余因子,则启动数据冗余复制,生成新的副本
- 数据出错:客户端在读取数据后,会采用MD5和SHA-1对数据快进行校验,如果校验出错,客户端会请求到另一个数据节点读取该数据快,并向名称节点报告该文件块错误,名称节点会定期检查并重新复制这个块
HDFS在不发生故障的情况下读文件的过程
- 客户端打开文件,创建输入流
- 输入流远程调用名称节点,获得文件开始部分数数据块的所有数据节点的地址,同时根据距离客户端的远近对数据节点进行排序
- 获取输入流后客户端开始读取数据,选择距离客户端最近的数据节点建立连接并读取数据
- 数据从该数据节点读到客户端,当该数据块读取完毕时,输入流关闭和该数据节点的连接
- 输入流查找下一个数据块
- 找到该数据快的最佳数据节点,读取数据
- 当客户端读取完数据的时候,关闭输入流
HDFS在不发生故障的情况下写文件的过程
- 客户端创建文件和输出流
- 输出流通过RPC调用名称节点,在文件系统的命名空间创建一个新文件并执行检查,检查通过之后,名称节点构造一个新文件,并添加文件信息
- 客户端调用输出流向HDFS中对应的文件写入数据
- 客户端向输出流写入的数据首先会被分成一个个的分包,这些分包被放入输出流对象的内部队列,输出流向名称节点申请保存文件和副本数据快的若干个数据节点,这些数据节点形成一个数据流管道,队列中的分包被打包成数据包,通过流水线复制策略,流经数据流管道上的各个数据节点
- 为了确保所有数据节点的数据都是准确的,接收到数据的数据节点向发送者发送确认包,确认包沿着数据流管道逆流而上,一次经过各个数据节点并最终发往客户端,客户端受到应答时,将对应的分包从内部队列中移除,不断执行3-5直至数据全部写完
- 客户端关闭输出流,名称节点关闭文件
第四章 分布式数据库HBase
HBase与Hadoop其他组成部分的相互关系
- HBase利用Hadoop MapReduce来处理HBase中的海量数据实现高性能计算
- 利用ZooKeeper作为协同服务,实现稳定服务和失败恢复
- 使用HDFS作为可靠的底层存储,利用廉价集群提供海量数据存储能力
- Sqoop为HBase提供了高效便捷的关系数据库管理系统数据导入功能
- Pig和Hive为HBase提供了高层语言支持
HBase与传统关系数据库的区别
区别 | 传统关系数据库 | HBase |
---|---|---|
数据类型 | 采用关系模型,有丰富的数据类型和储存方式 | 把数据存储为序列化的字符串 |
数据操作 | 可涉及复杂的多表连接的插入、删除、更新、查询等 | 只有简单的插入、查询、删除、清空等无法实现表与表之间的连接操作 |
存储模式 | 基于行模式存储,元祖或行被连续地存储在硬盘页中 | 基于列存储,每个列族由几个文件保存,不同列族的文件是分离的 |
数据索引 | 可以针对不同列构建复杂的多个索引 | 只有一个行键索引 |
数据维护 | 更新操作会使用最新的当前值去替换记录中原来的的旧值 | 执行更新操作时,不会删除数据的旧的版本,而是生成一个新的版本 |
可伸缩性 | 难以实行横向扩展,纵向扩展的空间也比较有限 | 为实现灵活的横向扩展而开发,通过在集群中增加或减少硬件数量来实现性能的伸缩 |
数据模型的相关概念
- 表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族
- 行键:每个表都有若干行组成,每个行由行建来标识
- 列族:一个HBase表被分组为许多列族的集合,是基本的访问控制单元
- 列限定符:列族里的数据通过列限定符(或列)来定位
- 单元格:在HBase表中,通过行键、列族和列限定符确定一个单元格
- 时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引
HBase的三层结构
层次 | 名称 | 作用 |
---|---|---|
第一层 | ZooKeeper文件 | 记录了-ROOT-表的位置信息 |
第二层 | -ROOT-表 | 记录了.MATE.表的Region位置信息,-ROOT-表只能有一个Region,通过-ROOT-表就可以访问.MATE.表中的数据 |
第三层 | .MATE.表 | 记录了用户数据表的Region位置信息,.MATE.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息 |