hadoop合并日志_Hadoop学习(一)

本文详细介绍了Hadoop的组成部分,包括HDFS的分布式存储系统特性、MapReduce的分布式计算框架和YARN的资源管理框架。重点讨论了HDFS的架构,如NameNode、DataNode和SecondaryNameNode的角色,以及Block的副本策略和读写流程。此外,还涵盖了HDFS的文件权限、安全模式以及优缺点。
摘要由CSDN通过智能技术生成

Hadoop组成:

Hadoop = hdfs(存储) + mapreduce(计算) + yarn(资源管理) + common(工具包)

HDFS——分布式存储系统

—分布式存储系统

—提供了高可靠性、高扩展性和高吞吐率的数据存储服务

MapReduce分布式计算框架

—分布式计算框架(计算向数据移动)

—具有 易于编程、高容错性和高扩展性等优点。

YARN分布式资源管理框架

—负责集群资源的管理和调度

HDFS架构图:

e2565542b284f8d715fbbaf1e56e514a.png

如图所示:HDFS整体架构可分为:客户端(Client)、NameNode(简称NN)、Secondary NameNode、DateNode四部分!

HDFS的功能模块及原理详解

HDFS 数据存储单元(block)

65917f3d2b3a84253413eefcd910a5cc.png

hdfs存储模型:字节

①文件线性切割成块(Block):偏移量 offset (byte)(b1:0~1000;b2:1001~2000;……);

②block分散存储在集群节点中;

③单一文件Block大小一致,文件与文件可以不一致;

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

⑤文件上传可以设置Block大小和副本数;

⑥已上传的文件block副本数可以调整,大小不变;

⑦只支持一次写入多次读取,同一时刻只有一个写入者;

⑧已经写入的数据不能修改,可以append追加数据;

NameNode(简称NN)

主要功能:

①接受客户端的读/写服务

②收集DataNode汇报的block列表信息

基于内存存储 :不会和磁盘发生交换

只存在内存中

需要持久化

NameNode保存metadata信息

①文件owership(归属)和permissions(权限)

②文件大小,时间

③(block列表:block偏移量)

位置信息:block保存在哪个DataNode信息

注意:以上信息除了“位置信息”由DataNode启动时上报,不保存在磁盘,其他内容都要持久化到磁盘

NameNode持久化

①NameNode的metadate信息在启动后会加载到内存

②metadata存储到磁盘文件名为”fsimage”

③block的位置信息不会保存到fsimage

④edits记录对metadata的操作日志

—fsimage保存了最新的元数据检查点,类似快照。

editslog 保存自最新检查点后的元信息变化,从最新检查点后,hadoop将对每个文件的操作都保存在edits中。客户端修改文件时候,先写到editlog,成功后才更新内存中的metadata信息。

Metadata = fsimage + editslog

DataNode(DN)

①本地磁盘目录存储数据(block),文件形式

②同时存储block的元数据(md5值)信息文件

③启动DN进程的时候会向NameNode汇报block信息

④通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN

SecondaryNameNode(SNN)

主要工作帮助NN合并edits.log文件,减少NN启动时间,它不是NN的备份(但可以做备份)。

SNN执行合并时间和机制:

A、根据配置文件设置的时间间隔fs.checkpoint.period 默认3600秒。

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

SecondaryNameNode SNN合并流程

c89e75a6ff29c990ea91c4ba0a23e4f0.png

首先,NN中的fsimage和edits文件通过网络拷贝,到达ssn服务器中,拷贝的同时,用户操作数据,那么NN中就会生成一个新的edits来记录用户的操作,而另一边的SNN将拷贝过来的edits和fsimage进行合并,合并之后就替换NN中的fsimage。之后NN根据fsimage进行操作(当然没隔一段时间就进行替换合并,循环)。当然新的edits与合并之后传输过来的fsimage会在下一次时间内又进行合并。

Block的副本放置策略

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

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

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

④更多副本:随机节点

集群内提交:

d6ccf45cea2d1b10120274cf85d20708.png

HDFS读写流程

写文件流程

120d30bdd8973a9502206ffe4f432771.png

HDFS写流程:

①HDFS客户端根据block的尺寸将文件切分成一个个block,并创建DFS对象;

②DFS对象联系NN,告诉它要开始存储文件,NN返回一批第一个block的存储节点DN;

③Client得到地址选出最优的DN节点开始write;

④数据写入DN是以pecket(小包)的形式,第一个DN节点与其他备份节点串联保持通信,第一pecket写入后,开始备份到其他节点,后续写入与备份同时进行,整个过程就像一个管道一样持续写入;

⑤当第一个block全部写入成功后,DN会想NN和Client汇报写入成功,NN将第二个block的地址给Client,开始写入第二个block,继续以管道形式写入,直到所有的block写入成功,client向NN汇报全部写入成功。

⑥NN更新fsimage内容。

读文件过程

13b367989af59d1f55a35f3026d8dd0d.png

HDFS读流程

​ Client:

​ ①和NN获取一部分block副本位置列表;

​ ②线性和DN获取block,最终合并为一个完整文件

​ ③在block副本列表中按距离择优选取

HDFS文件权限

①果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan。

②HDFS的权限目的:阻止好人错错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁。

安全模式

①NN启动的时候,首先将映像文件(fsimage)载人内存,并执行编辑日志(edits)中的各项操作。

②一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志。

③此刻NN运行安全在安全模式。即NN的文件系统对于客服端来说是只读的。

④在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的,在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束。

⑤当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由Namenode维护的,而是以块列表形式存储在datanode中。

HDFS的优缺点

优点:

高容错性:

①数据自动保存多个副本

②副本丢失后,自动恢复

适合批处理:

①移动计算而非数据

②数据位置暴露给计算框架(block便宜量)

适合大数据处理:

①GB 、TB 、甚至PB 级数据

②百万规模以上的文件数量

③10K+ 节点

可构建在廉价机器上:

①通过多副本提高可靠性

②提供了容错和恢复机制

缺点:

低延迟高数据吞吐访问问题

​ 比如支持秒级别反应,不支持毫秒级

​ 延迟与高吞吐率问题(吞吐量大但有限制于其延迟)

小文件存取

​ 占用NameNode 大量内存

​ 寻道时间超过读取时间

并发写入、文件随机修改

​ 一个文件只能有一个写者

​ 仅支持append

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值