大数据3 -Hadoop HDFS-分布式文件系统

目录

1.为什么需要分布式存储?

2. HDFS的基础架构

3. HDFS存储原理

4. NameNode是如何管理Block块的

5. HDFS数据的读写流程 



1.为什么需要分布式存储?

数据量太大,单机存储能力有上限,需要靠数量来解决问题
数量的提升带来的是网络传输、磁盘读写、 CPU 、内存等各方面的综合提升。 分布式组合在一起可以达到 1+1>2 的效果

大数据体系中,分布式的调度主要有2类架构模式:

去中心化模式

       中心化模式 

去中心化模式,没有明确的中心。

众多服务器之间基于特定规则进行同步协调。

大数据框架,大多数的基础架构上,都是符合:中心化模式的

即:有一个中心节点(服务器)来统筹其它服务器的工作,统一指挥,统一调派,避免混乱。

这种模式,也被称之为:一主多从模式,简称主从模式(Master And Slaves

主从模式(中心化模式)在现实生活中同样很常见:

公司企业管理
组织管理
行政管理
等等

Hadoop框架,就是一个典型的主从模式(中心化模式)架构的技术框架。

总结:

1. 分布式系统常见的组织形式?

去中心化模式:没有明确中心,大家协调工作
中心化模式:有明确的中心,基于中心节点分配工作

2. 什么是主从模式?

主从模式(Master-Slaves)就是中心化模式,表示有一个主节点来作为管理者,管理协调下属一批从节点工作。

3. Hadoop是哪种模式?

主从模式(中心化模式)的架构

2. HDFS的基础架构

HDFSHadoop三大组件(HDFSMapReduceYARN)之一

全称是: Hadoop Distributed File System Hadoop 分布式文件系统)
Hadoop 技术栈内提供的分布式数据存储解决方案
可以在多台服务器上构建存储集群,存储海量的数据

 HDFS的基础架构:

NameNode

HDFS 系统的主角色,是一个独立的进程
负责管理 HDFS 整个文件系统
负责管理 DataNode

SecondaryNameNode

NameNode 的辅助,是一个独立进程
主要帮助 NameNode 完成元数据整理工作(打杂)

DataNode

HDFS 系统的从角色,是一个独立进程
主要负责数据的存储,即存入数据和取出数据

3. HDFS存储原理

4. NameNode是如何管理Block块的

edits文件

hdfs中,文件是被划分了一堆堆的block块,那如果文件很大、以及文件很多,Hadoop是如何记录和整理文件和block块的关系呢?

答案就在于NameNode

NameNode基于一批edits和一个fsimage文件的配合

完成整个文件系统的管理和维护

edits记录每一次HDFS的操作

逐渐变得越来越大

 

问题在于,当用户想要查看某文件内容

如:/tmp/data/test.txt

就需要在全部的edits中搜索

(还需要按顺序从头到尾,避免后期改名或删除)

效率非常低

需要合并edits文件,得到最终的结果

fsimage文件

NameNode元数据管理维护

NameNode基于editsFSImage的配合,完成整个文件系统文件的管理。

1. 每次对HDFS的操作,均被edits文件记录

2. edits达到大小上线后,开启新的edits记录

3. 定期进行edits的合并操作

如当前没有 fsimage 文件,  将全部 edits 合并为第一个 fsimage
如当前已存在 fsimage 文件,将全部 edits 和已存在的 fsimage 进行合并,形成新的 fsimage

5. 重复123流程

 元数据合并控制参数

对于元数据的合并,是一个定时过程,基于:

dfs.namenode.checkpoint.period,默认 3600 (秒)即 1 小时
dfs.namenode.checkpoint.txns,默认 1000000 ,即 100W 次事务

只要有一个达到条件就执行。

检查是否达到条件,默认60秒检查一次,基于:

dfs.namenode.checkpoint.check.period,默认 60 (秒),来决定

SecondaryNameNode的作用

对于元数据的合并,还记得HDFS集群有一个辅助角色:SecondaryNameNode吗?

