HDFS(3)|青训营笔记

125 阅读2分钟

HDFS集群上的从节点都会驻留一个数据节点的守护进程,来执行分布式文件系统中最忙碌的部分:将HDFS数据块写道Linux本地文件系统的实际文件中,或者从这些实际文件读取数据块。

在数据节点上,HDFS文件块以Linux文件系统上的普通文件进行保存。客户端进行文件内容操作时,先由名字节点告知客户端每个数据块驻留在哪个数据节点,然后客户端直接与数据节点守护进程进行通信,处理与数据块对应的本地文件。同时,数据节点会和其他数据节点进行通信,复制数据块,保证数据的冗余性。

数据节点作为从节点,会不断向名字节点报告。初始化时,每个数据节点将当前存储的数据块告知名字节点。后续数据节点工作过程中,数据节点仍会不断地进行更新名字节点,为之提供本地修改的相关信息,并接受来自名字节点的指令,创建、移动或者删除本地磁盘上的数据块。

客户端是用户和HDFS进行交互的手段,HDFS提供了各种各样的客户端,包括命令行接口、JavaAPI、Thrift接口、C语言库、用户空间系统等。

通过命令行工具,可以进行一些典型的文件操作,如读文件、创建文件路径、移动文件、删除文件、列出文件列表等,同时,命令行工具也提供了本地文件和HDFS交互的能力,可以通过命令行将本地文件上传到HDFS。

HDFS正是通过Java的客户端,屏蔽了访问HDFS的各种各样细节,用户通过标准的Hadoop文件接口,就可以访问复杂的HDFS,而不需要考虑与名字节点、数据节点等节点的交互细节,降低了Hadoop应用开发的难度,也证明了Hadoop抽象文件系统的适用性。