zoukankan      html  css  js  c++  java
  • Hadoop功能模块之hdfs

     Hadoop功能模块之hdfs

    第一节:hdfs简介

    用于海量数据存储的,就是一个文件系统,分布式文件系统。

    hadoop distributed filesystem

    第二节:设计思想

    一、分而治之

    将超级大的文件切分成每一个小文件(数据块)进行存储在不同的节点上。同时切分的数据块太大了,容易造成集群中节点的存储的负载不均衡。太小了会造成一个文件切分过多的块会造成namenode的压力过大。

    hdfs进行文件存储的时候将文件进行切块,默认的一个块大小128M。

    hadoop2中默认的每一个块的大小为128M;

    hadoop1中默认的每一个块的大小64M;

    hadoop3中每一个块默认大小为256M。

    二、 冗余数据

    1、简介

    解决数据丢失的问题,hadoop基于普通廉价机的。用空间换取数据安全,在hdfs中每一个数据块都会进行备份存储。默认的情况下每一个数据块存储3份。

    目前我们集群中配置的每一个数据块存储2个副本。这里的副本不是备份的意思,代表的是总存储份数,这里的副本每一个副本都是同等地位的,没有优先级,多个副本数据相互互为副本的,对外提供服务的时候谁有时间谁提供。

    2、注意

    (1)一个节点上可以存储多个数据块的,一个数据块只能存储在一个节点上。但是同一个节点的多个数据块中肯定没有相同的,同一个数据块的多个副本  不可能存储在一个节点的,不同的副本存储在不同的节点。

    (2)真实副本<设置值

    假设集群3个节点,副本配置2个,有一个块的一个副本的节点宕机了,会造成这个块的副本数低于配置的值,这个时候会复制出来这个块的一个副本存储在另一个节点上。

    (3)集群节点<副本

    集群节点3个,副本 4个。会存储3份,另外与一份 namenode会进行记账,当集群中的添加节点的时候将这个欠的副本复制出来。

    (3)真实副本>设置

    集群中某一个节点宕机,这个节点上存储的所有的副本都会复制一份出来   过了一段时间 这个节点活了,造成这个节点上存储的数据块的副本多了,真实的副本大于设置的副本个数,等待1h左右删除多余的副本。

    第三节:hdfs的架构

    一、简介

    主从架构,一主多从的架构。

    二、namenode(主节点)

    1、存储元数据信息

    (1)简介

    元数据:描述数据的数据,用于描述原始数据的数据。

    这里的元数据指的是描述datanode上的存储的真实的数据的数据,datanode上存储数据的块的对应关系。

    存储路径:

    元数据存储路径namenode节点的

    /home/hadoop/data/hadoopdata/name/current 其中fsimage是核心元数据信息。namenode记录的元数据包括:抽象目录树、目录树中的文件和数据块的对应关系、数据块和节点的对应关系数据块存储位置。

    (2)抽象目录树

    通过目录树查看文件系统中存储的文件目录结构的。目录树是从/开始的目录结构。目录树不属于任何一个具体节点,是抽象的一个目录。例如:目前集群中3个从节点/指的是3个从节点共同组成的一个存储系统的抽象的/目录。

    注意:目录树上显示的是存储文件,即判断是否有这个文件,具体的被切分完的数据块的存储位置在目录树上是没有显示的。

    例子:/jdk-8u73-linux-x64.tar.gz   180M

    (3)目录树中的文件和数据块的对应关系

    /jdk-8u73-linux-x64.tar.gz    180M

    0-128M     blk_1073741825

    129-180M   blk_1073741826

    注意:hadoop集群中每一个数据块都会有一个唯一编号全局唯一的

    (4)数据块和节点的对应关系数据块存储位置

    /jdk-8u73-linux-x64.tar.gz    180M

    0-128M     blk_1073741825 [hdp03 hdp01]

    129-180M   blk_1073741826 [hdp03 hdp01]

    2、接受客户端的读写请求

    客户端的所有的读写请求先经过namenode

    三、datanode(从节点)

    1、数据存储

    数据块的存储目录:

    数据块的存储目录

    /home/hadoop/data/hadoopdata/data

    current    核心数据

    in_use.lock  锁文件

    current目录下:

    BP-1453129122-192.168.191.201-1556592207649  块池文件夹 存储namenode管理的所有数据块信息的,VERSION  版本信息。

    数据块的存储目录:

    /home/hadoop/data/hadoopdata/data/current/BP-1453129122-192.168.191.201-1556592207649/current/finalized/subdir0/subdir0

    blk_1073741825  

    blk_1073741826    真实数据块

    blk_1073741825_1001.meta

    blk_1073741826_1002.meta  数据块的元数据信息用于数据校验的校验数据块的完整性的。

    2、负责客户读写请求

    四、secondarynamenode(助理)

    1、帮助namenode备份元数据

    防止namenode元数据丢失,namenode的冷备份节点namenode元数据损坏或丢失的时候可以通过 secondarynamenode进行恢复的。

    2、减轻namenode的压力

    帮助namenode做一些工作

    帮助namenode进行元数据合并

    第四节:hdfs的优缺点

    一、缺点

    1、延时性高

    不适合实时读取

    2、不适合存储大量的小文件

    (1)不划算:寻址时间远远大于读取数据的时间

    (2)会造成namenode的压力很大,一条元数据信息有150byte,一个数据块就有一条元数据。

    3、不支持文件修改支持文件追加

    一次写入多次读取

    修改的成本太高,首先需要先确定修改的数据所属的数据块id 在进行修改所有的对应的数据块的副本,hdfs干脆关闭了修改的功能。

    虽然支持文件追加,不建议使用。(可以利用>>)

    二、优点

    1、成本低

    基于普通廉价机

    2、高扩展性

    集群的从节点,可以无限横向扩展,原则没有上线

    3、高容错性

    副本机制,保证数据的安全性,只要所有副本不同时宕机,就能访问数据。当副本个数=节点个数时数据安全性,容错机制最好。

    用空间来换取数据安全。

    4、高可用性

    hadoop2 namenode的高可用方案

    集群可以7*24 服务

    5、适合批处理

    大数据处理

  • 相关阅读:
    etcd集群的搭建
    MRTG在Windows平台的安装及使用
    SaltStack数据系统-Pillar详解
    Xpath
    XmlDocument操作
    转:悬挂窗口
    转:不规则按钮实现
    转:C#串口编程
    转:控制ComboBox下拉框的下拉部分宽度,使内容能够显示完全
    转:如何捕获winform程序全局异常?
  • 原文地址:https://www.cnblogs.com/lizm166/p/13354896.html
Copyright © 2011-2022 走看看