第2章 HDFS

本章我们将介绍:

读写HDFS 数据

使用LZO压缩数据

读写序列化文件数据

使用Avro 序列化数据

使用Thrift 序列化数据

使用Protocol Buffers 序列化数据

设置HDFS 备份因子

设置HDFS 块大小

2.1 介绍

Hadoop分布式文件系统(HDFS)是运行在通用硬件平台上的可容错分布式文件系统。HDFS 优化了大文件的流式读取方式,适用于那些高吞吐并且对延迟性要求相对比较低的场景。此外,HDFS通过文件一次写入多次读取的简单策略保证了数据的一致性。

HDFS设计者认为硬件故障是常态,使用了块复制的概念,让数据在集群的节点间进行复制。相对于桌面文件系统,HDFS的数据块会更大些。例如,HDFS默认的文件块大小是64 MB。当一个文件存放在HDFS 上,这个文件会被分割成一个或者多个数据块,并且被分发到集群的节点上。此外将这些数据块备份并分发到集群的节点上也是为了在出现坏硬盘的时候能保证数据的高可用性。每个数据块复制的份数是由复制因子决定的。默认的复制因子是3,意味着每个数据块在集群上会存储3份。

最后,Hadoop 将计算放在数据所在的节点上执行,使得应用程序在使用HDFS 时可以实现高吞吐。换句话说,应用程序可以运行在数据所在的节点机器上而不是传统的将数据复制到应用程序执行的节点上。这个概念称为数据本地化。

HDFS包含以下三个服务。

NameNode:保存着集群中所有数据块位置的一个目录。

Secondary NameNode:周期性同步 NameNode 的块索引数据。在同步处理中, Secondary NameNode 下载NameNode 的image 文件和editlogs,并对他们做本地归并,最后再将归并完的image ...

Get Hadoop实际解决方案手册 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.