• Hadoop HDFS概述


    HDFS 概述

    产生背景

    随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。

    HDFS 定义

    HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

    HDFS 优缺点

    优点

    • 高容错性

    数据自动保存多个副本。它通过增加副本的形式,提高容错性。

    某一个副本丢失以后,它可以自动恢复。

    • 适合处理大数据

    数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;

    文件规模:能够处理百万规模以上的文件数量,数量相当之大。

    • 构建在廉价机器上

    缺点

    • 不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
    • 无法高效的对大量小文件进行存储。

    小文件过多,会过多占用 Namenode 的内存,并浪费block。因为HDFS的每个文件、目录、数据块占用150B空间大小。

    • 不支持并发写入、文件随机修改。

    HDFS 组成架构

    NameNode:就是一个Master。主要负责:

    • 管理HDFS的名称空间
    • 配置副本策略
    • 管理数据块(Block)映射信息
    • 处理客户端读写请求

    DataNode:就是Slave。主要负责:

    • 存储实际的数据块
    • 执行数据块的读/写操作

    Client:就是客户端,例如(Java代码,hdfs dfs)。主要负责:

    • 文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传
    • 与NameNode交互,获取文件的位置信息
    • 与DataNode交互,读取或者写入数据
    • Client提供一些命令来管理HDFS,比如NameNode格式化
    • Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作

    Secondary NameNode:NameNode 辅助节点,主要负责:

    • 合并 fsimage 和 edit logs

    NameNode 为了效率高,所以将目录结构相关数据放在内存中。但是因为内存容易丢失,所以内存中的数据需要持久化。那么谁来做这件事情?

    NameNode不能完成这件事情吗,当然可以的。如果这么设计会导致 NameNode 节点任务繁重执行效率低下,因此诞生了- Secondary NameNode

    HDFS 文件块大小

    在 Hadoop2.x 版本中是 128M,老版本中是 64M。可通过配置文件修改。

    <property>
      <name>dfs.blocksize</name>
      <value>134217728</value>
      <description>
          The default block size for new files, in bytes.
          You can use the following suffix (case insensitive):
          k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such as 128k, 512m, 1g, etc.),
          Or provide complete size in bytes (such as 134217728 for 128 MB).
      </description>
    </property>
    

    参考资料

    • Hadoop海量数据处理:技术详解与项目实战(第2版)
    • 尚硅谷大数据
  • 相关阅读:
    xpage 获取 附件
    Win8.1应用开发之离线缓存
    分布式系统设计系列 -- 基本原理及高可用策略
    hdu3652(数位dp)
    HDU 4869 Turn the pokers
    ubuntu 安装mysql, 以及全然又一次安装的方法
    Wildcard matching
    并发编程:创建进程 join方法 进程间的数据隔离问题 进程对象以及其他方法 守护进程 互斥锁
    网络通信 : 粘包解决的实例 socketserver模块 udp的使用 简易版QQ的实现 异常处理机制的知识点
    TCP通信: scoket模块 黏包问题 连接循环 通信循环
  • 原文地址:https://www.cnblogs.com/zhanghuizong/p/12650148.html
Copyright © 2020-2023  润新知