zoukankan      html  css  js  c++  java
  • hadoop简单介绍及架构设计

    hadoop简单介绍及架构设计

    集群

    并行:提升速度的关键

    计算向数据移动

    分布式。分而治之。并行计算

    HDFS

    存储模型:字节

    文件线性切割成块(Block):偏移量 offset (面对原文件的索引)

    Block分散存储在集群节点中

    单一文件Block大小一致,最后一块可能分配不均

    副本:

    副本分散在不同节点中------副本数不要超过节点数量

    只支持一次写入多次读取,同一时刻只有一个写入者,Block的大小不会再次改变,可append追加数据,不能修改

    block数据块,最大存储大小为128M,一个数据块只属于一个文件,每个块默认有三个副本,且互为副本

    架构模型:主从

    元数据:除了文件内容之外的。包含文件的名字,时间,所属用户,权限,文件大小等......

    (主)NameNode节点保存文件元数据,接收客户端的读写请求:单节点 posix(虚拟文件系统,目录树,edits日志文件,Fsimage)基于内存存储:不会和磁盘发生交换,只存在内存中,但会使用磁盘做持久化,

    (从)DataNode节点保存文件Block数据:多节点(保存数据)

    DataNode保存的数据就是映射对应NameNode目录树上的数据,实时汇报block的信息(block列表:block偏移量),位置信息。

    DataNode与Node保存心跳,保存Block列表 (客户端)HdfsClient先与NameNode交互元数据,与DataNode交互文件Block数据,会存储block的元数据信息文件

    SNN(SecondaryNameNode)默认3600秒合并一次 :合并元数据文件(edtis和fsimage)她不是NN的备份,主要工作是帮助NN合并editslog,减少NN启动时间

    Hadoop优点:高容错性,数据自动保存多个副本,副本丢失后,自动恢复。

    适合批处理:移动计算而非数据,数据位置暴露给计算框架

    适合大数据处理:GB.TB.PB级数据,百万规模以上的文件数量,10K+节点

    可构建在廉价的机器上:通过多副本提高可靠性,提供容错和恢复机制。

    缺点:低延迟数据访问,小文件存取,并发写入,文件随机修改。

    1.客户端先向NN发送文件

    2.namenode判断是否有上传权限(没有权限返回给客户端)

    3.NN返回给客户端可以上传的datanode的列表

    4.在客户端把文件切成多个数据块,读入数据队列中。

    5.把数据队列中的packet写入第一个DN

    一个block由多个packet(最大64K)组成

    6.通过管道同步写入第二个DN,第三个DN(以packet为单位写入),每写一个会有一个是否写入成功的报告返回ack,统计一个block返回的ack,统计超过半数ack成功,产生副本,不成功的ack会循环写入直到成功。

    7.block写完返回全部ack则结束。

    1.客户端调用open函数发送请求给NN。

    2.NN检查是否有读的权限

    3.就近原则返回给客户端每个数据库所在的DN列表

    4.就近原则选择第一个DN读取第一个block

    5.把读取的block数据存到数据队列中

    6.读取第二个block。。。。。。

    塔式服务器 机架服务器 刀片服务器

    HDFS文件权限POSIX

    r:read,w:write,x:execute

  • 相关阅读:
    最难的事
    性格决定命运,习惯决定未来
    系统构架师之路
    时间是经不起浪费的
    如何投资自己,增加自身价值!
    最好的程序员大多是自学成才的
    杂记
    Win7启动Oracle出错
    推荐代码生成器工具排行
    Hibernate 与 Oracle 11g 的问题
  • 原文地址:https://www.cnblogs.com/huzicourenao/p/11006045.html
Copyright © 2011-2022 走看看