zoukankan      html  css  js  c++  java
  • Hadoop自学笔记(二)HDFS简单介绍


    1. HDFS Architecture


    一种Master-Slave结构。包括Name Node, Secondary Name Node,Data Node Job Tracker, Task TrackerJobTrackers: 控制全部的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 Node3秒钟向Name Node报告一次。假设10秒钟没报告,就觉得是出问题了,開始进行恢复操作。每个Block默认大小是64M. 这样能够保证在大文件的情况下,Name Node不会太庞大,并且提升读取速度。

    Block越大,Name Node中的metaData越小。

    每个Blockid,同一份block(备份)的id相同,例如以下图。存储在不同的rack上面。

    并且还会把相同一份文件的block放到尽量相近的位置便于读写操作。假设时间长了Blocks的位置混乱了,能够使用rebalancing 工具来又一次排序使其恢复到最优位置。

    每隔3秒钟Data Node就会向Name Node报告自己的BlocksData Node内部包括了一个Block Scanner用来汇报。假设Name Node发现有block备份多了,就删除;假设发现某一block备份不足,就将该任务放到一个队列中,这个队列依照优先级来复制备份不足的block。备份最少的block优先级最高。

     


    3. HDFS interaction


    Ubuntu里面能够依照例如以下图所看到的输入命令,然后与HDFS进行交互,其命令大部分和Shell命令一样。叫FS Shell。除了Shell以外。另一个Web UI用来交互。

    假设想知道每个命令能够去google搜索Hadoop Command Guide,然后就能够找到这些命令的具体使用方法。

     

  • 相关阅读:
    面向对象的七大设计原则
    06章 初始继承和多态
    面向太阳,不问春暖花开
    05章 体检套餐管理系统
    02章《深入C#数据类型》项目经理评分
    MongoDB快速入门(十二) -- 索引
    MongoDB快速入门(十一)- sort() 方法
    MongoDB快速入门(十)- Limit(),Skip() 方法
    MongoDB快速入门(九)- 投影
    MongoDB快速入门(八)- 删除文档
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7202435.html
Copyright © 2011-2022 走看看