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

  • 相关阅读:
    GCD实现多个定时器,完美避过NSTimer的三大缺陷(RunLoop、Thread、Leaks)
    iOS适配UIViewView/WKWebView,H5生成长图,仿微信进度条
    翻译jquery官方的插件制作方法
    javascript引用和赋值
    薯片公司真实JS面试题(乐视TV)
    caller、call、apply、callee的用法和意思
    常用javascript类型判断
    Git 常用命令笔记(不定期持续记录)
    sublime text2 emmet 安装
    hash"#"
  • 原文地址:https://www.cnblogs.com/huzicourenao/p/11006045.html
Copyright © 2011-2022 走看看