hadoop之Hdfs笔记大全

1: hadoop 1.x

  • 由 hdfs 和 MapReduce 组成。

2: hadoop 2.x

  • 由 hdfs 和 MapReduce 和 YARN三个分支组成。
  • hdfs:NN Federation (联邦) 和 HA。
  • hadoop 2.x 只支持2个节点HA。

3:hadoop 3.x

  • 实现了一主多备。

4: hadoop的发展史

  • Hadoop的思想之源:Google
  • Openstack : NASA
  • 面对的数据计算难题
  • 大量网页怎么存储
  • 搜索算法
  • 带给我们关键技术和思想
  • – GFS
  • – Map-Reduce
  • – Bigtable

5: hadoop的组成(重点)

  • .HDFS:分布式文件系统,提供高吞吐量的应用程序数据访问。
    ------优点: 高可靠性、高扩展性和高吞吐率的数据存储服务

  • MapReduce:一个分布式海量数据处理的软件框架集计算集群。
    -----优点: 具有 易于编程、高容错性和高扩展性等优点。

  • Avro :doug cutting主持的RPC项目,主要负责数据的序列化。有点类似Google的protobuf和Facebook的thrift。avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑*

  • HIve : 重点(给过去的数据 进行历史分析用的;底层存储用的是 hdfs 计算用的mapreduce 。
    是一个数据仓库 历史数据仓库 分析数据)类似CloudBase,也是基于hadoop分布式计算平台上的提供data warehouse的sql功能的一套软件。使得存储在hadoop里面的海量数据的汇总,即席查询简单化。hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。
    -----优点简单容易上手:提供了类SQL查询语言HQL (2)可扩展:为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统) 一般情况下不需要重启服务Hive可以自由的扩展集群的…

  • HBase : 基于HadoopDistributed File System,是一个开源的,基于列存储模型的可扩展的分布式数据库,支持大型表的存储结构化数据。

  • ZooKeeper:Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
    -----优点

  • Chukwa:一个管理大型分布式系统的数据采集系统 由yahoo贡献。

  • Cassandra:无单点故障的可扩展的多主数据库

  • Mahout :一个可扩展的机器学习和数据挖掘库.

  • Pig :是一个并行计算的高级的数据流语言和执行框架 ,SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。

6: hadoop的三种运行模式

  • 伪分布式
    1: 本地运行模式不需要额外的设置. 只需要执行响应的jar包就可以了.不需要任何的集群配置, 本地运行模式其实也是一种单节点模式.
  • 全分布式
    1: Hadoop也可以以伪分布模式的方式运行在单节点上, 这个时候每一个Hadoop守护进程都是一个单独的Java进程.
    这种模式需要进行相应的分布式设置, 但是又由于只有一个节点, 所以我们称之为伪分布模式.
    由于Hadoop2.x增加了Yarn, 所以有两个选择: 可以把MapReduce程序直接运行在HDFS上, 也可以选择运行在Yarn上。
  • 完全分布式
    1:在集群中, 一般情况下每个节点的配置都是一样的, 所以一般会在一个节点配置完成后, 然后再分发到其他节点上.
    所以, 我们可以自己写一个这样的集群分发脚本来完成这个工作.
    2:假设我们的配置是先在hadoop101上配置完成, 然后再分发到其他节点上: hadoop102, hadoop103

7:HDFS的组成架构

  • HDFS优点:分布式存储系统
    1: 提供了 高可靠性、高扩展性和高吞吐率的数据存储服务
    2:高容错性,数据自动保存多个副本
    3“ 副本丢失后,自动恢复
    4:适合批处理
    5:移动计算而非数据
    6:数据位置暴露给计算框架(Block偏移量)
    7:适合大数据处理 GB 、TB 、甚至PB 级数据 百万规模以上的文件数量
    10K+ 节点
    8:可构建在廉价机器上 通过多副本提高可靠性 提供了容错和恢复 机制。

    扫描二维码关注公众号,回复: 9423101 查看本文章
  • HDFS缺点:
    1:低延迟数据访问,比如毫秒级,低延迟与高吞吐率。

    2:小文件存取,占用NameNode 大量内存,寻道时间超过读取时间,并发写入、文件随机修改,一个文件只能有一个写者 仅支持append。

  • HDFS的块大小
    1:文件线性切割成块(Block) :偏移量offset (byte)
    一Block分散存储在集群节点中

    2:单一文件Block大小-致,文件与文件可以不一致

    3:Block可以设置副本数,副本分散在不同节点中
    副本数不要超过节点数量

    4:文件上传可以设置Block大小和副本数

    5:已上传的文件Block副本数可以调整,大小不变
    只支持一次写入多次读取,同一时刻只有一个写入者
    可以append追加数据

