Hadoop中的超大键值对
我是Hadoop的新手,目前程序的复杂性仅限于字数的复杂性。我试图理解Hadoop的基本架构,以便更好地构建我的解决方案Hadoop中的超大键值对,hadoop,key,Hadoop,Key,我是Hadoop的新手,目前程序的复杂性仅限于字数的复杂性。我试图理解Hadoop的基本架构,以便更好地构建我的解决方案 我的一个大问题是Hadoop如何处理块边界上的大键值对?假设我有一个大小为10MB的键值对(例如,如果该值是一个完整的10MB文件),并假设我使用一个序列文件。Hadoop如何在其块边界处处理这个问题?它是否将拆分为两部分并将其保存在两个不同的块中,或者它是否意识到键值对非常大,因此,它不是拆分,而是为整个键值对创建一个新块 HDFS中的默认块大小为64 MB。如果一个键/值
我的一个大问题是Hadoop如何处理块边界上的大键值对?假设我有一个大小为10MB的键值对(例如,如果该值是一个完整的10MB文件),并假设我使用一个序列文件。Hadoop如何在其块边界处处理这个问题?它是否将拆分为两部分并将其保存在两个不同的块中,或者它是否意识到键值对非常大,因此,它不是拆分,而是为整个键值对创建一个新块 HDFS中的默认块大小为64 MB。如果一个键/值对是10 MB,那么它可能会/可能不会在块之间分割
- 如果第一对KV为60 MB,第二对为10 MB。然后,第二个KV对在第一个块中只剩下4 MB的空间(当块大小为64MB时)。因此,4MB的第二个KV存储在第一个块中,其余6MB存储在第二个块中
- 如果第一对KV为40 MB,第二对为10 MB。然后,第二个KV对在第一个块中剩余24 MB空间(当块大小为64MB时)。因此,第2千伏电压完全存储在第1块中,而不是分开
总而言之,Hadoop框架是记录感知的,即使记录是跨块分割的。好问题!我认为它在值的中间拆分,然后在运行时重构它(也就是说,它忽略了键/值边界)…但我不太确定能否提供一个正式的答案。谢谢你提供的信息。这回答了我的问题,但我想这也意味着当大的键值对被拆分时,在节点之间传输大量数据会有相当大的开销。(在您的示例中,需要6MB或4MB的传输)。因此,拥有大的键值对可能没有意义。我说的对吗?如果有一个较大的kv对,那么HDFS块大小可以从默认值64 MB增加。