gpt4 book ai didi

hadoop - 什么是数据序列化系统?

转载 作者:可可西里 更新时间:2023-11-01 14:09:07 25 4
gpt4 key购买 nike

根据 Apache AVRO 项目,“Avro 是一个序列化系统”。说数据序列化系统,是说avro是产品还是api?

另外,我不太清楚什么是数据序列化系统?目前,我的理解是它是一种协议(protocol),它定义了数据对象如何通过网络传递。谁能帮忙解释一下,让分布式计算背景有限的人更容易理解?

提前致谢!

最佳答案

所以当Doug Cutting在编写Hadoop时,他认为使用Java对象序列化(Java Serialization)来序列化Java对象的标准Java方法不符合他对Hadoop的要求。即,这些要求是:

  1. 将数据序列化为紧凑二进制格式。
  2. 快速,无论是性能还是数据传输速度。
  3. 可互操作,以便其他语言更容易插入 Hadoop。

正如他描述的 Java 序列化:

It looked big and hairy and I though we needed something lean and mean

他们没有使用 Java 序列化,而是编写了自己的序列化框架。 Java 序列化的主要感知问题是它将每个被序列化的对象的类名写入流,该类的每个后续实例都包含对第一个实例的 5 字节引用,而不是类名。

除了减少流的有效带宽外,这还会导致随机访问以及序列化流中记录排序的问题。因此 Hadoop 序列化不写入类名或所需的引用,并假设客户端知道预期的类型。

Java 序列化还为每个反序列化的对象创建一个新对象。实现 Hadoop Serialization 的 Hadoop Writables 可以被重用。因此,有助于提高 MapReduce 的性能,它重点序列化和反序列化数十亿条记录。

Avro 适合 Hadoop,因为它以不同的方式处理序列化。客户端和服务器交换描述数据流的方案。这有助于使其快速、紧凑,重要的是,它更容易将语言混合在一起。

因此,Avro 定义了一种序列化格式,一种供客户端和服务器通信这些串行流的协议(protocol),以及一种将数据紧凑地保存在文件中的方法。

希望对您有所帮助。我认为稍微了解一下 Hadoop 的历史有助于理解为什么 Avro 是 Hadoop 的一个子项目,以及它有什么帮助。

关于hadoop - 什么是数据序列化系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2486721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com