没错,合并元数据的事情就是它干的

SecondaryNameNode会通过httpNameNode拉取数据(editsfsimage

然后合并完成后提供给NameNode使用。

1. NameNode基于

edits 记录每次操作
fsimage ,记录某一个时间节点前的当前文件系统全部文件的状态和信息

维护整个文件系统元数据

2. edits文件会被合并到fsimage中,这个合并由:

SecondaryNameNode来操作

3. fsimage记录的内容是

5. HDFS数据的读写流程 

1. 客户端向NameNode发起请求

2. NameNode审核权限、剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址

3. 客户端向指定的DataNode发送数据包

4. 被写入数据的DataNode同时完成数据副本的复制工作,将其接收的数据分发给其它DataNode

5. 如上图,DataNode1复制给DataNode2,然后基于DataNode2复制给Datanode3DataNode4

6. 写入完成客户端通知NameNodeNameNode做元数据记录工作

 读:

关键信息点:

NameNode 不负责数据写入 ,只负责元数据记录和权限审批
客户端直接 1 DataNode 写数据, 这个DataNode一般是 离客户端最近 (网络距离) 的那一个
数据块副本的复制工作, DataNode 之间自行完成 (构建一个 PipLine ,按顺序复制分发,如图 1 2, 2 3 4

写:

关键点:

1、数据同样不通过NameNode提供

2NameNode提供的block列表,会基于网络距离计算尽量提供离客户端最近的

这是因为1block3份,会尽量找离客户端最近的那一份让其读取

1、客户端向NameNode申请读取某文件

2 NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表

3、客户端拿到block列表后自行寻找DataNode读取即可

1、对于客户端读取HDFS数据的流程中,一定要知道

不论读、还是写,NameNode都不经手数据,均是客户端和DataNode直接通讯

不然对NameNode压力太大

2、写入和读取的流程,简单来说就是:

NameNode 做授权判断(是否能写、是否能读)
客户端直连 DataNode 进行写入(由 DataNode 自己完成副本复制)、客户端直连 DataNode 进行 block 读取
写入,客户端会被分配找离自己最近的 DataNode 写数据
读取,客户端拿到的 block 列表,会是网络距离最近的一份

3、网络距离

最近的距离就是在同一台机器
其次就是同一个局域网(交换机)
再其次就是跨越交换机
再其次就是跨越数据中心

HDFS内置网络距离计算算法,可以通过IP地址、路由表来推断网络距离

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  本书从hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍hado叩这一高性能处理海量数据集的理想工具。全书共14章,3个附录,涉及的主题包括:haddoop简介:mapreduce简介:hadoop分布式文件系统hadoop的i/o、mapreduce应用程序开发;mapreduce的工作机制:mapreduce的类型和格式;mapreduce的特性:如何安装hadoop集群,如何管理hadoop;pig简介:hbase简介:zookeeper简介,最后还提供了丰富的案例分析。   本书是hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行hadoop集群。   什么是谷歌帝国的基石?mapreduce算法是也!apache hadoop架构作为mapreduce算法的一种开源应用,是应对海量数据的理想工具。项目负责人tomwhite透过本书详细阐述了如何使用hadoop构建可靠、可伸缩的分布式系统,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装和运行hadoop集群。   本书结合丰富的案例来展示如何用hadoop解决特殊问题,它将帮助您:    ·使用hadoop分布式文件系统(hdfs)来存储海量数据集,   通过mapreduce对这些数据集运行分布式计算    ·熟悉hadoop的数据和ilo构件,用于压缩、数据集成、序列化和持久处理    ·洞悉编~mapreduce实际应用时的常见陷阱和高级特性    ·设计、构建和管理一个专用的hadoop集群或在云上运行hadoop    ·使用高级查询语言pig来处理大规模数据    ·利用hadoop数据库hbase来保存和处理结构化/半结构化数据    ·学会使用zookeeper来构建分布式系统   如果您拥有海量数据,无论是gb级还是pb级,hadoop都将是您的完美解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值