HDFS由三个基本组件组成:NameNode,SecondaryName,DataNode,其思想类似于Linux的文件系统,可以进行类比。

1.NameNode介绍:

1.管理整个文件系统的命名空间,内部维护了命名树。

2.存储元数据:文件层级关系,文件所有者及权限,每个文件由哪些文件块组成(但元信息中不包括每个块的位置)。内容通过fsimage及edits维护,后文会详述。

3.接受客户端请求

2.为什么HDFS倾向于存储大文件:

 首先,NameNode中存储一条元信息需要200byte,而元信息是保存在NameNode的内存中的,不能分布式存储,文件越小,存储同样大小的内容元信息越大,NameNode的内存有可能会成为系统存储的瓶颈。

其次,大文件减少了磁盘的寻道时间。但是数据块过大也会出现问题,MapReduce框架通常会为每个数据块启动一个进程,数据块过大会使并行数量减少,降低任务处理效率。

3.元信息持久化:

fsimage是NameNode的元数据镜像文件,用于存储某一时段内存的元数据信息,而系统运行期间所有元信息的操作都保存在内存中并被持久化到另一个文件edits中,edits会被周期性合并进fsimage中。合并两个日志的操作显然会占用大量的CPU,内存及IO,而NameNode中的计算及存储资源是很宝贵的,因此,通常合并操作通常交给SecondaryNameNode(注意,SecondaryNameNode作用不是热备!)。而NameNode本身通常也不会参与MapReduce计算和数据存储。

4.单点问题:

可以发现,HDFS中NameNode是一个单点,除了定期保存fsimage用于故障恢复外,也可以在元数据写入同时将其实时同步到一个远程挂载的NFS上。

5.SecondaryNameNode作用:

1. 减少启动时NameNode合并日志的时间

2. 一定程度上减少了NameNode的单点问题

2.DataNode

  1.负责存储数据块,响应客户端读写(注意,客户端直接读写DataNode,而非经过NameNode)。

  2.根据NameNode发送的指令创建,删除和复制文件。

  3.定期向NameNode发送心跳,报告文件块列表信息。

  4.为了安全,提供了数据块冗余,默认为3个副本。数据块默认为64MB

  5.数据完整性问题:

  存储和处理数据时数据有可能发生错误或丢失,HDFS会对写入的数据计算校验和。

HDFS基本原理总结的更多相关文章

  1. HDFS基本原理及数据存取实战

    ---------------------------------------------------------------------------------------------------- ...

  2. 【图文详解】HDFS基本原理

    本文主要详述了HDFS的组成结构,客户端上传下载的过程,以及HDFS的高可用和联邦HDFS等内容.若有不当之处还请留言指出. 当数据集大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区,并 ...

  3. Hadoop之HDFS(二)HDFS基本原理

    HDFS 基本 原理 1,为什么选择 HDFS 存储数据  之所以选择 HDFS 存储数据,因为 HDFS 具有以下优点: 1.高容错性 数据自动保存多个副本.它通过增加副本的形式,提高容错性. 某一 ...

  4. HDFS基本原理

    一.什么是HDFS HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,它和现有的分布式文件系统有很多共同点.但同时, ...

  5. hdfs的基本原理和基本操作总结

    hdfs基本原理 Hadoop分布式文件系统(HDFS)被设计成适合执行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有非常多共同点. 但同一时候,它和 ...

  6. 最通熟易懂的Hadoop HDFS实践攻略

    HDFS是用来解决什么问题?怎么解决的? 如何在命令行下操作HDFS? 如何使用Java API来操作HDFS? 在了解基本思路和操作方法后,进一步深究HDFS具体的读写数据流程 学习并实践本文教程后 ...

  7. Hadoop_HDFS_02

    1. HDFS入门 1.1 HDFS基本概念 HDFS是Hadoop Distribute File System的简称, 意为: Hadoop分布式文件系统. 是Hadoop三大核心组件之一, 作为 ...

  8. 大数据和Hadoop平台介绍

    大数据和Hadoop平台介绍 定义 大数据是指其大小和复杂性无法通过现有常用的工具软件,以合理的成本,在可接受的时限内对其进行捕获.管理和处理的数据集.这些困难包括数据的收入.存储.搜索.共享.分析和 ...

  9. 定时脚本: 删除HDFS中的过期文件

    1. 基本原理: 通过hadoop fs -ls *命令获取相关文件或目录的修改时间,然后与设定的过期时间进行比较,之后执行删除操作即可 2. 相关代码: #!/bin/bash source ~/. ...

随机推荐

  1. filebeat.yml(中文配置详解)

    ################### Filebeat Configuration Example ######################### ####################### ...

  2. 转 Caffe学习系列(12):训练和测试自己的图片

    学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...

  3. linux系统 initrd.img中init启动脚本分析

    概述:这篇文章主体内容来源于网上转载.前面几篇文章倾向于制作initrd.img,这篇文章更倾向于initrd.img的运行过程:加载framebuff驱动 ide驱动和文件系统驱动,最后进入到真正的 ...

  4. R语言︱贝叶斯网络语言实现及与朴素贝叶斯区别(笔记)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 一.贝叶斯网络与朴素贝叶斯的区别 朴素贝叶斯的 ...

  5. dojo省份地市级联之省份封装类(一)

    省份封装类 Province.java /** * 省份封装类 */ package com.you.model; import java.io.Serializable; /** * @author ...

  6. VxWorks下USB驱动总结1

    1.USB设备 物理特征:4条电缆,电源线.地线.数据线.脉冲线; 速 度:低速1.5Mbps,全速12Mbps,高速480Mbps; 规范版本:1998年USB1.1,2000年USB2.0; 连 ...

  7. NetBeans部署项目(Extjs)报错(一)

    NetBeans部署项目(Extjs)报错(一) 1.用NetBeans将项目部署到Tomcat中,报错. 具体如下: ant -f D:\\NetBeans\\workspace\\Foundati ...

  8. stl string 容器的使用

    string 是基本的字符串序列容器,对应数据结构中的串,和vector<char>也类似,但功能更多 string 容器的使用 1,string 的构造函数是. string() 2,s ...

  9. Docker部署Apollo配置中心

    1.Apollot简述 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于 ...

  10. Java中使用UDP实现简单的聊天功能

    通过DatagramSocket类来实现.此类表示用来发送和接收数据报包的套接字. 发送端代码如下: import java.io.IOException; import java.net.*; im ...