Общий размер файла: 1 GB
Размер блока: 128 MB
Количество разделений: 8
Создание раскола для каждого блока не будет работать так как невозможно начать чтение в произвольной точке потока gzip и, следовательно, невозможно, чтобы задача карты считывала ее раскол независимо от других. Формат gzip использует DEFLATE для хранения сжатых данных, а DEFLATE хранит данные в виде серии сжатых блоков. Проблема в том, что начало каждого блока ничем не отличается. По этой причине gzip не поддерживает разделение.
MapReduce будет не разделять gzip-файл, так как он знает, что вход gzip-сжат (если посмотреть на расширение имени файла) и что gzip не поддерживает разделение. Это будет работать, но за счет локальности: одна карта обработает 8 блоков HDFS, большинство из которых не будут локальными для карты.
Посмотрите: this article и название раздела: Вопросы о сжатии и ввода расколоть
EDIT: (для щепляемой распаковки)
BZip2 является алгоритм сжатия/De-сжатия, который делает сжатие на блоках данных, а затем эти сжатые блоки могут быть распакованы независимо друг от друга. Это действительно возможность того, что вместо одного сжатого файла BZip2, идущего на один картограф, мы можем параллельно обрабатывать фрагменты файла. Критерии правильности такой обработки - это то, что для сжатого файла bzip2 каждый сжатый блок должен обрабатываться только одним преобразователем, и в конечном итоге все блоки файла должны обрабатываться. (Под обработкой понимается фактическое использование того, что несжатые данные (выходит из кодеков) в картографе)
Источник: https://issues.apache.org/jira/browse/HADOOP-4012
Вы потеряете местоположение данных, поскольку данные не могут быть прочитаны на том же узле карты. Данные также будут расширены и для других узлов. Физическое разделение охватывает несколько узлов данных. –
Входные расщепления решаются до того, как данные несжаты. Поэтому в соответствии с моим предыдущим вопросом изначально у меня будет 8 разделенных входных данных для сжатого 1GB-файла размером 128 МБ. Но когда это несжатый блок размером 128 МБ, он станет 200 МБ. Но мой входной бит может обрабатывать только 128 МБ, поэтому после того, как данные блока будут несжаты, они будут увеличивать входной сигнал с 1 на 2. Первый будет обрабатывать 128 МБ, а второй будет обрабатывать остальные 82 МБ. –