Hadoop3:HDFS的架构组成

一、官方文档

我这里学习的是Hadoop3.1.3版本,所以,查看的也是3.1.3版本的文档


Architecture模块最下面

二、HDFS架构介绍

HDFS架构的主要组成部分,是一下四个部分

1、NameNode(NN)

就是Master节点,它是集群管理者。

1、管理HDFS的名称空间

2、配置副本策略

3、管理数据块(Block)映射信息

4、处理客户端读写请求

2、DataNode

就是Slave节点,干活的。NameNode下达程序命令,DataNode执行具体命令。

1、存储实际的数据块

2、执行数据块的读写操作

3、Client

客户端,web页面也算是客户端,终端命令也是客户端来执行的。

1、切分文件,文件上传到HDFS集群的时候,Client将文件切分成一个个的Block,然后,进行上传

2、与NameNode交互,获取文件的位置信息

3、与DataNode交互,读写数据

4、Client提供一些命令来管理HDFS,比如NameNode的格式化命令

5、Client可以通过一些命令来访问HDFS,比如对HDFS的增删改查操作

4、Secondary NameNode(2NN)

它不是NameNode的热备,当NameNode节点挂掉的时候,它并不能马上替换NameNode并提供服务

实际场景中,一般用两个NameNode来实现高可用,2NN一般不用

1、辅助NameNode,分担工作量

2、在紧急情况下,可辅助恢复NameNode

三、思考题

1、NameNode中的Block大小如何设置?设置多大合适?怎么计算?

1、配置参数dfs.blocksize

在Hadoop2.x/3.x版本中默认大小是128M,1.x版本中是64M。

默认配置在hdfs-default.xml中,我们可以在hdfs-site.xml中自定义配置

xml 复制代码
<property>
  <name>dfs.blocksize</name>
  <value>134217728</value>
  <description>
      The default block size for new files, in bytes.
      You can use the following suffix (case insensitive):
      k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such as 128k, 512m, 1g, etc.),
      Or provide complete size in bytes (such as 134217728 for 128 MB).
  </description>
</property>

2、Block大小计算逻辑

这个Block大小的确定,主要受寻址时间、传输时间、磁盘性能3个因素影响。

一般地
寻址时间为传输时间的1%时,则为最佳状态。

假设,寻址时间是10ms,则最佳传输时间是10ms/0.01=1000ms=1s

于是,根据这个传输时间及磁盘的读写速率,计算出Block的大小设置

一般性配置
机械硬盘,我们就设置为128MB
固态硬盘,我们就设置为256MB

3、设置太小或太大会有什么弊端?

设置太小

那么,HDFS里面会有很多的小文件,这样,会增加寻址时间,影响性能。

设置太大

会降低HDFS的并发能力,影响性能。

相关推荐
丁总学Java22 分钟前
ARM 架构(Advanced RISC Machine)精简指令集计算机(Reduced Instruction Set Computer)
arm开发·架构
ZOMI酱2 小时前
【AI系统】GPU 架构与 CUDA 关系
人工智能·架构
Lorin 洛林4 小时前
Hadoop 系列 MapReduce:Map、Shuffle、Reduce
大数据·hadoop·mapreduce
B站计算机毕业设计超人6 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
天天扭码9 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
余生H10 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
凡人的AI工具箱10 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
Yz987610 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发