BFU-Bigdata 大数据技术基础期末总结

BFU-Bigdata 大数据技术基础期末总结,第1张

BFU-Bigdata 大数据技术基础期末总结 BFU-Bigdata大数据技术基础2021-2022 期末总结

全文PDF版下载链接:

全文PDF版下载链接

一 背景 三次科技浪潮

4V定义

Volume(规模大)、Variety(类型多)、Velocity(速度快)以及Value(价值密度低)

思维方式

全样而非抽样:不再是依靠分析少量的数据样本,开始关注整体数据中价值。
效率而非绝对精确:不必追求绝对的精确,大数据具备时效性特征,要求大数据处理必须具备高效率,否则就会丧失数据分析的价值。
注重相关关系而非因果关系 : 建立在相关关系分析法基础上的预测是大数据的核心。“因果关系”往往没有那么重要了,更多研究的是“相关关系”。

云计算服务模式

Iaas:基础设施即服务(买成品回家做披萨):将硬件外包到别的地方
Paas:平台即服务(点外卖披萨):虚拟服务器、 *** 作系统节省在硬件上的费用
Saas:软件即服务(去餐厅吃披萨):通过网页浏览器接入

云计算关键技术

云计算关键技术:
虚拟化(核心):服务的硬件、软件、平台是根据用户的需求虚拟出来的
分布式存储:单一的服务器进行虚拟化,虚拟化之后以进程为级的结构是分布式的
分布式计算
多租户:同时被多个用户使用

大数据技术与云计算技术之间的关系
  • 大数据和云计算是相辅相成、相互促进的,云计算在大数据时代提供了一个基础设施,为我们开展大数据的存储、分析和应用提供了硬件条件、平台条件。
  • 云计算支撑大数据,大数据在云计算环境下完成。
  • 云计算是基础设施,大数据是数据的存储方式和计算模式。

大数据的发展的三大支撑核心技术:物联网技术、云计算技术和人工智能

大数据、云计算、物联网和人工智能之间的关系

狭义的云计算

是指IT基础设施的交付和使用模式,通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软件等)。

广义的云计算

是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需的服务。

类型

按照部署方式和服务对象将云计算划分为公有云、私有云和混合云三大主要类型。

二 分布式存储原理HDFS

数据类型
  • 结构化数据

    • 为结构(模式)+数据构成的二维表结构。
    • 每个二维表也称为关系表。关系型数据库由描述该数据库表达业务的多张二维表组成。
    • 二维表中每一列的名称、类型是先确定的,每列数据由该列类型、精度和完成性约束共同限制的。
    • 关系型数据库也称为SQL数据库,管理关系型数据库的软件为数据库管理系统,代表性如MySQL、SQL Server、Oracle。
  • 半结构化数据

    • 介于结构化和非结构化之间的数据类型。
    • XML和HTML等标识类文件都属于半结构化数据。
    • 半结构化数据通常具有自描述性,结构信息和数据内容共同出现。
    • 半结构化数据适用于结构要求不严格,结构和内容不固定的数据。
    • 半结构化数据也用于不同结构的关系间数据集成和数据交互。
  • 非结构化数据(占网络中数据的大多数)

    • 非文本类型的数据。
    • 图片、视频和语音等类型数据都属于非结构化数据。
    • 直接处理非结构化信息需要专门的图像、音视频处理手段。
    • 通常利用元信息描述非结构化数据,以便于对非结构化数据进行检索。
    • 网络中大量的数据为非结构化数据。
数据存储技术发展
  • 文件系统阶段
  1. 数据可长期保存在外存中,以便反复使用。
  2. 提供了各类数据类型的文件。
  3. 文件可以通过文件夹的方式进行组织和访问。
  4. 数据与程序之间具有了一定程度独立性。
  • 数据库系统阶段
  1. 使用结构化方式组织数据。
  2. 数据共享性高、冗余度低。
  3. 数据独立性高。
  4. 有统一的数据管理和控制功能。
  • 数据仓库系统阶段
    将一个单位的多个数据库系统上,开展联机事务处理和数据分析工作
