04

一、hadoop起源发展与概述
Hadoop是一个对海量数据存储和海量数据分析计算的分布式系统。

从hadoop最初的原型来看,hadoop已经远远超过了本身的批处理。从广义上来说,hadoop现在可以是指更广泛的一个hadoop生态了,而不仅仅是HDFS,MapReduce和Yarn。例如Hive,Hbase,Flume,Sqoop等等项目都属于这个生态。

Hadoop是道格·卡丁(Doug Cutting)创建的,Hadoop起源于开源网络搜索引擎Apache Nutch,后者本身也是Lucene项目的一部分。Nutch项目面世后,面对数据量巨大的网页显示出了架构的灵活性不够。当时正好借鉴了谷歌分布式文件系统,做出了自己的开源系统NDFS分布式文件系统。第二年谷歌又发表了论文介绍了MapReduce系统,Nutch开发人员也开发出了MapReduce系统。随后NDFS和MapReduce命名为Hadoop,成为了Apache顶级项目。

从Hadoop的发展历程来看,它的思想来自于google的三篇论文。

因为hadoop假设计算元素和存储会出现故障,因为它维护多个数据结构和副本(默认3副本),在出现故障时可以对失败的节点重新分布处理

高扩展性
在集群间分配任务数据,可方便的扩展数以千计的节点

思考:动态扩容如何实现?
对于添加少量的机器,可以通过手动配置或通过CDH添加
如果需要动态扩容上百台呢,而且可以根据数据量增长和减少的趋势,可以auto scaling。

高效性
在MapReduce的思想下,Hadoop时并行工作的,以加快任务处理速度

高容错性
自动保存多副本数据,并且能够自动将失败的任务重新分配

 二、名称节点、数据节点的主要功能及相互关系、名称节点的工作机制

 

   在HDFS中,名称节点(NameNode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog

 

   第二名称节点(SecondaryNameNode)

:是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。
SecondaryNameNode一般是单独运行在一台机器上

SecondaryNameNode让EditLog变小的工作流程:
(1)SecondaryNameNode会定期和NameNode通信,请求其停止使用EditLog文件,暂时将新的写操作写到一个新的文件edit.new上来,这个操作是瞬间完成,上层写日志的函数完全感觉不到差别;
(2)SecondaryNameNode通过HTTP GET方式从NameNode上获取到FsImage和EditLog文件,并下载到本地的相应目录下;
(3)SecondaryNameNode将下载下来的FsImage载入到内存,然后一条一条地执行EditLog文件中的各项更新操作,使得内存中的FsImage保持最新;这个过程就是EditLog和FsImage文件合并;
(4)SecondaryNameNode执行完(3)操作之后,会通过post方式将新的FsImage文件发送到NameNode节点上

 

   数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表

 

3.分别从以下这些方面,梳理清楚HDFS的 结构与运行流程,以图的形式描述。

    • 客户端与HDFS
    • 客户端读
    • 客户端写
    • 数据结点与集群
    • 数据结点与名称结点
    • 名称结点与第二名称结点
    • 数据结点与数据结点
    • 数据冗余
    • 数据存取策略
    • 数据错误与恢复

 

posted @ 2021-10-26 16:00  hyzzzzz  阅读(201)  评论(0编辑  收藏  举报