• 带您详细解读分布式文件系统HDFS


    一、HDFS的由来:

    本地系统:一个节点作为系统,以前数据是存放在本地文件系统上的,但本地文件系统存在两个问题:1、本地节点存储容量不够大;2、本地节点会坏,数据不够安全。这时,人们开始利用闲置的计算机组成了分布式系统,分布式系统是用计算机网络将多个节点联系起来组成一个逻辑上统一的系统。

    分布式系统的三大特点:

    1、物理分布性,可靠性好;

    2、逻辑整体性:对内可以是零散的,但对外必须是一个整体;

    3、节点自治性:可靠性高。

    现在数据是存放在分布式文件系统上的,分布式文件系统的好处:1、理论上存储容量无穷大,只要服务器数量足够多,解决了硬盘容量不够大的问题;2、通过水平复制实现数据备份功能,解决了硬盘会坏,数据不够安全的问题,因此Google的GFS论文就这样诞生了,Google公司大量使用普通PC机作为服务器,PC机上去掉机箱、外设和硬盘,Doug Cutting则借鉴了GFS论文, 实现了HDFS并贡献了apache基金会。

    二、HDFS的体系结构:

    带您详细解读分布式文件系统HDFS

    (1)Namenode:名称节点

    1、管理HDFS

    2、接收客户端的请求:上传文件、下载文件等

    3、创建日志(edits文件),记录所有针对HDFS的操作,保存HDFS的最近操作

    注:edits文件记录自最后一次检查点之后所有针对HDFS的操作,比如:增加文件、删除文件等。

    保存目录:$HADOOP_HOME/tmp/dfs/name/current

    HDFS提供了离线日志查看器(oev)查看edits文件,默认将edits文件转化成xml文件:

    hdfs oev -i edits文件 -o xml文件路径

    4、保存文件元信息,将内存中不常用的(采用LRU算法:最近最少使用算法)文件元信息保存到磁盘中形成fsimage文件。

    注:文件元信息包含文件名、文件大小、文件存放路径、数据块个数、数据块位置。

    fsimage文件记录自最后一次检查点之前HDFS中所有文件的元信息(序列化信息),序列化的作用:进程间通信和永久存储。

    保存目录:$HADOOP_HOME/tmp/dfs/name/current

    HDFS提供了离线镜像查看器(oiv)查看fsimage文件,默认将fsimage文件转化成txt文件

    hdfs oiv -i fsimage文件 -o txt文件路径

    (2)Datanode:数据节点

    1、以数据块为单位保存数据

    hadoop1.x数据块大小:64M

    hadoop2.x数据块大小:128M

    hadoop3.x数据块大小:256M

    保存目录:$HADOOP_HOME/tmp/dfs/data/current

    (3)SecondaryNamenode:第二名称节点

    1、定期进行edits文件和fsimage文件的合并,更新fsimage文件

    发生的时机:当HDFS发出检查的时候:1、检查周期:每隔一小时 2、检查大小:edits文件是否达到64M

    带您详细解读分布式文件系统HDFS

    三、HDFS存在的问题:

    1、Namenode单点故障

    hadoop1.x:没有解决方案

    hadoop2.x:借助zookeeper实现hadoop的HA功能

    2、Namenode压力过大且内存有限,影响HDFS存储效率

    hadoop1.x:没有解决方案

    hadoop2.x:使用HDFS的联盟实现Namenode的水平扩展

    四、HDFS的高级特性:

    1、HDFS的回收站(Recycle bin):默认是关闭的,可以通过修改core-site.xml文件打开回收站

    <property>

    <name>fs.trash.interval</name>

    <value>1440</value>

    </property>

    注:一天后自动清空回收站,百度网盘十天后自动清空回收站

    2、HDFS的快照(Snapshot):默认是禁用的,快照是某个目录在某一时刻的镜像。

    快照的作用:

    1、防止用户错误操作

    2、备份

    3、试验

    4、灾难恢复

    启用某个目录的快照:hdfs dfsadmin -allowSnapshot /mydir

    禁用某个目录的快照:hdfs dfsadmin -disallowSnapshot /mydir

    创建这个目录的快照:hdfs dfs -createSnapshot mydir1_backup_01

    删除这个目录的快照:hdfs dfs -deleteSnapshot mydir1_backup_01

    重命名这个目录的快照:hdfs dfs -reanameSnapshot mydir1_bakcup_01

    (创建快照的本质:将目录复制到当前目录中的.snapshot隐藏目录下)

    3、HDFS的配额(quota):

    1、名称配额:规定某个目录下存放文件的个数,实际个数n-1个

    2、空间配额:规定某个目录下存放文件的大小,最小配置128M

    4、HDFS的安全模式:只读模式

    作用:保护数据块的安全性

    过程:当集群启动时首先进入安全模式,检查数据块的副本率(默认副本率:0.999),当副本率不满足要求时,少了:水平复制,多了:删除冗余,副本率=实际副本数/设置副本数。

    5、HDFS的权限管理:默认是开启的,可以通过修改hdfs-site.xml文件关闭权限管理

    <property>

    <name>dfs.permissions</name>

    <value>false</value>

    </property>

    作者:李金泽AllenLi,清华大学硕士研究生,研究方向:大数据和人工智能

  • 相关阅读:
    java 开发之linux 下 tomcat
    Eclipse 工具栏不见了
    开始Java学习(Java之负基础实战)
    error: Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier
    真机调试iwatch
    创建iwatch 程序选项
    OC--类型为ID 的类的名称
    Cell.reuseIdentifier 指什么
    mongodb在win7下的安装和使用
    mongodb 常用命令
  • 原文地址:https://www.cnblogs.com/lijinze-tsinghua/p/8505293.html
Copyright © 2020-2023  润新知