HDFS全称是Hadoop Distributed File System。作为分布式文件系统,具有高容错性的特点。它放宽了POSIX对于操作系统接口的要求,可以直接以流(Stream)的形式访问文件系统中的数据。

HDFS能快速检测到硬件故障,也就是数据节点的Failover,并且自动恢复数据访问。

使用流形式的数据方法特点不是对数据访问时快速的反应,而是批量数据处理时的吞吐能力的最大化。

文件操作原则:

HDFS文件的操作原则是“只写一次,多次读取”。一个文件一旦被创建再写入数据完毕后就不再被修改。这种原则简化了在传统关系型数据库上,高并发模式下的数据一致性问题的问题。

节点通信:

HDFS的数据节点和命名节点,客户端和命名节点间的通信都是基于TCP/ID协议。

文件写入和读取:

对于文件写入的过程,首先客户端发送文件写入请求给命名节点,命名节点告诉客户端它负责管理的数据节点信息,客户端把它要写入的数据按照命名节点告诉它的数据节点信息分割成多个文件块然后发送给数据节点。

对于文件读取的过程,首先客户端发送文件写入请求给命名节点,命名节点告诉客户端它要访问的文件所在的数据节点,客户端去它被告知的数据节点读取数据块。

数据管道式的文件写入:

对于一次文件块的写入,是从客户端向数据节点写入请求文件块写入,数据节点分配一个文件块,客户端写入完毕后需要等待数据节点把该文件块备份到其他的数据节点才算是整个文件块写入的操作完成。然后客户端才可以开始下一个文件块的写入操作。

文件块备份:

对于文件块的备份,一共会有3份。一份放在命名节点指定的数据节点,一份放在所在相同机架上的某个数据节点,一份放在相同机器上的另一个数据节点上(集群中的一台机器可以有多个数据节点)。相同机器上的不同数据节点是应对软件层面上节点失败,而相同机架上不同机器是通过相同的交换机连接通信,在连接线等物理介质和位置上应该是非常接近的,最后的命名节点指定的数据节点应该为了像交换机宕机这种极端的情况而考虑的设计。那么这些备份在什么时候启动呢?心跳检测程序检测数据节点连接失败就启用备份。

文件块复制:

这里的文件复制概念和文件块备份不同的地方时文件块复制是为平衡数据节点存储利用率而设计的。它就是一个Balancer。HDFS中Balancer命名设定了一个起点值来平衡数据节点的磁盘存储利用率。如果某个数据节点被Balancer命令检测到磁盘使用率超过了这个值会把该节点上的文件块复制到其他的磁盘利用率低的节点上。这对于新的节点加入是有帮助的。但是有一点我不明白,这样子就变成是“被动平衡”或者说不是“绝对平衡”。因为如果是绝对平衡就应该检测哪些磁盘上的存储的使用率低,然后从别的节点上把文件块复制过来,最大程度保持整个HDFS的机器上的磁盘使用率平均。但是仔细一想,这样其实弊大于利。为什么?因为这样一来一旦检查频繁就加重了磁盘的繁忙,也没有那么必要这么做,只要磁盘利用率低于我们设定的健康值变可以。

数据校检:

和像SQL Server这类关系数据库产品对于数据页面的提供校检功能一样,HDFS也对文件块进行校检。HDFS用CRC32算法对数据进行校检,产生校检值后存入到数据块文件中,每次读取数据会将校检值和数据进行对比。

安全模式:

HDFS启动时处于安全模式。这段时间内文件系统内的内容不允许被改动和删除。其实这个阶段就跟SQL Server启动时数据库处于Recovering的状态是一样的道理,背面就是在做一些一致性的检查。而HDFS在这段时间就会做像上面说的运行Balancer命令把一些文件块复制到别的数据节点上。

