HDFS架构简述

一、HDFS简介

HDFS(Hadoop distributed File System):Hadoop分布式文件系统。是基于流数据模式访问和处理超大文件的需要而开发的,可以运行于廉价的服务器上。它所具有的高容错,高可靠性,高可扩展性,高获得性,高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集的应用带来了很多便利。简单来说就是把一个超大号文件按一定大小分割并放置在多台服务器上,这样多台服务器同时工作,效率超高,而且安全性也会提高。

二、HDFS组成结构以及各部分作用

HDFS主要由四个部分组成,分别为Client,nameNode、DataNode、以及Secondary NameNode组成。
2.1Client(客户端)

  • 文件切分:文件上传HDFS的时候,client根据需求将文件切分成一个一个的小数据块(block),然后进行存储。
  • 每个小数据块(block)在其他服务器上都有副本,client会与namenode进行通信,获取文件及其副本位置,为以后做打算。
  • 与DataNode进行通信,读取或写入数据。
  • client可以管理HDFS,比如启动或关闭。

2.2nameNode(管理者)
nameNode在HDFS是管理者的作用,类似于现实世界中的国王地位,客户端和secondary nameNode都是与他进行通信,然后由他发号施令来操作DataNode。主要作用有:

  • 管理HDFS的名称空间
  • 管理数据块(block)映射信息
  • 配置副本策略
  • 处理客户端请求

2.3DataNode(执行者)
DataNode在文档中的角色是slave,翻译过来就是奴隶的意思(所以大家知道他的地位了吧),主要就是存储数据块和读写数据块用的:

  • 存储实际的数据块(block)
  • 执行数据块的读写操作

2.4secondary nameNode
他是nameNode的死忠,帮助nameNode完成一些工作,并且在nameNode要挂的时候给他续命,主要作用如下:

  • 定期合并nameNode中的fsimage(映像文件)和fsedits(日志),并推送给nameNode,避免nameNode中的fsedits过大。
  • 在紧急情况下,可辅助恢复nameNode。

三、副本放置策略

第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
第二个副本:放置在于第一个副本不同的 机架的节点上。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以上转载自 https://blog.csdn.net/a15732111571/article/details/89570865

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

优点:

数据冗余,硬件容错

适合存储大文件

处理流式数据

可构建在廉价机器上

缺点:

不能低延迟的数据访问

不适合存储小文件(原因及解决方法:存储每份数据文件对应一个元数据,多份文件需要存储多份元数据,耗费进程,解决方法:Hadoop Archive 将小文件打包成xxx.har,对于hadoop只有一份元数据,每个文件的名字由har自管理)