一、HDFS介绍
HDFS是分布式文件系统。windows文件系统常见有fat32、ntfs,linux下 常见是ext3、ext4,还有很多其他文件系统。不同类别的文件系统存储数据的格式不一样。
二、HDFS1.0基础
1.HDFS1.0系统架构
- 主(叫Master)和多个从(Slave或Worker)分别部署到不同机器上。主机器除了NameNode还有SecondaryNameNode(它并不是一个NameNode,仅仅是镜像文件,是数据的备份)。NameNode和DataNode其实是两个完全不同进程(注意是进程)。
- HDFS1.0由3个组件构成 : NameNode(目前只能启动一个) 、 SecondaryNameNode 、 DataNode(每一台机器只能启动一个,但是多台机器会有多个)。
2.角色
- HDFS角色一共三个:主、从、client(client是提交任务的客户端)。
- Client的读操作:从DataNode上读,由NameNode告诉目标位置DataNode。
- DataNode存储数据最小单元block(如下图的绿色小方块,默认64M,可以修改,block大小直接影响map并发个数)
- NameNode存储元数据。
3.组件
NameNode、SecondaryNameNode 、 DataNode
I. NameNode
(1)NameNode:如下图
NameNode主要两个映射:文件名(客户端开发操作针对文件) -> block、block -> datanode(对应机器,一个机器只有一个datanode)。datanode的映射有block -> path。
(2)Namenode的隐患:
- Namenode进程挂了就不提供服务。
- HDFS1.0集群规模扩大问题:Namenode元数据存储在内存中,当集群规模特别大挂载了很多DataNode节点,DataNode节点有很多文件,文件背后有很多block,会发现这个数据非常庞大,那完全存在于内存中是吃不消的。一旦数据变大后,一方面是不能及时持久化,另外方面是不能永远膨胀下去,所以它直