Hadoop ->> HDFS(Hadoop Distributed File System)的更多相关文章

  1. HDFS体系结构:(Distributed File System)

    分布式系统的大概图 服务器越来越多,客户端对服务器的管理就会越来越复杂,客户端如果是我们用户,就要去记住大量的ip. 对用户而言访问透明的就是分布式文件系统. 分布式文件系统最大的特点:数据存储在多台 ...

  2. HDFS(Hadoop Distributed File System )

    HDFS(Hadoop Distributed File System ) HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表 ...

  3. HDFS分布式文件系统(The Hadoop Distributed File System)

    The Hadoop Distributed File System (HDFS) is designed to store very large data sets reliably, and to ...

  4. HDFS(Hadoop Distributed File System )hadoop分布式文件系统。

    HDFS(Hadoop Distributed File System )hadoop分布式文件系统.HDFS有如下特点:保存多个副本,且提供容错机制,副本丢失或宕机自动恢复.默认存3份.运行在廉价的 ...

  5. Yandex Big Data Essentials Week1 Scaling Distributed File System

    GFS Key Components components failures are a norm even space utilisation write-once-read-many GFS an ...

  6. Ceph: A Scalable, High-Performance Distributed File System译文

    原文地址:陈晓csdn博客 http://blog.csdn.net/juvxiao/article/details/39495037 论文概况 论文名称:Ceph: A Scalable, High ...

  7. 5105 pa3 Distributed File System based on Quorum Protocol

    1 Design document 1.1 System overview We implemented a distributed file system using a quorum based ...

  8. HDFS(Hadoop Distributed File System )概述

    目录 一.HDFS概述 二.HDFS特点 三.HDFS集群组成:主从架构---一个主节点,多个从节点 1. NameNode(名称节点 / 主节点)----- HDFS集群的管理者 2. DataNo ...

  9. HDFS(Hadoop Distributed File System)的组件架构概述

    1.hadoop1.x和hadoop2.x区别 2.组件介绍 HDFS架构概述1)NameNode(nn): 存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个 ...

随机推荐

  1. mysql 外键问题

    清空.删除具有外键约束的表时报ERROR 1701(42000)的解决 解决方法: 解除外键约束mysql> set foreign_key_checks=0; 删除表后添加外键约束 mysql ...

  2. window 系统 cygwin swool 问题

    cygwin 终端乱码  端口占用 查看 tcp  端口: netstat -tno  或者 netstat -an | grep 端口 杀死进程号 : kill   进程号 --->  143 ...

  3. C++_异常1-调用abort()

    异常是相对较新的C++功能,有些老式编译器可能没有实现.另外有些编译器可能默认关闭这一特性,需要使用编译器选项来打开它. 这里先讨论一个基本问题: 2.0 * x * y / (x+y) 如果y是x的 ...

  4. SQL 随手记

    SQL 学习片段: 建立一个简单的联系数据表, mobile_number char(11).mobile_province nvarchar(50).mobile_area nvarchar(200 ...

  5. React笔记:ref注意事项

    [一]使用ref必须用在[类型式的组件]才起作用,用在[函数式的组件]是无效的. 下面这个例子用在了[函数式的组件]上,所以是无效的: function MyFunctionalComponent() ...

  6. ElementUI 时间控件

    <template> <div class="block"> <span class="demonstration">默认& ...

  7. setlocal enabledelayedexpansion 解释

    看字面的意思是:设置本地为延迟扩展.其实也就是:延迟变量,全称"延迟环境变量扩展", 在cmd执行命令前会对脚本进行预处理,其中有一个过程是变量识别过程,在这个过程中,如果有两个% ...

  8. layer.open中content里面的元素追加click事件,触发不了

    [注意] 事件要追加在触发弹出事件的点击事件里面 $('#feedback').click(function(){ layer.open({ content:'<div><div c ...

  9. jar 启动关闭

    1.后台启动 startTest.sh #设置工程路径project_path=/root/testcd $project_path#nohup后台启动,输出日志到test.lognohup java ...

  10. Merge Sorted Array II

    Merge two given sorted integer array A and B into a new sorted integer array. Example A=[1,2,3,4] B= ...