先从网上copy一些优势点

1、高容错性
数据自动保存多个副本。它通过增加副本的形式,提高容错性。
某一个副本丢失以后,它可以自动恢复,这是由 HDFS 内部机制实现的,我们不必关心。
  2、适合批处理
它是通过移动计算而不是移动数据。
它会把数据位置暴露给计算框架。
  3、适合大数据处理
处理数据达到 GB、TB、甚至PB级别的数据。
能够处理百万规模以上的文件数量,数量相当之大。
能够处理10K节点的规模。
  4、流式文件访问
一次写入,多次读取。文件一旦写入不能修改,只能追加。
它能保证数据的一致性。
  5、可构建在廉价机器上
它通过多副本机制,提高可靠性。
它提供了容错和恢复机制。比如某一个副本丢失,可以通过其它副本来恢复。
  当然 HDFS 也有它的劣势,并不适合所有的场合:
  1、低延时数据访问
比如毫秒级的来存储数据,这是不行的,它做不到。
它适合高吞吐率的场景,就是在某一时间内写入大量的数据。但是它在低延时的情况下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。
  2、小文件存储
存储大量小文件(这里的小文件是指小于HDFS系统的Block大小的文件(默认64M))的话,它会占用 NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。
小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。
  3、并发写入、文件随机修改
一个文件只能有一个写,不允许多个线程同时写。
仅支持数据 append(追加),不支持文件的随机修改。

HDFS 架构图

hadoop 2.X 新特性

  • 引入了NameNode Federation,解决了横向内存扩展(存在多个NameNode,每个NameNode分管一部分目录  不是HA 更不是namenode和secondname)
  • 引入了Namenode HA,解决了namenode单点故障    (为了实现Active NN高热备,增加了FailoverController和ZK,FailoverController通过Heartbeat的方式与ZK通信,通过ZK来选举,一旦Active NN挂掉,就选取另一个FailoverController作为active状态,然后FailoverController通过rpc,让standby NN转变为Active NN FailoverController一方面监控NN的状态信息,一方面还向ZK定时发送心跳,使自己被选举。当自己被选为主(Active)的时候,就会通过rpc使相应NN转变Active状态)
  • 引入了YARN,负责资源管理和调度
  • 增加了ResourceManager HA解决了ResourceManager单点故障

JournalNode的作用  (简单理解为一个集群namenode数据修改了,会向集群里面写数据,standbynamenode 会去读取这个集群里面的数据实现同步)

两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了

DFSZKFailoverController作用 (简单理解为namenode失败切换选举namenode)

  从HealthMonitor和ActiveStandbyElector中订阅事件并管理NN的状态,另外ZKFC还需要负责fencing。

fencing

  当standby节点通过zookeeper集群检测到active节点已经宕机,它并不会立马切换到active状态,hadoop提供了fencing机制,它首先会通过ssh发送一条指令,将NameNode的进程杀死,并等待返回结果。当确认进程已经被杀死之后才会进行状态切换。但是由于网络问题,如何保证ssh命令一定能够发送成功,或者执行后的返回结果一定能够收到呢?如果收不到正确响应就永远无法切换成active状态了。hadoop提供了这样的解决方案,可以定义一个超时时间,当ssh命令发送出去后,超过超时时间后还没有收到正常返回值,zkfc进程可以执行一个自定义的shell脚本程序,进行节点的处理,去保证已经宕机的active节点不会重新切换成active状态

ResourceManager

ResourceManager 负责整个集群的资源管理和分配,是一个全局的资源管理系统。

QuorumPeerMain

zookeeper的进程

