HDFS - один большой файл или несколько файлов меньшего размера с размером блока - PullRequest
1 голос
/ 29 октября 2019

поэтому у меня возникли проблемы с пониманием того, каким образом мне следует хранить большие файлы. Например, размер блока в моей HDFS составляет 128 МБ, а у меня есть файл размером 1 ГБ.

Я знаю, что сохранение файлов, размер которых меньше размера блока, не является наилучшей практикой, и я понимаю, почему.

Но что мне делать с большими файлами, для моего файла объемом 1 ГБ, я должен сохранить 1 файл или 8 файлов по 128 МБ каждый и почему?

1 Ответ

1 голос
/ 29 октября 2019

Вы можете хранить 1 файл с 1 ГБ. Hadoop автоматически сохранит этот файл в 8 блоках. Hadoop предназначен для больших файлов, а не для маленьких файлов. Обратите внимание, что Block - это физическое хранилище в hadoop.

Поскольку вы не упомянули размер разбиения в кластере, поэтому я предполагаю, что он составляет 128 МБ. Сплит - это то, от чего зависит параллелизм. Таким образом, если вы обрабатываете файл размером 1 ГБ на 128 разделенных форматах, будет вызвано 8 сопоставителей (по 1 сопоставителю на каждое разбиение). Если вы храните 8 файлов по 128 Мб каждый. На вашем Namenode будет ненужная служебная информация для поддержки информации об этих 8 файлах. В случае 8 файлов производительность может быть более или менее похожей по сравнению с 1 ГБ файла, но это определенно будет лучше в случае 1 ГБ файла с 8 блоками.

Не путайте с блоками в hadoop, они просто хранилищеБлок, как и другая файловая система. Hadoop автоматически позаботится о хранении независимо от размера файла и разделит файлы на блоки. Хранение небольших файлов будет ненужным в операциях ввода / вывода.

...