zoukankan      html  css  js  c++  java
  • hdfs基本思想

    1.hdfs的优缺点

      (1)不适合大量小文件存储;

      (2)不适合并发写入,不支持文件随机修改;(只能append追加)

      (3)不支持随机读等低延时的访问方式

    2.基本思想 

    主从结构
      主节点, namenode
      从节点,有很多个: datanode
    namenode负责:
      接收用户操作请求
      维护文件系统的目录结构
      管理文件与block之间关系,block与datanode之间关系
    datanode负责:
      存储文件
      文件被分成block存储在磁盘上
      为保证数据安全,文件会有多个副本

    总结:

      我们启动hdfs的时候只需要知道hadoop的etc目录下core-site.xml的hadoop的存储目录,

            <!-- 指定hadoop运行时产生文件的存储目录 -->
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/hadoop/hadoop-2.4.1/data/</value>
           </property>

      当我们存储文件的时候会hadoop会在这个目录下建好多目录存储我们的文件,我们只需要指定相对于hdfs开始的根目录,hdfs相当于给我们提供了好多虚拟目录。hadoop会自动实现分布式存储,分别存在多个datanode节点,并通过namnode建立文件存储位置的表识。

    第二种理解:

    hdfs写流程:

    通过客户端Client写入数据Data的流程:

    (1)Client向NameNode发起写入请求;

    (2)NameNode查找自身存储的关于三个DataNode的信息,并反馈给Client;

    (3)Client根据反馈信息,将Data分为两个数据块1和2;

    (4)Client根据反馈信息将数据块1传给DataNode1,进行保存(datanode自动完成副本备份);

    (5)DataNode向NameNode汇报存储完成,NameNode通知客户端。

    hdfs读流程:

    通过客户端Client读取数据Data的流程,DataNode3存放数据块1与2的备份:

    (1)Client向NameNode发起读取请求;

    (2)NameNode查找自身存储的关于Data的存储信息,并反馈给Client存储Data各个节点的位置;

    (3)Client根据反馈信息,从DataNode1读取数据块1,从DataNode2读取数据块2;

    思考:

      基于hdfs我们可以实现类似于百度网盘的功能,将数据分布式存储,当用户申请账号的时候我们可以在hdfs的根目录给该用户创建一个目录。对于限制文件上传大小,我们可以在数据库记录该用户上传的文件大小并进行限制。

  • 相关阅读:
    怎么样把网站logo(小图标)在地址栏里显示
    PHP 做群发短信(短信接口连接问题)
    网页JS弹出广告代码,头部,右下角,网页中漂浮,对联广告代码等大全
    PHP 时间戳与系统时间保持一致
    PHP 把数据表列出来的东西导出成execle格式
    数据库连接类 DB.class.php
    session判断页面是否已经登录的问题
    结合Smarty,生成HTML静态页
    PHP做文件下载功能
    滚动字幕,鼠标经过停留
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/8798377.html
Copyright © 2011-2022 走看看