Hadoop附带一个名为 HDFS(HADOOP分布式文件系统)的分布式文件系统,基于HADOOP的应用程序利用HDFS。HDFS设计用于存储在商用硬件集群上运行的非常大的数据文件。它具有容错性,可扩展性,并且扩展极其简单。
当数据超过单个物理机器上的存储容量时,必须将其划分为多台独立的计算机。管理跨机器网络的存储特定操作的文件系统称为 分布式文件系统。
读操作
写操作
使用JAVA API访问HDFS
使用命令行接口访问HDFS
HDFS集群主要由 管理文件系统 元数据的 NameNode 和 存储 实际数据的 DataNode组成。
NameNode: NameNode可以视为系统的主节点。它维护文件系统树以及系统中存在的所有文件和目录的元数据。两个文件的 “命名空间图像” 和 “编辑日志” 用于存储元数据信息。Namenode了解包含给定文件的数据块的所有数据节点,但是它不会持久存储块位置。系统启动时,每次从数据节点重建此信息。
DataNode: DataNode是驻留在集群中每台计算机上的从属服务器,提供实际存储。它负责为客户提供服务,读写请求。
HDFS中的读/写操作在块级操作。HDFS中的数据文件被分成块大小的块,这些块作为独立单元存储。默认块大小为64 MB。
HDFS基于数据复制的概念运行,其中创建数据块的多个副本并将其分布在整个集群中的节点上,以在节点发生故障时实现数据的高可用性。
HDFS中的文件小于单个块,不会占用块的完整存储空间。
在HDFS中读取操作
数据读取请求由HDFS,NameNode和DataNode提供。让我们称读者为“客户”。下图描绘了Hadoop中的文件读取操作。