Hadoop原理之HDFS

一、重要概念:分区存储,分布式

解决的问题:两大核心分布式存储、分布式处理

实现的目标:兼容廉价的硬件设备、实现流数据读写、支持大数据集、支持简单的文件模型、跨平台的平台兼容性

自身局限性:1、不适合低延迟数据访问,高吞吐量,无法高效存储大量小文件                                                                                                     2、不支持用户写入文件,只能追加不能修改。

架构:采用主从架构,主节点起到管家作用,存储名称节点,从节点起到存储数据节点的作用,

当读数据的时候,首先从名称节点中找到数据节点的位置,(到哪一个机器上去寻找),然后再从相应的机器上进行读取。

二、block块

重要的概念:block 块

块的大小是固定的,默认64MB,可以自己配置。

如果文件大小不到64MB,可以单独存成一个block

文件存储方式:被切分成若干个block,存储到不同节点。默认存储的block都有三个副本。一个集群上不能存储相同的副本。block大小在Client上传文件时设置,文件上传成功后副本数可变更而block size不可变。

优点:支持大规模文件存储、简化系统设计、适合数据备份

三、HDFS两大组件

名称节点整个HDFS集群的管家,保存元数据。记录信息,相当于一个元数据的数据目录。

元数据存储的信息:,文件是什么,文件被分为多少块,每个块和文件怎么映射,每个块被存储在哪个服务器上。

Hadoop原理之HDFS

Hadoop原理之HDFS

数据节点:存储实际的数据

NameNode 、SecondNameNode

NameNode功能:接收客户端读写服务

NameNode:存储文件的元数据metadata、存储文件包含哪些块,文件的所有者和权限、block保存在哪个DataNode

NameNode的metadate信息启动后会加载到内存。

记录了对元数据的操作日志,比如什么时间删除了数据

SecondNameNode:不是NameNode的备份(但是可以做备份),可以做一定数据的备份,但不是热备份

主要功能:帮助NN合并edis的log,减少NN启动时间

DataNode:主要功能是存储实际的数据(block),在启动DataNode线程的时候会向NN汇报block信息

通过向NN发送心跳保持与其联系(3s一次)

block放置的机架策略:第一副本放在上传文件的DN;如果 集群外提交则放在cpu不忙,磁盘不满的节点。

第二副本放在与第一副本不同的机架上。第三副本放在与第二副本相同的机架上。

更多副本则随机节点。

三、HDFS的读写流程、安全模式

HDfs读流程:

Hadoop原理之HDFS

注意:不能一次性读很大的文件,一般读小型文件

HDFS写流程

Hadoop原理之HDFS

 

写入时,在第一步将文件名称,大小、所有者传到NameNode。第2步就能确定文件要分成几个block,副本数是由第一个DataNode自己进行复制的,产生线 程创建DataNode的副本。而不是由客户端复制的。

安全模式:

NameNode启动的时候,相当于初始化。此时HDFS是只读的,

hadoop相关文档:见http://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html

英文文档:http://hadoop.apache.org/docs/r2.7.6/

hdfs相关命令:http://hadoop.apache.org/docs/r2.7.6/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html

使用命令查看hdfs的状态:

使用如下命令  :  hdfs dfsadmin -report