大数据技术基础学习总结
时间:2023-12-09 00:07:02
大数据技术基础-期末94pass!
第0章(大三学了8章)
第1章 大数据概述
大数据发展的三个阶段
阶段 | 时间 | 内容 |
---|---|---|
1、萌芽 | 上世纪90年代至本世纪初 | |
2、成熟 | 本世纪前十年 | |
3.大规模应用期 | 2010年后 | 大数据渗透到各行各业 |
大数据的特点
- 数据量大
- 有多种类型的数据:大数据是由结构化和非结构化数据组成的
- 10%的结构化数据,存储在数据库中
- 90%的非结构化数据,它们与人类信息密切相关
- 处理速度快:p从数据生成到消耗,时间窗口很小,生成决策的时间很少
- 价值密度低,商业价值高
大数据的关键技术
- 数据采集
- 数据存储和管理
- 数据处理与分析
- 数据隐私与安全
- 两大核心技术:
- 分布式存储(HDFS、HBase、NoSQL)
- 分布式处理(MapReduce)
大数据计算模式
- 批处理计算:MapReduce、Spark
- 流计算:Storm、S4
- 图计算:Pregel
- 查询分析计算:Hive
云计算
- **概念:**云计算通过网络实现了可伸缩、廉价的分布式计算能力。用户只需在具备网络接入条件的地方随时随地获得所需的各种计算能力IT资源
- 关键技术:虚拟化、分布式存储、分布式计算、多租户
- 云计算数据中心:数据中心是云计算的重要载体,为云计算、存储、带宽等硬件资源提供运行支持
物联网
- 概念 关键技术:互联网是互联网的延伸,利用局部网络或互联网等通信技术,通过新的方式将传感器、控制器、机器、人员和物体连接在一起,形成人、物、物的连接,实现信息化和远程管理控制
代表云计算、大数据和物联网IT该领域的最新技术发展趋势既不同又相关
习题:
1.大数据计算模式包括__批处理计算_____、流量计算、图纸计算和查询分析计算。
第三次信息化浪潮的标志是物联网,云计算___、大数据。
第2章 Hadoop概述
Hadoop简介
- Hadoop是Apache软件基金会开源分布式计算平台,分布式基础设施为用户提供了透明的系统底部细节
- Hadoop是基于Java语言开发具有良好的跨平台特性,可部署在廉价计算机集群中
- Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce
- Hadoop被公认为行业大数据标准开源软件,在分布式环境中提供处理大量数据的能力
- 几乎所有主流制造商都围绕着几乎所有主流制造商Hadoop提供开发工具、开源软件、商业工具和技术服务,如谷歌、雅虎、微软、思科、淘宝等Hadoop
Hadoop的特性
Hadoop是对的分布式处理大量数据的软件框架,而且是一种可靠、高效、可伸缩它具有以下特点
- 高可靠性
- 高效性
- 高可扩展性
- 高容错性
- 成本低
- 运行在Linux平台上
- 支持多种编程语言
Hadoop应用现状
应用范围包括 雅虎(Yahoo!)、Facebook(国外)百度、淘宝、华为、中国移动、网易(国内)
Apache Hadoop版本演变
分为两代,分别叫Hadoop1.0(0.22x增加了NameNode)和Hadoop2.0(与1完全不同.0,包含HDFS Federation和YARN两个系统(分布式计算框)
Hadoop集群中的节点类型是什么?
Hadoop框架中核心设计是为存储大量数据的HDFS和对计算数据的MapReduce
- 一个基本的Hadoop集群中的节点主要有
- NameNode:负责协调集群中的数据存储
- DataNode:存储被拆分的数据块
- JobTracker:协调数据计算任务
- TaskTracker:负责执行由JobTracker指派的任务
- SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息
习题:
1.以下名称的解释不正确 C
A、HDFS:是的,分布式文件系统Hadoop谷歌是项目的两大核心之一GFS的开源实现
B、Hive:一个基于Hadoop用于数据仓库工具Hadoop数据整理、特殊查询和分析文件中的数据集
C、HBase:谷歌提供高可靠性、高性能和分布式行式数据库BigTable的开源实现
D、Zookeeper:针对谷歌Chubby的一个开源实现,是高效可靠的协同工作系统
2、启动hadoop所有过程的命令都是
start-all.sh
3、Hadoop是______Apache_公司的分布式计算平台。
4、Hadoop在工程结构中,______YARN_负责资源管理和调度
5、Hadoop核心组件是___HDFS_____和__ MapReduce______。
第3章 分布式文件系统HDFS
HDFS简介
实现目标:
- 与便宜的硬件设备兼容
- 流数据读写
- 大数据集
- 简单的文件模型
- 跨平台兼容性强
但也有一些局限性:
- 不适用访问低延迟数据
- 大量存储无法高效存储小文件
- 不支持写入并修改文件
块
HDFS默认一个块64MB,一个文件被分成多个块,以块作为存储单位,块的大小远远大于普通文件系统,可以最小化寻址开销。带来了一些好处:
- 支持大规模文件存储li
- 简化系统设计
- 适合数据备份
问:名称节点运行期间EditLog不断变大(因为HDFS所有更新操作都是直接写到EditLog里面)如何解决?
答:使用 SecondaryNameNode第二名称节点
其用来保存名称节点中HDFS元数据信息备份,并且减少名称节点重启的时间,并且其一般是单独运行在一台机器上
数据节点
- 数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表
- 每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中
HDFS体系结构
- HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)
HDFS命名空间管理
- 命名空间包括目录、文件和块
通信协议
- HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要通过网络进行传输
- 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的
- 名称节点和数据节点之间则使用数据节点协议进行交互
- 客户端与数据节点的交互是通过RPC(Remote Procedure Call)来实现的。
HDFS体系结构的局限性
由于HDFS仅仅设置了一个名称节点,尽管这样大大简化了系统设计,但是也带来了一些较为明显的局限性
- 命名空间的限制
- 性能的瓶颈
- 隔离问题
- 集群的可用性
HDFS存储原理
1、数据存放
HDFS为保证系统的容错性和可用性,HDFS采用多副本方式对数据进行冗余存储
多副本的方式具有以下有点
- 加快数据的传输速度
- 容易检查数据错误
- 保证数据的可靠性
2、数据读取
HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID
3、数据错误与恢复
主要包括以下几种情形:名称节点出错、数据节点出错和数据出错。
- 名称节点出错:名称节点保存了所有的元数据信息
- 最核心两大数据结构为FsImage和Editlog
- 因此如果出错可以将核心文件备份到服务器第二名称节点,然后再根据其中的Fs…和Ed…进行恢复
- 数据节点出错
- HDFS和其它分布式文件系统的最大区别就是可以调整冗余数据的位置
- 数据出错
习题:
1、假设已经配置好环境变量,启动HDFS和关闭HDFS的命令分别是 start-dfs.sh,stop-dfs.sh
2、分布式文件系统HDFS采用了主从结构模型,由计算机集群中的多个节点构成的,这些节点分为两类,一类存储元数据叫__名称节点__,另一类存储具体数据叫 ____数据节点。
3、分布式文件系统HDFS是谷歌分布式文件系统GFS(Google File System)的一种开源实现
4、HDFS的名称节点保存两个核心的数据结构是FsImage和EditLog
第4章 HBase分布式数据库
- HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库
- 主要用来存储非结构化和半结构化的松散数据。
- HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表
HBase系统架构
- 客户端
- Zookeeper服务器
- Master:主服务器Master主要负责表和Region的管理工作
- Region: Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求
第5章 NoSQL数据库
NoSQL定义:非关系型的数据库(Not Only SQL)
NoSQL数据库的特点
- 灵活的可扩展性
- 灵活的数据模型
- 与云计算紧密结合
典型的NoSQL类型
- 键值数据库:扩展性号,灵活性好,大量写操作时性能高(使用者:百度云数据库[ Redis ]、GitHub)
- 列族数据库⏰查找速度快,容易进行分布式拓展,复杂性低
- 文档数据库:
- 图形数据库
BASE
一个数据库事务具有ACID四性,A(**原子性:**要么全部执行,要么都不执行),C(**一致性:**事务在完成时,必须是所有的数据都保持一致的状态),I(**隔离性:**由并发事务所做的修改必须与任何其他并发事务所做的修改隔离),D(**持久性:**事务完成后对系统影响是永久的)
BASE的基本含义是基本可用(Basically Available)、软状态(Soft-state)、和最终一致性(Eventual consistency)
文档数据库MongoDB
是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
第6章 云数据库
云数据库概念:
云数据库是部署和虚拟化在云计算环境中的数据库。
云数据库具有以下特性
- 动态可扩展
- 高可用性
- 较低的使用代价
- 易用性
- 高性能
- 免维护
- 安全
UMP系统
UMP系统是低成本和高性能的MySQL云数据库方案
-
Mnesia是一个分布式数据库管理系统
-
RabbitMQ是一个工业级的消息队列产品
-
Zookeeper是高效和可靠的协同工作系统,提供分布式锁之类的基本服务
Zookeeper主要发挥了三个作用
- 作为全局的配置服务器
- 提供分布式锁(选出一个集群的“总管”)
- 监控所有MySQL实例
-
LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统
-
Controller服务器向UMP集群提供各种管理服务,实现集群成员管理、元数据存储、MySQL实例管理、故障恢复、备份、迁移、扩容等功能
-
Web控制台向用户提供系统管理界面
-
Proxy服务器向用户提供访问MySQL数据库的服务
亚马逊
阿里云RDS简介
RDS是阿里云提供的关系型数据库服务
RDS具有安全稳定、数据可靠、自动备份、管理透明、性能卓越,灵活扩容等优点
第7章 MapReduce
谷歌公司最先提出了分布式并行编程模型MapReduce,Hadoop MapReduce是它的开源实现,后者比前者使用门槛低很多
传统并行计算框架 | MapReduce | |
---|---|---|
集群架构/容错性 | 共享式(共享内存/共享存储),容错性差 | 非共享式,容错性好 |
硬件/价格/扩展性 | 刀片服务器、高速网、SAN,价格贵,扩展性差 | 普通PC机,便宜,扩展性好 |
编程/学习难度 | what-how,难 | what,简单 |
适用场景 | 实时、细粒度计算、计算密集型 | 批处理、非实时、数据密集型 |
MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce
编程容易,不需要掌握分布式并行编程细节,也可以很容易把自己的程序运行在分布式系统上,完成海量数据的计算
MapReduce采用“分而治之”策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理
MapReduce设计的一个理念就是“计算向数据靠拢”,因为,移动数据需要大量的网络传输开销
MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。Master上运行JobTracker,Slave上运行TaskTracker
Hadoop框架是用Java实现的,但是,MapReduce应用程序则不一定要用Java来写
MapReduce执行的全过程包括以下几个主要阶段:
- 从分布式文件系统读入数据
- 执行Map任务输出中间结果
- 通过 Shuffle阶段把中间结果分区排序整理后发送给Reduce任务
- 执行Reduce任务得到最终结果并写入分布式文件系统
第8章 Hadoop架构再探讨
Hadoop1.0的核心组件仅指MapReduce和HDFS
Hadoop的优化与发展体现在两个方面
- 自身两个核心组件架构的设计与改进
- Hadoop生态系统其他组件不断丰富,除了原有的Pig、Hive、HBase等其他组件之外,还有Spark、Tez等新的组件加入
组件 | Hadoop1.0的问题 | Hadoop2.0的改进 |
---|---|---|
HDFS | 单一名称节点,存在单点失效问题 | 设计了HDFS HA,提供名称节点热备机制 |
HDFS | 单一命名空间,无法实现资源隔离 | 设计了HDFS Federation,管理多个命名空间 |
MapReduce | 资源管理效率低 | 设计了新的资源管理框架YARN |
MapReduce1.0与2.0
在MapReduce1.0中,它既是计算框架也是一个资源管理调度框架,而到了Hadoop2.0后,YARN拥有了资源管理调度功能,而MapReduce2.0就是一个计算框架。
YARN的目标就是实现一个集群多个框架
几个Hadoop的生态组件
Pig
- 提供了类似SQL的Pig Latin语言(包含Filter、GroupBy、Join、OrderBy等操作,同时也支持用户自定义函数)
- 允许用户通过编写简单的脚本来实现复杂的数据分析,而不需要编写复杂的MapReduce应用程序
- 功能:加载数据、表达转换数据以及存储最终结果
Tez
- Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapReduce框架
- 核心思想是将Map和Reduce两个操作进一步拆分
- Tez框架可以发挥重要的作用,借助于Tez框架实现对MapReduce、Pig和Hive等的性能优化(目的)
Spark
是一个可应用于大规模数据处理的快速、通用引擎
Kafka
- Kafka是一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息
- Kafka可以同时满足在线实时处理和批量离线处理
一些名词解释猜测
Hadoop: Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
HDFS: Hadoop下分布式文件系统(为海量数据提供存储)以流式数据访问模式来存储超大文件,运行于商用硬件集群上,是管理网络中跨多台计算机存储的文件系统。
MapReduce:分布式并行编程模型(对数据进行计算),它的理念是“计算向数据靠拢”。
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
YARN:负责资源管理与调度
HBase: HBase是一个分布式的、面向列的开源数据库,它是一个适合于非结构化数据存储的数据库(NoSQL)。
NoSQL:泛指非关系型的数据库
云数据库:指被优化或部署到一个虚拟计算环境中的数据库,可以实现按需付费、按需扩展、高可用性以及存储整合等优势。
Hive:基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
MongoDB: MongoDB是一个基于分布式文件存储的数据库
Spark: Spark是一种快速、通用、可扩展的大数据分析引擎
Pig:大规模数据分析平台
Tez:支持DAG作业的计算框架
ZooKeeper:是一个集群管理工具,常用于分布式计算,提供配置维护、域名服务、分布式同步等
Kafka:分布式发布订阅消息系统
第9章 Spark
•Spark的核心是统一的抽象RDD,在此之上形成了结构一体化、功能多元化的完整的大数据生态系统,支持内存计算,SQL即席查询、实时流式计算、机器学习和图计算
第10章 流计算
流计算处理流程为:数据实时采集、数据实时计算、实时查询服务
Storm流处理框架具有可扩展性、高容错性、能可靠地处理消息的特点