pipeline是什么意思啊「Hadoop架构流水线「PipeLine」」

pipeline什么意思

流水线(PipeLine),简单地理解就是客户端向DataNode传输数据(Packet)和接收DataNode回复(ACK)[Acknowledge]的数据通路。

整条流水线由若干个DataNode串联而成,数据由客户端流向PipeLine,在流水线上,假如DataNode A 比 DataNode B 更接近流水线

那么称A在B的上游(Upstream),称B在A的下游(Downstream)。

pipeline是什么意思啊【Hadoop架构流水线(PipeLine)】

流水线上传输数据步骤

1. 客户端向整条流水线的第一个DataNode发送Packet,第一个DataNode收到Packet就向下个DataNode转发,下游DataNode照做。

2. 接收到Packet的DataNode将Packet数据写入磁盘

3. 流水线上最后一个DataNode接收到Packet后向前一个DataNode发送ACK响应,表示自己已经收到Packet,上游DataNode照做

4. 当客户端收到第一个DataNode的ACK,表明此次Packet的传输成功

流水线基础概念

流水线就像一条水管,数据(Packets)从一端流进去,依次经过流水线上的各个DataNode。

回复(ACK)则是相反,ACK从最后一个节点依次向前传递,流回客户端

多么艺术的设计!

pipeline是什么意思啊【Hadoop架构流水线(PipeLine)】

但是,有一个问题,要知道,若干个Packet才能传输完一个Block,并且多个Block组成一个文件

所以从文件或者Block的角度来看,即使每台机器的效率接近,也可能出现流水线不均匀的情况(接收文件数据量不均匀)

pipeline是什么意思啊【Hadoop架构流水线(PipeLine)】

出现的情况往往是第一个节点接收的数据量最多,其后的节点递减,所以我们可以考虑把第一个DataNode选为性能较好的节点,或者是离客户端尽可能近的节点。但实际上,节点的选择是由NameNode根据机架感知等技术实现的。并且客户端的流水线节点选取是由NameNode决定的。

还有一个问题。HDFS是支持一写多读机制的,意味着在流水线上的DataNode(正在被写)允许被其他客户端读取(Reader 以下均称此类读客户端为Reader)。这样就会产生读的不一致性,比如说我在流水线上游的某个DataNode中读到“武汉加油!”这条数据,但是去下游的DataNode读,却读不到。这是因为下游的DataNode可能还没收到数据。

pipeline是什么意思啊【Hadoop架构流水线(PipeLine)】

虽然说一般客户端只会读取一个DataNode的信息,但如果被读取的DataNode宕机,那么客户端就要另选DataNode,可能造成前后数据不一致。

或者有多个客户端需要根据对方的数据协调工作,每个客户端读的不是一个DataNode,那么对同一读取目标,读出来的数据不一致。这种水平上的不一致可能也会导致业务出错。

文章标题:pipeline是什么意思啊「Hadoop架构流水线「PipeLine」」

文章链接:https://www.linkedcc.com/rjbk/31863

版权声明(详见页尾):本文内容及图片由互联网用户自发投稿贡献,该文观点仅代表作者本人。

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

000-000-000

在线咨询: QQ交谈

邮件:admin@linkedcc.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
【特牛号】企业管理软件资讯平台