HDFS架构
NameNode:一个,metadata元数据信息的存放(权限,文件对应的block信息)
DataNode:多个,存储数据,和NameNode直接进行心跳连接
SecondaryNameNode
Client
Block:File存入HDFS,是按照block进行拆分的 128M
HDFS读写流程
写数据:
写数据到HDFS,大小是200M
1-blocksize 128M
2-副本数量 3
Client需要去hdfs配置文件获取上面两个配置
Client对输入文件进行拆分
Client告诉NameNode写入的blcok和副本数
NameNode需要知道3个block存放到哪几个DataNode,告诉Client
Client将数据写入到对应的DataNode,写入完成会通知NameNode
读数据:
hadoop fs -text /abc/file.txt
Client拿着文件的地址先去NameNode查找元数据的信息,然后告诉Client
Client直接去DataNode上面获取数据,多个block结果客户端会合并
HDFS HA架构
提供一个主节点一个备节点
NameNode Active
NameNode Standby
备节点会和主节点会进行数据的同步
通过ZK进行状态的切换
小文件
明显小于block size的文件
hadoop中的目录、文件、block都会以元数据的方式存储下来
瓶颈
磁盘IO
task启动销毁的开销
资源有限
比如我们使用 MapReduce任务来处理这些小文件,因为每个 Map 会处理一个 HDFS 块,这会导致程序启动大量的 Map 来处理这些小文件,虽然这些小文件总的大小并非很大,却占用了集群的大量资源
打开App,阅读手记