分布式系统

在物理层面:多台物理上独立分布的服务器在网络环境下构成服务器集群,通过该集群上的软件系统为用户提供服务。
在逻辑层面:用户与构建在多台计算机上的软件系统交互。集群的使用以及文件的在集群中各个机器的存储是透明的,用户无需关心分布式环境下各硬件使用的细节。对用户而言,用户感觉服务器集群在(逻辑上)是一台统一的服务器为其服务。
分布式系统体系结构:基础设施层、数据层(核心)、应用层和用户层。

分布式存储方式
  1. 关系型数据库
    指一组逻辑上相关的结构化数据集合,在物理上分布在计算机网络中的不同区域(场地)上。
  2. 分布式文件系统
    与单机环境下的文件系统不同,分布式文件系统是一种允许文件通过网络,在多台主机上分片存储、冗余备份和并行 *** 作的文件系统。
  3. 非关系型数据库NOSQL
分布式文件系统


特点:

  • 透明性
    只能提供一定程度的访问透明性,完全支持位置透明性和伸缩透明性。
  • 并发控制
    机制非常简单,任何时间都只允许有一个程序在写入某个文件。
  • 可伸缩性
    建立在大规模廉价机器上的分布式文件系统集群,具有很好的可伸缩性
  • 容错
    具有多副本机制和故障自动检测、恢复机制
  • 安全需求
    HDFS安全性较弱
  • 文件复制
    HDFS采用多副本机制
  • 硬件和 *** 作系统的异构性
    采用Java语言开发,具有很好的跨平台能力
HDFS采用抽象块概念好处:
  • 支持大规模文件存储
  • 简化系统设计
  • 适合数据备份
HDFS的名称结点和数据结点

名称节点负责管理分布式文件系统的命名空间;数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取

1.名称节点NameNode

两个核心数据结构:Fslmange、Editlog
namenode在修改信息上不适合,secondaryNameNode与namenode并行进行 *** 作,写 *** 作的时候互相切换。

名称节点记录了每个文件中各个块所在的数据节点的位置信息。
FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据
*** 作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等 *** 作。

2.数据节点DataNode

数据节点(DataNode)是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表。每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中

HDFS体系结构

HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)(如图3-4所示)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等 *** 作。每个数据节点的数据实际上是保存在本地Linux文件系统中的

  • HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要通过网络进行传输
  • 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的
  • 客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互
  • 名称节点和数据节点之间则使用数据节点协议进行交互
  • 客户端与数据节点的交互是通过RPC(Remote Procedure Call)来实现的。在设计上,名称节点不会主动发起RPC,而是响应来自客户端和数据节点的RPC请求
HDFS特点

优点:

  • 兼容廉价的硬件设备->机器出现故障是常见的,所以NameNode选用性能好的,DataNode选用性能差的。
  • 一次写入 多次读取
  • 流数据读写
  • 大数据集
  • 简单的文件模型
  • 强大的跨平台兼容性等特点。

缺点:

  • 不适合低延迟数据访问
  • 无法高效存储大量小文件
  • 不支持多用户写入及任意修改文件
HDFS数据存储原理 1.冗余数据保存

多副本保存优点:

  • 加快数据传输速度
  • 容易检查数据错误
  • 保证数据可靠性
  • 数据块64MB
2.数据存取策略

数据存放位置:
为了提高数据可靠性与系统可用性,以及充分利用网络带宽,HDFS采用了以机架(Rack)为基础的数据存放策略
HDFS默认每个数据节点都是在不同的机架上,
缺点:

  • 写入数据的时候不能充分利用同一机架内部机器之间的带宽。

