zoukankan      html  css  js  c++  java
  • hdfs基本介绍

    一、hdfs概述

    HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的简称,它的设计目标是把超大数据集存储到网络中的多台普通计算机上,并提供高可靠性和高吞吐率的服务。

    HDFS的优点:
    高容错性:数据自动保存多个副本,hdfs默认的副本数量是3
    适合处理大数据:能够处理GB、TP甚至BP级别的数据,能够处理百万规模以上的文件数量
    可构建在廉价机器上

    HDFS的缺点:
    不适合低延迟的数据访问:hdfs无法实现毫秒级别的数据存储和访问,hdfs提供高吞吐量但无法提供低延迟数据访问
    无法高效处理大量的小文件:大量小文件会占用namenode大量的内存来存储元数据,且会导致寻址时间过长
    不支持并发写入和随机修改:一个文件只能有一个写,不允许多个线程同时写;仅支持数据追加append,不支持随机修改

    二、hdfs组织和架构

    hdfs主要有3个组间构成,分别是NameNode、SecondaryNameNode和DataNode。

    NameNode的主要功能:

    管理文件系统的名称空间

    配置副本策略

    管理元数据,维护目录树,包括文件名、目录名及其层级关系,文件、目录的所有者及权限,每个文件的数据块名称及文件有哪些数据块

    处理客户端的读写请求

    NameNode实时通过心跳消息与DataNode交互,检查文件系统是否运行正常。

    namenode中的元数据不包含每个数据块的位置信息,位置信息会在namenode启动时从datanode获取并保存在内存中,减少寻址时间。

    DataNode的主要功能:

    存储实际的数据块

    执行数据块的读写操作

    SecondaryNameNode的主要功能:

    定期合并fsimage文件和edits文件

    紧急情况辅助恢复NameNode。

    client,就是客户端

    与NameNode交互,获取文件位置信息

    与DataNode交互,进行文件读写操作

    NameNode上存储元数据的文件叫fsimage,NameNode启动时将fsimage加载到内存,对元数据的操作保存在内存中并被持久化到另一个文件edits,SecondaryNameNode合并fsimage和edits的过程:

    合并之前通知NameNode将新的操作写到新的edits文件并将其命令为edits.new

    SecondaryNameNode从NameNode请求fsimage和edits文件

    SecondaryNameNode把fsimage和edits文件合并生成新的fsimage文件

    NameNode从SecondaryNameNode获取合并好的fsimage并替换原来旧的fsimage,并用edits.new文件替换掉原来的edits文件

    更新fstime文件中的检查点。

  • 相关阅读:
    09-2:跳台阶
    09:菲波那切数列
    08:旋转数组的最小值
    07:用两个栈实现队列
    06:重建二叉树
    05:从尾到头打印链表
    04:替换字符
    centos7安装Jenkins更改默认端口并配置Ldap服务器进行用户认证
    Jira配置openLdap服务器进行用户认证
    定时自动从FTP服务器取数据脚本
  • 原文地址:https://www.cnblogs.com/Forever77/p/15677595.html
Copyright © 2011-2022 走看看