Hadoop自学笔记(二)HDFS简介
2014-04-23 09:44
246 查看
1. HDFS Architecture
一种Master-Slave结构,包含Name Node, Secondary Name Node,Data Node Job Tracker, Task Tracker。JobTrackers: 控制所有的Task Trackers 。这两个Tracker将会在MapReduce课程里面详细介绍。下面详细说明HDFS的结构及其功能。
Name Node:控制所有的Data Node。存储了整个文件系统的信息。所有新建文件,删除,拷贝等,都会在此更新。存储了Block Mapping.
Secondary Name Node:简单来说,是Name Node的一个备份。
Data Node: 真实进行所有操作的地方。比如一个用户要读取一份文件,用户会先和NameNode沟通,然后Name Node告诉用户这份文件在哪一个Data Node上面,然后用户从此Data Node中读取。Data Node还负责拷贝数据(当然也要报告Name Node)。
上述四个部分可以放到一台机器上面,也可以分别放在不同机器上面。
HDFS特征:
数据丢失保护:每份数据都会存储好几份,默认3份。如果丢失一个block,可以从其他备份中恢复;如果丢失整个Rack,但是由于同一个数据的备份不会存储到同一Rack,因此也可以恢复。同样,假设从一个Rack内部读取数据要比跨Rack读取数据速度更快,HDFS会首先试图从一个Rack读取所有所需数据,这个可以称为Rack Awareness。同样这样同时获得了可靠的数据存储,以及高数据吞吐量。
2. HDFS Internals
Name Node: 内存中存储了所有文件名,备份数,以及文件所在的block id。还有一个Edit Log,用于存储操作日志,当机器重启的时候,会生成一个FsImage文件,整合了Edit Log文件中的内容,相当于把内存持久化。重启后再读取到内存中。用户读写文件都是和Name Node交互,从Name Node中获取数据存储的Blocks,然后从相应的Block读取出文件。
Secondary Name Node: 为了防止Name Node奔溃或者丢失。每小时把Name Node中的Edit Log读取过来,然后生成FsImage,等Name Node丢失后,可以用于恢复。
Data Node: 直接和Name Node进行交互。事实上,Name Node并不和Data Node进行交互,也不和Secondary Name Node交互, 而是后二者主动和Name Node进行交互。Data Node每3秒钟向Name Node报告一次。如果10秒钟没报告,就认为是出问题了,开始进行恢复操作。每一个Block默认大小是64M. 这样可以保证在大文件的情况下,Name Node不会太庞大,而且提升读取速度。Block越大,Name Node中的metaData越小。每一个Block有id,同一份block(备份)的id相同,如下图,存储在不同的rack上面。而且还会把同样一份文件的block放到尽量相近的位置便于读写操作。如果时间长了Blocks的位置混乱了,可以使用rebalancing 工具来重新排序使其恢复到最优位置。
每隔3秒钟Data Node就会向Name Node报告自己的Blocks,Data Node内部包含了一个Block Scanner用来汇报。如果Name Node发现有block备份多了,就删除;如果发现某一block备份不足,就将该任务放到一个队列中,这个队列按照优先级来复制备份不足的block,备份最少的block优先级最高。
3. HDFS interaction
Ubuntu里面可以按照如下图所示输入命令,然后与HDFS进行交互,其命令大部分和Shell命令一样,叫FS Shell。除了Shell以外,还有一个Web UI用来交互。
如果想知道每一个命令可以去google搜索Hadoop Command Guide,然后就可以找到这些命令的详细用法。
一种Master-Slave结构,包含Name Node, Secondary Name Node,Data Node Job Tracker, Task Tracker。JobTrackers: 控制所有的Task Trackers 。这两个Tracker将会在MapReduce课程里面详细介绍。下面详细说明HDFS的结构及其功能。
Name Node:控制所有的Data Node。存储了整个文件系统的信息。所有新建文件,删除,拷贝等,都会在此更新。存储了Block Mapping.
Secondary Name Node:简单来说,是Name Node的一个备份。
Data Node: 真实进行所有操作的地方。比如一个用户要读取一份文件,用户会先和NameNode沟通,然后Name Node告诉用户这份文件在哪一个Data Node上面,然后用户从此Data Node中读取。Data Node还负责拷贝数据(当然也要报告Name Node)。
上述四个部分可以放到一台机器上面,也可以分别放在不同机器上面。
HDFS特征:
数据丢失保护:每份数据都会存储好几份,默认3份。如果丢失一个block,可以从其他备份中恢复;如果丢失整个Rack,但是由于同一个数据的备份不会存储到同一Rack,因此也可以恢复。同样,假设从一个Rack内部读取数据要比跨Rack读取数据速度更快,HDFS会首先试图从一个Rack读取所有所需数据,这个可以称为Rack Awareness。同样这样同时获得了可靠的数据存储,以及高数据吞吐量。
2. HDFS Internals
Name Node: 内存中存储了所有文件名,备份数,以及文件所在的block id。还有一个Edit Log,用于存储操作日志,当机器重启的时候,会生成一个FsImage文件,整合了Edit Log文件中的内容,相当于把内存持久化。重启后再读取到内存中。用户读写文件都是和Name Node交互,从Name Node中获取数据存储的Blocks,然后从相应的Block读取出文件。
Secondary Name Node: 为了防止Name Node奔溃或者丢失。每小时把Name Node中的Edit Log读取过来,然后生成FsImage,等Name Node丢失后,可以用于恢复。
Data Node: 直接和Name Node进行交互。事实上,Name Node并不和Data Node进行交互,也不和Secondary Name Node交互, 而是后二者主动和Name Node进行交互。Data Node每3秒钟向Name Node报告一次。如果10秒钟没报告,就认为是出问题了,开始进行恢复操作。每一个Block默认大小是64M. 这样可以保证在大文件的情况下,Name Node不会太庞大,而且提升读取速度。Block越大,Name Node中的metaData越小。每一个Block有id,同一份block(备份)的id相同,如下图,存储在不同的rack上面。而且还会把同样一份文件的block放到尽量相近的位置便于读写操作。如果时间长了Blocks的位置混乱了,可以使用rebalancing 工具来重新排序使其恢复到最优位置。
每隔3秒钟Data Node就会向Name Node报告自己的Blocks,Data Node内部包含了一个Block Scanner用来汇报。如果Name Node发现有block备份多了,就删除;如果发现某一block备份不足,就将该任务放到一个队列中,这个队列按照优先级来复制备份不足的block,备份最少的block优先级最高。
3. HDFS interaction
Ubuntu里面可以按照如下图所示输入命令,然后与HDFS进行交互,其命令大部分和Shell命令一样,叫FS Shell。除了Shell以外,还有一个Web UI用来交互。
如果想知道每一个命令可以去google搜索Hadoop Command Guide,然后就可以找到这些命令的详细用法。
相关文章推荐
- Hadoop 学习总结之一:HDFS简介
- HDFS简介
- (3)Hadoop-HDFS 简介以及运行
- 大数据技术hadoop入门理论系列之二—HDFS架构简介
- 分布式文件系统HDFS简介
- Hadoop 学习总结之一:HDFS简介
- 大数据技术hadoop入门理论系列之二—HDFS架构简介
- HDFS简介及用C语言访问HDFS接口操作实践
- Hadoop 学习总结之一:HDFS简介
- 【一】HDFS简介
- hadoop学习(二)----HDFS简介及原理
- Hadoop 学习总结之一:HDFS简介
- HDFS(Hadoop Distributed File System)简介
- [转载] HDFS简介
- (五)、HDFS 简介
- 大数据学习篇:hadoop深入浅出系列之HDFS(一)——HDFS简介和优缺点
- 【2-1】HDFS简介与HDFS Shell
- HDFS简介(zz)
- HDFS简介
- HDFS简介