关于hdfs的一些认知的更多相关文章

  1. Hadoop认知--在不同的阶段

    入门阶段 出于兴趣,及工作中的简单有用,大约经过1个月的时间,完毕了对Hadoop的基本认知. 在这个月中我干了例如以下几件事 1.大体看了<Hadoop权威指南>.把里面的代码手工码了一 ...

  2. 【Hadoop】HDFS - 创建文件流程详解

    1.本文目的 通过解析客户端创建文件流程,认知hadoop的HDFS系统的一些功能和概念. 2.主要概念 2.1 NameNode(NN): HDFS系统核心组件,负责分布式文件系统的名字空间管理.I ...

  3. hadoop 2.7.3本地环境运行官方wordcount-基于HDFS

    接上篇<hadoop 2.7.3本地环境运行官方wordcount>.继续在本地模式下测试,本次使用hdfs. 2 本地模式使用fs计数wodcount 上面是直接使用的是linux的文件 ...

  4. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  5. %iowait和CPU使用率的正确认知

    resources 理解 %IOWAIT (%WIO) LINUX系统的CPU使用率和LOAD Linux Performance Observability Tools How Linux CPU ...

  6. 【AI开发第一步】微软认知服务API应用

    目录 介绍 API分类 使用‘视觉’API完成的Demo 点击直接看干货 介绍 从3月份Google家的阿尔法狗打败韩国围棋冠军选手李世石,到之后微软Build2016大会宣布的“智能机器人”战略.种 ...

  7. python基础操作以及hdfs操作

    目录 前言 基础操作 hdfs操作 总结 一.前言        作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路, ...

  8. C#、JAVA操作Hadoop(HDFS、Map/Reduce)真实过程概述。组件、源码下载。无法解决:Response status code does not indicate success: 500。

    一.Hadoop环境配置概述 三台虚拟机,操作系统为:Ubuntu 16.04. Hadoop版本:2.7.2 NameNode:192.168.72.132 DataNode:192.168.72. ...

  9. HDFS的架构

    主从结构 主节点,只有一个: namenode 从节点,有很多个: datanodes 在版本1中,主节点只有一个,在 版本2中主节点有两个. namenode 负责(管理): 接收用户操作请求 维护 ...

随机推荐

  1. Android studio 下 NDK Jni 开发 简单例子

    1. 创建一个新的工程 2. 创建一个新的类 JniText.java  点击Build--Make Project  后     选中工程 点击F4键 sdk location 中 Android ...

  2. Linux 部署 Django 系统

    一:安装uwsgi pip3 install uwsgi 二:进入项目目录下,创建uwsgi.ini配置文件 [uwsgi] # 使用nginx连接时使用功能,上线时才使用socket,指定项目执行的 ...

  3. Eclipse MAT和jvisualvm分析内存溢出

    ---------------------------------------------mac os版------------------------------------------------ ...

  4. maven中GroupID 和ArtifactID

    artifactId :unique base name of the primary artifact being generated by this project GroupID 是项目组织唯一 ...

  5. 086. Partition List

    题目链接:https://leetcode.com/problems/partition-list/description/ Given a linked list and a value x, pa ...

  6. Django下orm学习 一对多

    概念说明 ORM:关系对象映射的全称是 Object Relational Mapping, 简称ORM SQLAlchemy: 是Python编程语言下的一款ORM框架,该框架建立在数据库API之上 ...

  7. AI测试——旅程的终点

    在2019年6月,我产生了一个想法,即人工智能探索测试AIET(Artificial intelligence exploration test),大概用了一周时间来思考怎么把人工智能应用到测试领域, ...

  8. 【Python开发】python PIL读取图像转换为灰度图及另存为其它格式(也可批量改格式)

    例如有一幅图,文件名为"a.jpg'.  读取: from PIL import Image #或直接import Image im = Image.open('a.jpg') 将图片转换成 ...

  9. 【神经网络与深度学习】如何在Caffe中配置每一个层的结构

    如何在Caffe中配置每一个层的结构 最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结. 1. Vision ...

  10. 树莓派3 安装kali注意事项(无需显示器、键鼠连接树莓派)2017/9/18更新

     kali系统树莓派专用版下载地址https://www.offensive-security.com/kali-linux-arm-images/ 官方下载页面https://www.kali.or ...