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,然后就能够找到这些命令的具体使用方法。

Hadoop自学笔记(二)HDFS简单介绍的更多相关文章

  1. HDFS简单介绍及用C语言訪问HDFS接口操作实践

    一.概述 近年来,大数据技术如火如荼,怎样存储海量数据也成了当今的热点和难点问题,而HDFS分布式文件系统作为Hadoop项目的分布式存储基础,也为HBASE提供数据持久化功能,它在大数据项目中有很广 ...

  2. Hadoop自学笔记(一)常见Hadoop相关项目一览

    本自学笔记来自于Yutube上的视频Hadoop系列.网址: https://www.youtube.com/watch?v=-TaAVaAwZTs(当中一个) 以后不再赘述 自学笔记,难免有各类错误 ...

  3. Hadoop学习笔记: HDFS

    注:该文内容部分来源于ChinaHadoop.cn上的hadoop视频教程. 一. HDFS概述 HDFS即Hadoop Distributed File System, 源于Google发表于200 ...

  4. Hadoop学习笔记(2)-HDFS的基本操作(Shell命令)

    在这里我给大家继续分享一些关于HDFS分布式文件的经验哈,其中包括一些hdfs的基本的shell命令的操作,再加上hdfs java程序设计.在前面我已经写了关于如何去搭建hadoop这样一个大数据平 ...

  5. JMeter自学笔记2-图形界面介绍

    一.写在前面的话: 上篇我们已经学会了如何安装JMeter和打开JMeter,那么这篇我们将对JMeter的图形界面做一个简单的介绍.大家只要简单的了解即可,无需死记硬背,在今后的学习和使用中慢慢熟悉 ...

  6. 学习笔记-React的简单介绍&工作原理

    一.React简单介绍 1.React起源于Facebook内部项目,与2013年5月 2.是一个用于构建用户界面的JavaScript库 二.React特点 1.声明式设计-React采用声明范式, ...

  7. how tomcat works 读书笔记(二)----------一个简单的servlet容器

    app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/arti ...

  8. Hadoop集群(二) HDFS搭建

    HDFS只是Hadoop最基本的一个服务,很多其他服务,都是基于HDFS展开的.所以部署一个HDFS集群,是很核心的一个动作,也是大数据平台的开始. 安装Hadoop集群,首先需要有Zookeeper ...

  9. python自学笔记(二)

    通过前文介绍,大体上可以用学过的知识做一些东西了. 这里简单介绍下python参数解析argparse命令. 使用argparse需要引用  import argparse 然后调用 parser = ...

  10. [Docker]学习笔记--简单介绍

    学习docker已经有一段时间了,一直没有静下心来好好总结一下. 最近用docker搭了一整套Gitlab的持续集成环境.(会在下一篇中详细的讲解具体步骤,敬请期待) 感觉是时候写点东西和大家一起分享 ...

随机推荐

  1. 【优化算法】遗传算法GA求解混合流水车间调度问题(附C++代码)

    00 前言 各位读者大家好,好久没有介绍算法的推文了,感觉愧对了读者们热爱学习的心灵.于是,今天我们带来了一个神奇的优化算法--遗传算法! 它的优点包括但不限于: 遗传算法对所求解的优化问题没有太多的 ...

  2. react拼接class&将JS标签转换为HTML

    1.在JS中混杂字符和HTML标签,识别方法: const menuList = ['门店', '星享俱乐部', '菜单', '<hr></hr>', '星巴克移动应用', ' ...

  3. Educational Codeforces Round 33

    # Who = Penalty * A B C D E F 479 arkethos 4 247   + 00:08 + 00:19 +1 00:59 +2 01:41     479  ne-leo ...

  4. App Store兼容性问题

    app下载出现兼容性问题  项目支持9.0以上的系统 但是10.3的iphone5下载的一直是老版本app  下载时提示不兼容 导致无法正常使用 解决办法: 修改Build-Settings-> ...

  5. FBX骨骼坐标系与模型坐标系的关系

    采用assimp加载FBX文件.首先记录下ubuntu下assimp的编译安装. cd assimp_unzip_dir mkdir build cd build && cmake . ...

  6. 『MicroPython』Hello uPy

    官网买了几乎全套.一路曲折:7月10号下单,13号发货,14号法兰克福过关,23号到北京,25号到上海,27号到沪C:沪C邮局投3次未果,中彩票一样终于打通了投递部电话才在次日28号“妥投”:又因出差 ...

  7. JavaScript回顾一下js的基础知识,以及学习一下在项目中了解到的新知识

    学习文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions https://www.cnblogs.com ...

  8. Mysql重复数据查询置为空

    前两天产品有个需求,相同的商品因为价格不同而分开展示,但是明细还是算一条明细,具体区分展示出商品的价格和数量信息,其他重复的商品信息要置空. 需求并不难,用程序代码循环处理就可以了.但是后面涉及到打印 ...

  9. Vue2:实例生命周期、js生命周期

    1.vue2生命周期 每个 Vue 实例在被创建之前都要经过一系列的初始化过程.例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM ...

  10. 常用css和js内容

    1.让一个200x200的div在不同分辨率屏幕上下左右居中. <div class="box"></div> <style type="t ...