美文网首页
HDFS详解

HDFS详解

作者: 机器不能学习 | 来源:发表于2018-10-08 17:56 被阅读0次

    HDFS:是hadoop的核心子项目,是一个分布式的文件系统
    它整合了众多的文件系统,并提供了一个类FileSystem作为接口来支持各个系统

    简介:
    HDFS:基于流数据模式访问和处理超大文件的需求而开发的,他可以运行在廉价的服务器上
    1.超大文件处理
    不言而喻,其处理是百m来至百TB的文件
    2.流式访问
    其以“一次写入,多次读取”的宗旨,一旦数据被写入就会被分发到多个服务器上,往往数据是成块的,所以往往访问整个数据集要比访问一条数据快
    3.在廉价机上部署
    也造成了一些缺点:以延迟来达到高吞吐(不适合低延迟访问),无法高效储存大量小文件(所以都合并再处理),不支持多个用户写入和随意修改

    相关概念
    1.块
    块是HDFS存储的基本单元,它的默认值是64MB。
    作为一个分布式文件系统,块发挥了很大的作用,超大型的文件一个机器是装不了的,那么分为了多个块,就可以分配到多个主机上。不仅如此它还是很好的容错性,每份文件都会有默认的3份文件。
    2.NameNode和DateNode
    两类节点分别承担Master和Worker的任务。NameNode主要是进行任务的调度,DateNode则是任务的执行。
    NameNode负责维护整个文件的命名空间等,每次得到请求时,把相应文件的位置告诉DN,让Worker去完成,这样可以减轻NameNode的负担。
    DateNode时间包括了数据本身和元数据(数据块的长度时间等)。
    怎么确保两者的链接呢?
    是通过心跳信号和块状态报告。每隔一定时间,DateNode会向NameNode发送心跳证明自己还存活,也会隔一定时间发送文件存储信息到主节点。

    这里再说说亲身经历的一些错误。
    DateNode不启动,查看日志如果有ID不统一,这是因为DN和NameNode版本号不一样,将版本号强行修改。文件在Hdfs/data/../current
    有SecondaryNameNode没有NameNode,且日志说日志不连续。可能是NameNode元数据,hadoop namenode -recover修复,选择C
    There appears to be a gap in the edit log. We expected txid 1, but got txid 3.

    体系结构:
    1.副本存放与读取
    副本存放往往是系能和可靠的关键。HDFS采用了机架感应的方式。
    因为同一机架上两台的传输成本低于两个在不同机架上传输成本。副本存放是一部分放在本机架上减少传输成本,但又防止整个机架奔溃,所以也存放了一些在其他的机架上。
    因为有的在一个机架,减少了写操作的数据传输。副本在多个机架上,这样减少了读取时需要的总带宽。读取数据时,也会让客户在靠得最近的机器上读取。
    2.安全模式
    当NameNode启动后会进入一种安全模式,在这个阶段,不会进行块的复制,也不进行写操作。在这个阶段它会检查每个数据块的副本数,在副本数达到最小值时才认为是安全的。在确认一定百分比的块达标之后,退出安全模式。把不合格的副本补上。
    3.文件安全
    HDFS有SecondaryNameNode保证文件安全,它会和NameNode同步合并编辑日志中的命名空间镜像。但是其同步备份要慢于NameNode,所以会有一定的损失

    常用命令
    查看块并且打印报告 hadoop fsck / -files -blocks
    复制文件到本地或者到HDFS hadoop fs -copyFromLocal(-copyToLocal) filename towhere
    查看文件列表 bin/hadoop fs -ls / 或者 bin/hdfs dfs -ls /
    创建文件夹 hadoop fs -mkdir filename 或者 hdfs dfs -mkdir /filename
    文件权限 hdfs dfs -chomd 777 /

    相关文章

      网友评论

          本文标题:HDFS详解

          本文链接:https://www.haomeiwen.com/subject/fskjaftx.html