文章目录
1、Apache是什么
- Apache Software Foundation
- Apache软件基金会(非盈利性组织)
- 支持 名为Apache的开源软件项目
- Apache项目有:Hadoop、HIVE、Kafka、Spark、Flink、Maven…
- 常用Apache软件下载地址:https://archive.apache.org/dist/
2、Hadoop是什么
- 开源的分布式系统基础架构
- 由 Apache软件基金会 开发
- 官网:https://hadoop.apache.org/
- 下载地址(含历史版本):https://archive.apache.org/dist/hadoop/common/
- 官方教学文档(最新的稳定版):https://hadoop.apache.org/docs/stable/
- 本专栏的Hadoop版本:
3.1.3
3、Hadoop组成
Hadoop组成 | 全称 | 译名 | 说明 |
---|---|---|---|
HDFS | Hadoop Distributed File System | 分布式文件系统 | 对数据进行分布式存储 |
MapReduce | Map Reduce | 映射 归约 | 对数据进行分布式计算 |
YARN | Yet Another Resource Negotiator | 资源协调者 | 资源管理 |
3.1、HDFS
- 全称:Hadoop Distributed File System
- 译名:分布式文件系统
- 用途:存储海量各式各样的数据
-
优点
-
适用于海量数据
多副本存储,数据不易丢
高可扩展性,可构建在多个廉价机器
缺点
-
延时高(延时高≠慢,要分清【延时高】和【运算慢】)
支持数据 追加,不支持文件随机修改
不适用于 大量的小文件
HDFS架构图
主要组成 | 说明 | 备注 |
---|---|---|
NameNode | 管理数据块的映射信息(好比数据的目录) | 数据块会增加NameNode内存占用 |
DataNode | 执行数据块的读写操作 | 按数据块的方式 把数据存储到DN节点上的硬盘 |
Client | 与NameNode交互,获取数据的位置 与DataNode交互,传输数据 | |
Secondary NameNode | 辅助NameNode工作 | 非热备 |
- HDFS其它补充:
https://yellow520.blog.youkuaiyun.com/article/details/115575634
3.1.1、Block
- 译名:数据块
- 文件在HDFS上是分块存储的
- 如果块大小设为
128M
,此时存一个130M
的文件,它会被切成128M
和2M
的两个块 - 块大小设置:
块越小,块数量就越多,寻址时间则越长
块越大,(单个块的)磁盘传输数据的时间就越长 - HDFS按序读块:
t
总
=
t
寻
址
+
t
全
部
块
的
磁
盘
传
输
+
t
其
它
t_总=t_{寻址} + t_{全部块的磁盘传输}+t_{其它}
t总=t寻址+t全部块的磁盘传输+t其它
MapReduce并行读块: t 总 = t 寻 址 + t 单 个 块 的 磁 盘 传 输 + t 其 它 t_总=t_{寻址}+t_{单个块的磁盘传输}+t_{其它} t总=t寻址+t单个块的磁盘传输+t其它
参数名称 | 参数默认值 | 说明 |
---|---|---|
dfs.blocksize | 134217728 |
134217728
=
128
×
1024
×
1024
134217728=128 \times 1024 \times 1024
134217728=128×1024×1024 即是128MB |
3.1.2、NameNode 和 DataNode
-
一个
数据块在
DataNode上以
两个文件的形式存储在磁盘上:
-
1、
数据本身
2、 元数据,包括:块的长度、块的校验和(CheckSum
)、时间戳
DataNode启动后,会根据配置文件,向指定的NameNode注册
注册通过后,DataNode会周期性地向NameNode上报所有的块信息
DataNode定期(默认3秒)向NameNode发送心跳
DataNode对NameNode的心跳返回结果,结果可以附带命令(如:复制块、删除块…)
若超过一段没有收到某DataNode的心跳,则认为它不可用
参数名称 | 参数默认值 | 说明 |
---|---|---|
dfs.heartbeat.interval | 3s | DataNode的心跳间隔 |
dfs.namenode.heartbeat.recheck-interval | 300000 | 检查DataNode是否过期的时间间隔 单位:毫秒 |
3.1.3、SecondaryNameNode
- 为确保效率和安全,NameNode节点上的内存和磁盘里都存有元数据
磁盘中备份元数据的文件名叫fsimage
(file system image 文件系统影像?)
元数据修改时
内存中的元数据会立即更新(确保效率)
磁盘中的元数据并不会立即更新,因为这是个费劲且不紧急的事情
对此引入edits
文件,把元数据修改记录立即追加进来(append不费劲)
适当时(check point)再对edits
和fsimage
进行合并 - 如果所有事情都让NameNode去做,会忙不过来
于是引入Secondary NameNode来分担工作
初次启动NameNode
NN和2NN协作图
ll $HADOOP_HOME/data/dfs/name/current
上述命令可查看HDFS文件
NameNode所在节点下可看到edits
、edits_inprogress
、fsimage
SecondaryNameNode所在机器下可看到edits
、fsimage
3.2、YARN
- Apache Hadoop YARN
- 全称:Yet Another Resource Negotiator
- 译名:Hadoop资源管理器
- 用途:分配CPU、内存…
- 解耦思想:将 资源管理 和 应用程序 拆分为 独立的守护进程
例如:MapReduce
、Spark
等可以在YARN
上运行
3.2.1、YARN架构
YARN架构 | 说明 |
---|---|
Resource Manager | 监控NodeManager 处理客户端的请求 |
Node Manager | 单节点 资源管理 |
Container | 包含 内存、CPU、磁盘、网络 等元素 |
Application Master | 第一个Container; 负责 为Application申请资源 和 协调旗下的其它Container |
YARN官网架构图
3.2.2、YARN上跑任务流程简图
3.3、MapReduce
- 译名:Map(映射);Reduce(归约)
分布式计算框架 - 用途:大规模数据集的离线并行计算
词频统计示例
-
MR优点
-
1、高扩展性(增加节点很方便)
2、高容错性,比如:其中一节点挂了,它可把计算任务转移到另一个节点
MR缺点
-
1、延时高
2、不擅长流式计算(因为MR的输入数据集是静态的)
3、不擅长 DAG 计算(多个程序存在依赖关系,前个程序的输出作为后个程序的输入)
3.3.1、MapReduce跑在YARN上简图
4、配环境
-
版本
-
Hadoop
3.1.3
CentOS7
Windows10
- https://hadoop.apache.org/docs/r3.1.3/
3.1.13
教学文档(找官网的archive可以链到)
4.1、Linux+Hadoop
https://yellow520.blog.youkuaiyun.com/article/details/112380523
4.2、Windows+Hadoop+IDEA+Maven
https://yellow520.blog.youkuaiyun.com/article/details/115712233
5、补充
en | 🔉 | cn |
---|---|---|
apache | əˈpætʃi | n. (巴黎的)街头流氓,痞(pǐ)子;阿帕奇 |
stable | ˈsteɪbl | 稳定的 |
distributed | dɪˈstrɪbjuːtɪd | 分布式的 |
negotiator | nɪˈɡoʊʃieɪtər | 谈判者 |
container | kənˈteɪnər | 集装箱;容器 |
manager | ˈmænɪdʒər | n. 经理;管理人员 |
rack | ræk | 架子(如:机房里的机架) |
replica | ˈreplɪkə | 复制品,仿制品 |
replication | ˌreplɪˈkeɪʃn | n. 复制;回答;反响 |
metadata | ˈmetədeɪtə | n. 元数据,诠释数据 |
submission | səbˈmɪʃn | n. 投降;提交(物) |
acyclic | ˌeɪˈsaɪklɪk | adj. 非循环的;[物] 非周期的 |
task | tæsk | 任务 |