一、HDFS介绍

HDFS为了做到可靠性(reliability)创建了多分数据块(data blocks)的复制(replicas),并将它们放置在服务集群的计算节点中(compute nodes),MapReduce就可以在他么所在的节点上处理这些数据了。

二、HDFS运行机制

一个名字节点和多个数据节点

数据复制(冗余机制)

存放的位置(机架感和策略)

故障检测

数据节点

心跳包(检测是否宕机)

块报告(安全模式下检测)

数据完整性检测(校验和比较)

名字节点(日志文件,镜像文件)

空间回收机制

shell命令

Ls  lsr

Mkdir  rm  cp

Chmod   chown

Cat  mv  put  get  tail

三、     HDFS优点:

高容错性:

数据自动保存多个副本,副本丢失后自动恢复

适合批处理:

移动计算而非数据,数据位置暴露给计算框架

适合大数据处理:

GB TB 甚至TB级数据,百万规模以上的文件数量,10K+节点

可构建在廉价机器上:

通过多副本提高可靠性,提供了容错和恢复机制

四、     HDFS缺点

低延迟数据访问:

比如毫秒级,低延迟与高吞吐率

小文件存取:

占用NameNode大量内存,寻道时间超过读取时间

并发写入、文件随机修改:

一个文件只能有一个写者。仅支持append.

五、   HDFS架构

六、HDFS数据存储单元(block)

文件被切分成固定大小的数据块

默认数据块大小是64MB,可配置

若文件大小不到64MB,则单独存成一个block

一个文件存储方式

按大小被切分成若干个block,存储到不同节点上

默认情况下每个block都有个副本

Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更

七、HDFS设计思想

NameNode(NN):

--NameNode主要功能:接受客户端的读写服务

--NameNode保存metadate信息包括

文件ownership和permissions

文件包含哪些块

Block保存在哪个DataNode(由DataNode启动时上报)

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

Metadata存储到磁盘文件名为fsimage

Block的位置信息不会保存到fsimage

Edit记录对metadata的操作日志

DataNode(DN):

--存储数据(Block)

--启动DN线程的时候会向NN汇报block信息

--通过向NN发送心跳保持与其一致(3秒一次),如果NN10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其他DN

SecondaryNameNode(SNN):

--它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并editslog,减少NN启动时间

--SNN执行合并时机

根据配置文件设置的时间间隔fs.checkpoint.peroid默认为3600秒

根据配置文件设置editslog大小fs.checkpoint.size规定edits文件的最大值默认是64MB

Block的副本放置策略:

第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。

第二个副本:放置在于第一个副本不同的机架的节点上

第三个副本:与第二个副本相同机架的节点

更多副本:随机节点

八、SNN合并流程

九、HDFS对数据的管理

(1)文件写入

1)Client 向NameNode发起文件写入的请求

2)NameNode根据文件大小和文件块配置情况,返回给Client所管理的DataNode的信息

3)Client将文件划分为多个Block,根据DataNode的地址信息,按顺序将其写入到每一个DataNode块中

(2)文件读取

1)Client向NameNode发起文件读取的请求

2)NameNode返回文件存储的DataNode信息

3)Client读取文件信息

(3)文件块(Block)复制

1)NameNode发现部分文件的Block不符合最小复制数这一要求或部分DataNode失效

2)通知DataNode相互复制Block

3)DataNode开始相互复制

九、HDFS在数据管理方面值得借鉴的功能

(1)文件块的位置

一个Block会有三份备份,一份放在NameNode指定的DataNode上。另一份放在与指定DataNode不在同一机器上的DataNode上,最后一份放在与指定DataNode同一Rack的DataNode上,备份的目的是为了数据安全,采用这种配置方式主要是考虑同一Rack失败的情况,以及不同Rack之间进行数据复制会带来的性能问题。

(2)心跳检测

用心跳检测DataNode的健康状况,如果发现问题就采取数据备份的方式来保证数据的安全性。

(3)数据复制

使用Hadoop时可以用HDFS的balance命令配置Threshold来平衡每一个DataNode的磁盘利用率,假设使用了Threshold为10%,那么执行balancer命令时,首先会统计所有DataNode的磁盘利用率的平均值,然后判断如果某一个DataNode的磁盘利用率超过这个平均值,那么将会把这个DataNode的Block转移到磁盘利用率低的DataNode上,这对于新节点的加入会十分有用。

(4)数据校验

采用CRC32做数据校验,在写入文件块的时候,除了会写入数据外还会写入校验信息,在读取的时候则需要先校验后读入。

(5)单个NameNode

如果单个NameNode失败,任务处理信息将会记录在本地文件系统和远端的文件系统中。

(6)数据管道性的写入

