HDFS:我们至少应该学习以下内容
- Hdfs架构设计
- Hdfs优缺点
- Hdfs如何读取文件
- Hdfs如何写入文件
- Hdfs副本存放策略
- hdfs访问命令
- Hdfs数据复制
- Hdfs空间回收
- Namenode的热备
- NN&2NN关系
- DataNode工作机制
- Hdfs面试重点
介绍
HDFS(The Hadoop Distributed File System),是被设计成适合运行在通用硬件(commodity hardware)上的 Hadoop 的分布式文件系统。它与其他的分布式系统有非常显著的不同,首先 HDFS 具有高容错性,并且它可以被部署到廉价的硬件上。此外,HDFS 提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。
HDFS架构图

名词解释
| 关键词 | 含义 |
|---|---|
| namenode | 名字节点,管理文件系统命名空间的主服务器。 |
| datanode | 数据节点,存储文件块 |
| replication | 文件块的副本,目的是确保数据存储的可靠性 |
| rack | 翻译为“机架”,可以理解为两个处于不同地方的机群,每个机群内部有自己的连接方式 |
| Client | 凡是通过指令或代码操作的一端都是客户端 |
| Client的Read | 从HDFS下载文件到本地 |
| Client的Write | 上传文件到HDFS上 |
DataNode 中存储的不是单个文件,而是文件块(Block),在 HDFS 中,每个大文件会拆分成多个 Block,然后将这些 Block 散布存储在不同的 DataNode 中,并且每个 Block 会有多个复制,也会存储到其他的 DataNode中。
上图分别解释了“读”和“写”两种操作:
-
当有客户端要向
HDFS写入文件时,图中将文件拆分的Block写入到了两个机架的DataNode中,一般情况下就是两个机架的两个物理主机中,可以看出文件数据没有经过NameNode。数据写入的过程见(“七、数据复制流水线”) -
当有客户端要从
HDFS读取文件时,会将操作命令传向NameNode,然后NameNode转为对应的数据块的操作,指挥相应的DataNode将所需数据返回给客户端。
注意
还有一个节点图中没有显示,叫作 Secondary Namenode,是辅助后台程序,主要负责与 NameNode 进行通信,定期保存 HDFS 元数据的快照及备份其他 NameNode 中的内容,日常 Standby,当 NameNode 故障时顶替 NameNode 使用。
NameNode & DataNodes
NameNode 与 DataNode 是 HDFS 系统的重要知识点。HDFS 是 master/slave 体系结构。一个 HDFS 集群是由单个 NameNode 和众多 DataNode 组成,文件会被分成一个或多个块,这些块存储在一组 DataNode 中。
因为 HDFS是用 Java 语言搭建的,所以只要是支持 Java 语言的机器都可以运行 NameNode 和 DataNode。并且因为 Java 的高可移植性,HDFS 也具有非常广泛的应用范围。一种典型的 HDFS 部署模式是指定一个物理主机运行 NameNode,然后其余的机器运行 DataNode,在实际部署情况中,一般都是一台主机部署一个 DataNode。
群集中存在单个 NameNode 极大地简化了系统的体系结构。 NameNode 是所有 HDFS 元数据的决定者和存储库。系统的这种设计使用户数据永远不会流经 NameNode,可理解 NameNode 为整个系统的中枢。
NameNode
NameNode(nn) 是管理文件系统命名空间的Master(主服务器),用于管理客户端对文件的访问,执行文件系统命名空间操作,如打开,关闭和重命名文件和目录。
- 管理HDFS的名称空间
- 配置副本策略
- 管理数据块(Block) 映射信息
- 处理客户端的读写请求
NameNode 做着有关块复制的所有决定,它定期从群集中的每个 DataNode 接收 Heartbeat 和 Blockreport。收到 Heartbeat 意味着 DataNode正常运行,Blockreport 包含 DataNode 上所有块的列表。
DataNode
DataNode 是Slave。通常是群集中每个节点一个,用于存储数据,负责提供来自文件系统客户端的读写请求。NameNode下达命令,DataNode执行实际的操作。如执行块创建,删除和复制。
- 存储实际的数据块
- 执行数据库的读/写操作
2319

被折叠的 条评论
为什么被折叠?