8: HDFS数据的 (读,写) 和下载流程

  • 写流程
    1:首先一个 a.txt文件

    2:a.txt 文件的拆分是在HDFS client(客户端)中完成的,拆分成了3个
    Block(A,B,C)。

    3:HDFS client(客户端)会去询问NameNoed,哪些DataNode可以存储Block A
    因为NameNode存储着整个文件系统的元数据,它知道哪个DataNode上有空间可以存储这个Block A

    4: NameNode通过查看它的元数据信息,发现DataNode1、2、7上有空间可以存储Block A,预示将此信息高速传达给 HDFS Client(客户端).

    5:HDFS Client(客户端)接到NameNode返回的DataNode列表信息后,它会直接联系第一个DataNode 1

    6:让它准备接收Block A–实际上就是建立彼此之间的TCP连接。然后将Block A和NameNode返回的所有关于DataNode的元数据一并传给DataNode1。

    7:在DataNode1与HDFS Client (客户端) 建立好TCP连接后,

    8:它会把HDFS Client (客户端) 要写Block A 的请求顺序传给DataNode2 要求DataNode2也准备好接收Block A,
    建立DataNode2到DataNode1的TCP连接。

    9:HDFS Client (客户端) 要写Block A 的请求顺序在传给DataNode3
    建立 DataNode2与DataNode3的TCP连接。

    10:当HDFS Client(客户端)接收到 DataNode1 的成功反馈信息后,说明这3个DataNode都已经准备好了,
    HDFS Client就会开始往这三个DataNode写入Block A

    11:在DataNode1 2 7都准备好接收数据后,HDFS Client(客户端)开始往DataNode1写入Block A数据。
    当DataNode1 接收完A数据后,HDFS Client(客户端)会顺序将
    Block A数据传输给DataNode2,

    12:(注意这里是DataNode2) 然后 DataNode2 再传输给 DataNode7 每个 DataNode 在接受完Block A 数据后,
    会发消息给NameNode,告诉他Block数据已经接收完毕。

    13:当 Block A 成功写入3个 DataNode 之后, DataNode1 (这里是DataNode1)会发送一个成功消息给 HDFS Client,
    同时HDFS Client也会发一个Block A成功写入的信息给NameNode,之后
    HDFS Client(客户端) 才能开始继续处理下一个(Block B 和 Block C)

  • 下载流程

    1:HDFS Client(客户端) 会先去联系 NameNode,询问a.txt总共分为几个Block ,比如一个文件被拆分为(Block A,Block B,Block C)而且这些Block分别存放在哪些DataNode上。

    2:由于每个Block都会存在几个副本,所以NameNode会把a.txt文件组成的Block 对应的所有 DataNode 列表都返回给 HDFS Client(客户端).

    3: 然后HDFS Client(客户端)会选择 DataNode 列表里的第一个 DataNode去读取对应的 Block,(比如Block A存储在DataNode 1 2 7),

    4:那么HDFS Client(客户端)会到 DataNode1 去读取Block A,

    5:Block C存储在DataNode7 8 9那么 HDFS
    Client 就回到 DataNode7 去读取Block C.

    6:读取完毕后 会合并成一个大文件输出到本地;

9:HDFS副本策略

  • 第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。

  • 第二个副本:放置在于第一个副本不同的 机架的节点上。

  • 第三个副本:与第二个副本相同机架的节点。

  • 更多副本:随机节点

10:NN和2NN之间的工作机制

  • NameNode
    1:基于内存存储 :不会和磁盘发生交换,只存在内存中。持久化

    NameNode主要功能
    1:接受客户端的读写服务

    2:收集DataNode汇报的Block列表信息

    3: NameNode保存metadata信息包括
    文件owership和permissions 文件大小,时间
    (Block列表:Block偏移量),位置信息
    Block每副本位置(由DataNode上报)。

  • NameNode持久化

    1:NameNode的metadate信息在启动后会加载到内存
    2:metadata存储到磁盘文件名为”fsimage”
    3:Block的位置信息不会保存到fsimage
    4:edits记录对metadata的操作日志。。。redis

  • SecondaryNameNode主要功能:

    1:(其主要作用就是:合并edit和fsimage)
    可自定以时间(默认一个小时)
    操作日志中的数据满了(100w次操作)

    2:根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默认是64MB

    3: 请求NameNode是否需要CheckPoint,直接带回 NameNode是否检查结果

    4:在SecondaryNameNode内存中合并日志文件和fsimage文件
    生成新的fsimage.chkpoint

    5:.将fsimage.chkpoint拷贝到NameNode中

    6:重命名fsimage.chkpoint为fsimage

  • NameNode 和 SecondaryNameNode的工作机制

  • 1:secondary namenode会定期将fsimage和edits从namenode上拉取进行合并,

  • 2:且在在secondary nemenode上有副本,当namenode节点损坏后,我们可以通过这些副本来还原一定程度上的namenode。
    恢复方法 (有两种)

  • 1:将secondary namenode上的数据复制到namenode上

  • 2
    Kill namenode 00000 进程

    1、清空namenode下name中的fsimage和edtis文件

    2、将secondary namenode下的name中的fsimage和edits复制到namenode对应文件夹中

    rsync -av hadoop101:/home/enche/software/hadoop- 2.7.7/data/hadoop/dfs/secondaryname/
    jinghang@hadoop102 /home/enche/software/hadoop-2.7.7/data/name

    3、启动namenode
    hadoop-daemon.sh start namenode

    5、访问namenode节点页面,成功

11:DataNode的工作机制

  • DataNode
    1:本地磁盘目录存储数据(Block),文件形式
    2:同时存储Block的元数据信息文件
    3:启动DN时会向NN汇报block信息
    4:通过向NN发送心跳保持与其联系(3秒一次),如果NameNode 10分钟没有收到DataNode的心跳,则认为其已经lost,并copy其上的block 到其它DataNode。
    完结撒花==
发布了19 篇原创文章 · 获赞 5 · 访问量 477

猜你喜欢

转载自blog.csdn.net/qq_42890382/article/details/103404349