优点:

  • 可以获得很高的数据可靠性,即使一个机架发生故障,位于其他机架上的数据副本仍然是可用的;
  • 在读取数据的时候,可以在多个机架并行读取数据,大大提高了数据读取速度;
  • 可以更容易实现系统内部负载均衡和错误处理。

数据读取:

  • HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID
  • 当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,列表中包含了副本所在的数据节点,可以调用API来确定客户端和这些数据节点所属的机架ID,当发现某个数据块副本对应的机架ID和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据

数据复制方法:

  • HDFS的数据复制采用了流水线复制的策略,大大提高了数据复制过程的效率
  1. 当客户端要往HDFS中写入一个文件时,这个文件会首先被写入本地,并被切分成若干个块,每个块的大小是由HDFS的设定值来决定的
  2. 每个块都向HDFS集群中的名称节点发起写请求,名称节点会根据系统中各个数据节点的使用情况,选择一个数据节点列表返回给客户端,然后,客户端就把数据首先写入列表中的第一个数据节点,同时把列表传给第一个数据节点
  3. 当第一个数据节点接收到4KB数据的时候,写入本地,并且向列表中的第二个数据节点发起连接请求,把自己已经接收到的4KB数据和列表传给第二个数据节点
  4. 当第二个数据节点接收到4KB数据的时候,写入本地,并且向列表中的第三个数据节点发起连接请求,依此类推,列表中的多个数据节点形成一条数据复制的流水线
  5. 最后,当文件写完的时候,数据复制也同时完成
3.数据错误恢复

名称节点出错

  • 名称节点保存了所有的元数据信息,其中,最核心的两大数据结构是FsImage和Editlog,如果这两个文件发生损坏,那么整个HDFS实例将失效。因此,HDFS设置了备份机制,把这些核心文件同步复制到备份服务器SecondaryNameNode上。当名称节点出错时,就可以根据备份服务器SecondaryNameNode中的FsImage和Editlog数据进行恢复。

数据节点出错!!!

  • 每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自己的状态
  • 当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的心跳信息,这时,这些数据节点就会被标记为“宕机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们发送任何I/O请求
  • 这时,有可能出现一种情形,即由于一些数据节点的不可用,会导致一些数据块的副本数量小于冗余因子
  • 名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新的副本
  • HDFS和其它分布式文件系统的最大区别就是可以调整冗余数据的位置

数据出错

  • 网络传输和磁盘错误等因素,都会造成数据错误
  • 客户端在读取到数据后,会采用md5和sha1对数据块进行校验,以确定读取到正确的数据
  • 在文件被创建时,客户端就会对每一个文件块进行信息摘录,并把这些信息写入到同一个路径的隐藏文件里面
  • 当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块
HDFS读写过程

读数据:

写数据:

三 MAPREDUCE(批处理)

和spark相比,MapReduce执行特点(慢的原因):

  1. 多次落盘(先写入缓存再写入磁盘)
  2. map执行后才能执行reduce。

设计理念:计算向数据靠拢
分布式并行编程

  • MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce
  • 在MapReduce中,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的小数据块,这些小数据块可以被多个Map任务并行处理
  • MapReduce框架会为每个Map任务输入一个数据子集,Map任务生成的结果会继续作为Reduce任务的输入,最终由Reduce任务输出最后结果,并写入到分布式文件系统中
  • MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。
  • Master上运行JobTracker,Slave上运行TaskTracker
  • Hadoop框架是用Java实现的,但是,MapReduce应用程序则不一定要用Java来写
shuffle过程原理:


MAP端shuffle过程:
内存缓冲区是有大小限制的,默认是100MB。当map task的输出结果很多时,就可能会撑爆内存,所以需要在一定条件下将缓冲区中的数据临时写入磁盘,然后重新利用这块缓冲区。这个从内存往磁盘写数据的过程被称为Spill,中文可译为溢写。比例默认是0.8,也就是当缓冲区的数据已经达到阈值(buffer size * spill percent = 100MB * 0.8 = 80MB),溢写线程启动,锁定这80MB的内存,执行溢写过程。Map task的输出结果还可以往剩下的20MB内存中写,互不影响。