当客户端要写入文件到DataNode上时,首先会读取一个Block,然后将其写入第一个DataNode上,接着由第一个DataNode将其传递到备份的DataNode上,直到所有需要写入这个Block的DataNode都成功写入后,哭护短才会开始写下一个Block.

(7)安全模式

分布式文件系统启动时会进入安全模式,当分布式文件系统处于安全模式时,文件系统中的内二不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了在系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略进行必要的复制或删除部分数据块。在实际使用中,如果在系统启动时修改和删除文件会出现安全模式不允许修改的错误提示,只需要等待一会儿即可。

【大数据系列】HDFS初识的更多相关文章

  1. 大数据系列2:Hdfs的读写操作

    在前文大数据系列1:一文初识Hdfs中,我们对Hdfs有了简单的认识. 在本文中,我们将会简单的介绍一下Hdfs文件的读写流程,为后续追踪读写流程的源码做准备. Hdfs 架构 首先来个Hdfs的架构 ...

  2. 大数据系列4:Yarn以及MapReduce 2

    系列文章: 大数据系列:一文初识Hdfs 大数据系列2:Hdfs的读写操作 大数据谢列3:Hdfs的HA实现 通过前文,我们对Hdfs的已经有了一定的了解,本文将继续之前的内容,介绍Yarn与Yarn ...

  3. 大数据系列(3)——Hadoop集群完全分布式坏境搭建

    前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...

  4. 大数据系列(2)——Hadoop集群坏境CentOS安装

    前言 前面我们主要分析了搭建Hadoop集群所需要准备的内容和一些提前规划好的项,本篇我们主要来分析如何安装CentOS操作系统,以及一些基础的设置,闲言少叙,我们进入本篇的正题. 技术准备 VMwa ...

  5. 大数据系列之并行计算引擎Spark部署及应用

    相关博文: 大数据系列之并行计算引擎Spark介绍 之前介绍过关于Spark的程序运行模式有三种: 1.Local模式: 2.standalone(独立模式) 3.Yarn/mesos模式 本文将介绍 ...

  6. 大数据系列之并行计算引擎Spark介绍

    相关博文:大数据系列之并行计算引擎Spark部署及应用 Spark: Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎. Spark是UC Berkeley AMP lab ( ...

  7. 大数据系列之数据仓库Hive安装

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  8. 大数据系列之数据仓库Hive命令使用及JDBC连接

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  9. 大数据系列之数据仓库Hive原理

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  10. 大数据系列之分布式计算批处理引擎MapReduce实践

    关于MR的工作原理不做过多叙述,本文将对MapReduce的实例WordCount(单词计数程序)做实践,从而理解MapReduce的工作机制. WordCount: 1.应用场景,在大量文件中存储了 ...

随机推荐

  1. POJ 3126 --Father Christmas flymouse【scc缩点构图 && SPFA求最长路】

    Father Christmas flymouse Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 3007   Accep ...

  2. 解决 PathVariable annotation was empty on param 0.

    今天在写网关关于远程调用Feign的时候报的一个错误,PathVariable注解为空.仔细看了一下代码发现问题出在用@PathVariable注解的时候 @PathVariable Integer ...

  3. Unity3D Shader基础教程

    原文地址:http://bbs.9ria.com/thread-212557-1-1.html 此教程将指引你如何建立自己的Shaders,让你的游戏场景看起来更好.Unity配备了强大的阴影和材料的 ...

  4. Android检查设备是否可以访问互联网,判断Internet连接,测试网络请求,解析域名

    安卓SDK提供了ConnectivityManager类,那么我们就可以轻松的获取设备的网络状态以及联网方式等信息. 但是要想知道安卓设备连接的网络能不能访问到Internet,就要费一番周折了. 本 ...

  5. lakala反欺诈建模实际应用代码GBDT监督学习

    /** * Created by lkl on 2018/1/16. */ import org.apache.spark.mllib.evaluation.BinaryClassificationM ...

  6. asp adodb.stream读取文件和写文件

    读取文件操作: '------------------------------------------------- '函数名称:ReadTextFile '作用:利用AdoDb.Stream对象来读 ...

  7. Linux服务器安装svn

    云安装 yum install subversion 配置 1.配置仓库 [root@localhost /]# cd /home [root@localhost home]# mkdir svn [ ...

  8. vue select下拉框绑定默认值

    vue select下拉框绑定默认值: 首先option要加value值,以便v-model可以获取到对应选择的值 一.当没有绑定v-model,直接给对应的option加selected属性 二.当 ...

  9. 5 云计算系列之glance镜像服务安装

    preface 在上节中我们了解了keystone服务,下面就看看glance管理镜像的服务吧. glance组成 glance有两部分组成: glance-api 接受云系统镜像的创建,删除,读取请 ...

  10. 远程执行命令和文件分发shell脚本

    deploy.conf node01,all,other,datanode,journalnode,zookeeper, node02,all,other,datanode,journalnode,z ...