开头:待思考几个问题
1)目前集群总文件数量 2.6亿,平均文件大小不到 30M,如何快速定位出小文件较多目录进行处理?
目前集群总存储量 6.3PB,日增 100TB
2)如何快速定位哪些目录每天增长过快?
3)如何定位出几个月未使用过的冷数据?然后对数据进行冷热分离
4)主备两个 NameNode 的作用分别是?其高可用是怎么做的?
HDFS 架构演进,从 Hadoop 1.x 到 Hadoop 2.x
HDFS 1.x 架构:NameNode, Secondary NameNode,DataNode
NameNode 管理着文件系统元数据,在本地磁盘中以 fsimage 和 edits log 存在。启动过程:将两者合并后加载进内存,DataNode 上报文件-block-DataNode 对应关系也保存在内存。当有读请求时候快速返回文件 block 位置。当有写请求时候,先写到本地 edits log 再写到内存中。
Secondary NameNode 负责定期进行 ckpt:从 NameNode 下载 fsimage 和 edits log,在本地进行合并后生成新的 fsimage(当达到某个时间阈值或对 HDFS 文件的读写请求事务达到一定数量时候)。将合并后的最新 fsimage 上传到 NameNode。
问题:NameNode