reduce端shuffle:

四 Spark(流/批处理) spark和Hadoop的区别(spark吃内存)

spark生态系统

spark core(核心)、spark SQL、spark steaming(专门处理流数据)等组件

基本概念

应用-作业-阶段-任务

RDD编程基础

提供的运算类型:


RDD特性:容错、减少开销、使用java、类似于string

依赖关系(宽依赖、窄依赖)

  • 其中窄依赖对于作业优化有利,宽依赖无法优化。
  • 窄依赖可以实现流水线优化,宽依赖包含shuffle过程,无法实现流水线方式处理
RDD编程实践 创建RDD

加载本地数据:

加载HDFS系统数据

转换 *** 作

filter():筛选满足func的元素,返回新的数据集

map(func):每个元素传到func中,将结果返回为一个新的数据集

flatMap(func)

动作 *** 作(action)才真正进行转换

统计词频:

Dataframe和RDD的区别

五 Hadoop配置安装

特性
  • 高效性
    并发计算:在节点间动态移动数据,保证各个节点的动态平衡
  • 扩展性好
    为集群添加新节点,可以获得更好的性能
  • 高可靠
    集群结构部署在多个机器上,数据存储有多个备份,计算任务由多个机器承担。
  • 高容错
    硬件出错十分常见,Hadoop提供检测错误,自动快速恢复系统的功能。
    分布式数据存储、分布式数据计算提供错误检测和恢复
  • 灵活性
    部署灵活、可以处理的数据类型灵活
    处理三类结构化数据
技术栈各个组件:

HDFS:数据的分布式存储和读取,提供层次目录的文件组织结构

MapReduce:大规模数据集的并行计算框架

Yarn:客户端向Yarn提交一个应用程序,Yarn负责协调该应用程序在哪里运行、使用多少系统资源(例如CPU、内存、网络带宽和存储)

Zookerper: 提高分布式环境下的可靠性、高可用性

Oozie:调度器

Hbase
是一个高可靠、高性能、面向列、可伸缩的分布式数据库
用于存储非结构化和半结构化的数据
建立在HDFS之上

Sqoop
用于在Hive与传统的数据库之间进行数据传递
例如:关系型DB <–> HDFS

Pig
基于HDFS的数据分析框架
基于Pig Latin语言
适用于半结构化数据,海量日志采集、聚合等处理
将上述数据分析请求转换为MapReduce运算

HIVE
存储、查询和分析HDFS数据等 *** 作
通过HQL语言,可以将以上 *** 作转换为MapReduce
适合于网络日志分析,适用于结构化数据

Avro:
Avro是一个数据序列化系统

Mahout
包含一些机器学习的经典算法
包含聚类、分类、关联分析等数据挖掘的方法

Kafka
用于实时数据分析

Flume
提供海量日志采集、聚合和传输
Spark:大规模数据的计算引擎
Scala 语言
支持内存计算,速度比MapReduce快

Tez:一个计算框架
采用了DAG(有向无环图)来组织任务
减少HDFS写入过程,速度比MapReduce快

安装模式
  1. 单机模式(本地模式、独立模式,Hadoop的缺省模式)
  • Hadoop各个组件运行在一台机器中
  • 不启动HDFS、Yarn相关的功能(NameNode、DataNode)
  • 直接读写本地 *** 作系统的文件系统,读写速度快
  • 所有程序都运行在一个JVM中
  • 【用途】用于对MapReduce程序的逻辑进行调试,以确保程序正确
  1. 伪分布式
  2. 分布式
安装步骤
  1. 用户管理:设置用户模式、无秘钥登录
  2. 环境管理:java、Hadoop下载、环境变量配置
  3. Hadoop安装:Hadoop、HDFS文件配置
HDFS配置内容、 *** 作命令

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5688674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存