Hadoop的发展史

Hadoop的发展史

image-20220821195016761

发布了三篇论文

​			*a:GFS(Google File System)*

​			*b:MapReduce(数据计算方法)*

​			*c:BigTable:HBase*


Hadoop三大开源发行版本:Apache、Cloudera(CDH)、Hortonworks(HDP)。Apache版本最原始(最基础)的版本,对于入门学习最好。Cloudera在大型互联网企业中用的较多。Hortonworks文档较好。

ClouderaDataPlatform(CDP)

Cloudera Enterprise Data Hub(CDH企业版)

Hortonworks Data Platform(HDP)

CDP、CDH、HDP中都包含的部分

Apache Hadoop(HDFS/YARN/MR)

Apache HBase

Apache Hive

Apache Oozie

Apache Spark

Apache Sqoop

Apache Zookeeper

Apache Parquet

Apache Phoenix(*CDH中需要额外安装)

最关键的一点:CDP的组件代码在github上找不到,是不再开源了,CDP7以后就没有社区版了。

!!!!!注意:课程中的hadoop版本以CDH版本为准,稳定且主流,目前国内主流的是2.x,如果面试的时候说你用的是3.x可能会被。。。。并且2.x的变化都不大

hadoop框架

**Hadoop Common**:基础型功能

**Hadoop Distributed File System (HDFS™)**:一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。负责存放数据

**Hadoop YARN**:作业调度和集群资源管理的框架。负责资源的调配

**Hadoop MapReduce**:基于 YARN 的系统,用于并行处理大型数据集。大数据的计算框架

Hadoop框架透明地为应⽤提供可靠性和数据移动。它实现了名为MapReduce的编程范式:应⽤程序被分割成许多⼩部分,⽽每个部分都能在集群中的任意节点上执⾏或重新执⾏。此外,Hadoop还提供了分布式⽂件系统,⽤以存储所有计算节点的数据,这为整个集群带来了⾮常⾼的带宽。MapReduce和分布式⽂件系统的设计,使得整个框架能够⾃动处理节点故障。它使应⽤程序与成千上万的独⽴计算的电脑和PB级的数据。

一句话简述:Hadoop是一个适合海量数据的分布式存储和分布式计算的平台。(面试必问!!!!)

一、名词解释

Apache基金会
是专门为支持开源软件项目而办的一个非盈利性组织
服务器(节点): 企业里任务和程序基本都是运行在服务器上。服务器内存和cpu以及硬盘等资源和性能远高于pc机
可以理解为我们的一台笔记本/台式机
在这里可以认为是我们的一台虚拟机
后面学习中,我们会把一台服务器称为一个节点

机架: 一个公司里,会有很多服务器。尤其是hadoop集群大到上千台服务器搭建成集群
负责存放服务器的架子
可以理解为鞋架(_)

二、分布式文件系统(从这开始,下面都是属于Hadoop中的原理)

1、FS File System

​ 文件系统时极域硬盘之上的文件管理的工具

​ 我们用户操作文件系统可以和硬盘进行解耦

2、DFS Distributed File System

​ 分布式文件系统

​ 将我们的数据存放在多台电脑上存储

​ 分布式文件系统有很多,HDFS(Hadoop Distributed FileSyetem)是Hadoop自带的分布式文件系统

​ HDFS是mapreduce计算的基础

三、文件切分的思想(引出分而治之的思想 第一个核心思想)

​ a. 文件存放在一个磁盘上效率肯定是最低的

​ 读取效率低

​ 如果文件特别大会超出单机的存储范围

​ b. 字节数组

​ 文件在磁盘真实存储文件的抽象概念

​ 数组可以进行拆分和组装,源文件不会收到影响

​ c. 切分数据

​ 对字节数组进行切分

​ d. 拼接数据

​ 按照数组的偏移量将数据连接到一起,将字节数组连接到一起

​ e. 偏移量

​ 当前数据在数组中的相对位置,可以理解为下标

​ 数组都有对应的索引,可以快速定位数据

​ f. 数据存储的原理:

​ 不管文件的大小,所有的文件都是由字节数组构成

​ 如果我们要切分文件,就是将一个字节数组分成多份

​ 我们将切分后的数据拼接到一起,数据还可以继续使用

​ 我们需要根据数据的偏移量将他们重新拼接到一起

四、Block拆分标准

数据块Block

​ a. 是磁盘进行数据 读/写的最小单位,数据被切分后的一个整体被称之为块
​ b. 在Hadoop 1默认大小为64M,在Hadoop 2及其之后默认大小为128M块,这么大是为了最小化寻址开销
​ c. 同一个文件中,每个数据块的大小要一致除了最后一个节点外
​ 不同文件中,块的大小可以不一致
​ 文件大小不同可以设置不同的块的数量
HDFS中小于一个块的大小的文件不会占据整个块的空间
​ d. 真实情况下,会根据文件大小和集群节点的数量综合考虑块的大小
​ e. 数据块的个数=Ceil(文件大小/每个块的大小)

拆分的数据块需要等大(面试题)

​ a. 数据计算的时候简化问题的复杂度(否则进行分布式算法设计的时候会因为数据量不一很难设计)
​ b. 数据拉取的时候时间相对一致
​ c. 通过偏移量就知道这个块的位置
​ d. 相同文件分成的数据块大小应该相等

注意事项

​ a. 只要有任意一个块丢失,整个数据文件被损坏
​ b. HDFS中一旦文件被存储,数据不允许被修改
​ 修改会影响偏移量

修改会导致数据倾斜(单节点数据量过多)

​ 修改数据会导致蝴蝶效应
​ c. 但是可以被追加(一般不推荐)
​ 追加设置需要手动打开
​ d. 一般HDFS存储的都是历史数据.所以将来Map Reduce都用来进行离线数据的处理
​ f. 块的大小一旦文件上传之后就不允许被修改 128M-512M

五、Block数据安全

​ a. 只要有任意一个块丢失,整个数据文件被损坏
​ b. 肯定要对存储数据做备份
​ c. HDFS是直接对原始数据进行备份的,这样能保证恢复效率和读取效率
​ d. 备份的数据肯定不能存放在一个节点上,使用数据的时候可以就近获取数据
​ f. 备份的数量要小于等于节点的数量
​ g. 每个数据块默认会有三个副本,相同副本是不会存放在同一个节点上
​ h. 副本的数量可以变更
​ 可能近期数据被分析的可能性很大,副本数可以多设置几个
​ 后期数据很少被分析,可以减少副本数

posted @ 2022-08-23 16:17  996开发  阅读(281)  评论(0)    收藏  举报