【性能优化的秘密】Hadoop如何将TB级大文件的上传性能优化上百倍?

本文探讨Hadoop HDFS如何优化大文件上传性能。通过chunk缓冲、Packet数据包和内存队列异步发送机制,避免频繁网络传输,大幅提升TB级文件上传速度。

一、写在前面

上一篇文章,我们聊了一下Hadoop中的NameNode里的edits log写机制。

主要分析了edits log写入磁盘和网络的时候,是如何通过分段加锁以及双缓冲的机制,大幅度提升了多线程并发写edits log的吞吐量,从而支持高并发的访问。

如果没看那篇文章的朋友,可以回看一下:《大规模集群下Hadoop NameNode如何承载高并发访问》。

这篇文章,我们来看看,Hadoop的HDFS分布式文件系统的文件上传的性能优化。

首先,我们还是通过一张图来回顾一下文件上传的大概的原理。

由上图所示,文件上传的原理,其实说出来也简单。

比如有个TB级的大文件,太大了,HDFS客户端会给拆成很多block,一个block就是128MB。

这个HDFS客户端你可以理解为是云盘系统、日志采集系统之类的东西。

比如有人上传一个1TB的大文件到网盘,或者是上传个1TB的大日志文件。

然后,HDFS客户端把一个一个的block上传到第一个DataNode

第一个DataNode会把这个block复制一份,做一个副本发送给第二个DataNode。

第二个DataNode发送一个block副本到第三个DataNode。

所以你会发现,一个block有3个副本,分布在三台机器上。任何一台机器宕机,数据是不会丢失的。

最后,一个TB级大文件就被拆散成了N多个MB级的小文件存放在很多台机器上了,这不就是分布式存储么?

二、原始的文件上传方案

今天要讨论的问题,就是那个HDFS客户端上传TB级大文件的时候,到底是怎么上传呢?

我们先来考虑一下,如果用一个比较原

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值