zoukankan      html  css  js  c++  java
  • Hadoop之hdfs简介

    hdfs分布式文件系统是Hadoop上两大支柱之一。

    它的主要特点有:大规模分布式存储能力,高并发访问能力,高容错,顺序式文件访问,一致性模型简单能特点。

    它的架构是主从式架构。有一个主控节点NameNode来管理整体文件结构。

    NameNode主要存放命名空间(文件系统目录结构),数据块(64MB)与文件名的映射,数据块副本信息(默认3副本)。

    DataNode来保存具体的文件数据块。

    实际上,NameNode可以看做一个逻辑上的文件系统。客户端所有的逻辑交互都是与NameNode进行,包括新建文件,移动,删除等操作。

    都是由NameNode根据映射表找到具体存放数据块的DataNode节点,然后DataNode进行本地处理,最后将处理结果发送给NameNode。

    但访问文件时,客户端由NameNode获得地址后,直接访问DataNode获取数据。这样减轻了NameNode负担,而且可以并发执行。

    只不过访问结果(成功与否)要发送给NameNode。

    HDFS间大部分数据都是通过网络传输的,采用TCP协议作为底层支持协议。

    那么怎么保证HDFS的高可靠性呢?

    首先具体存放数据的DataNode是多副本存放的,最少3副本,这样通过冗余,保证可靠。

    其次,作为管理节点NameNode,每次启动时要进行安全模式自检,运行时要通过定时发送的心跳包,来检测DataNode可靠性,更新DataNode状态。对于出错DataNode,自动新建副本。

    传输时,通过校验和来保证传输的可靠性。写文件,通过定时租约机制(实际上就是锁),来保证互斥性。

    那NameNode节点失效了怎么办呢?

    HDFS有对NameNode进行备份的节点SecondNameNode,定时备份NameNode上的文件镜像数据及编辑日志数据,这样NameNode失效,就可直接恢复。

    HDFS命令与linux文件管理命令类似,不过要加上前缀: hadoop dfs -chmod.

    另外HDFS的DataNode节点备份都是自动管理,也可以通过balancer命令手动管理。

    如果想要以管理员身份管理HDFS,可以用dfsadmin命令,另外Hadoop还提供了web方式来查看HDFS信息。

    对于编程,Hadoop提供了读写操作的API, 程序员可以编程操作。重要的类有:FileSystem, FSDataInputStream, FSDataOutputSt

  • 相关阅读:
    面试官让我手写一个生产者消费者模式
    怎么用wait、notify巧妙的设计一个Future模式?
    并发编程之Master-Worker模式
    你和那些优秀的人差距在哪里?
    idea 2019.3 最新版破解教程
    JVM垃圾回收详解
    Java类加载器和双亲委派机制
    Java代理模式/静态代理/动态代理
    JSP自定义标签/自定义标签打包
    MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射
  • 原文地址:https://www.cnblogs.com/zqiguoshang/p/6972437.html
Copyright © 2011-2022 走看看