Когда маппер сохраняет свои выходные данные на локальном жестком диске?
Я знаю это
Выходные данные Mapper (промежуточные данные) хранятся в локальной файловой системе (не HDFS) каждого отдельного узла данных Mapper. Обычно это временный каталог, который может быть установлен в конфигурации администратором Hadoop. После выполнения задания Mapper или передачи данных в Reducer эти промежуточные данные очищаются и становятся недоступными.
Но я хотел знать, когда маппер хранит свои выходные данные на локальном жестком диске? Это потому, что данные слишком велики для того, чтобы они были в памяти? И только данные, которые обрабатываются, остаются в памяти? Если данные невелики и все данные могут поместиться в памяти, тогда нет никакого дискового участия?
Можем ли мы напрямую не перемещать данные, как только они обрабатываются в преобразователе, из преобразователя в преобразователь без участия жесткого диска преобразователя т / с. Я имею в виду, что когда данные обрабатываются в преобразователе, и они находятся в памяти, после вычисления они напрямую передаются в преобразователь, и преобразователь может передавать следующий фрагмент данных аналогично, без участия диска.
Говорят, что в искре есть вычисления в памяти. Насколько это отличается от приведенного выше? Что делает вычисления в памяти лучше, чем уменьшение карт? Кроме того, в искре должно быть участие диска, если данные слишком велики?
Пожалуйста, объясни
2 ответа
Здесь много вопросов. Я постараюсь объяснить каждый.
когда маппер хранит данные на локальном жестком диске?
Картограф хранит данные в настроенной памяти. Когда память заполнена на 80% (снова настраивается), он запускает объединитель данных, которые присутствуют в памяти, чтобы уменьшить объем данных. Но когда объединенные данные также превышают этот предел памяти, они распределяются на диск. Файлы известны как файлы разлива. В течение всей операции записывается несколько разлитых файлов. При записи разлитых файлов картограф сортирует и разбивает данные в соответствии с редуктором. В конце операций с картой эти файлы разлива должны быть объединены.
Можем ли мы напрямую не перемещать данные, как только они обрабатываются в преобразователе, из преобразователя в преобразователь без участия жесткого диска преобразователя т / с.
Самая дорогая операция в любой обработке - это "передача данных" между машинами. Вся парадигма сокращения карт - это обработка данных, а не перемещение данных. Так что, если все сделано так, как вы предлагаете, будет много движения данных. Запись на локальный диск быстрее, чем в сети. Эти данные могут быть уменьшены путем объединения файлов разливов. Сортировка выполняется при разливе файлов, поскольку проще (быстрее) объединять отсортированные данные. Разделение сделано, потому что вам нужно только объединить одни и те же разделы (данные собираются в один и тот же редуктор). В процессе слияния объединители снова запускаются для уменьшения объема данных. Эти сокращенные данные затем отправляются редукторам.
Говорят, что в искре есть вычисления в памяти. Насколько это отличается от приведенного выше?
Нет никакой разницы в программе сокращения искры и карты, где вы просто читаете из некоторого набора данных, выполняете одну функцию карты и одну функцию уменьшения. Он будет выполнять те же операции чтения и записи на диск, что и код mapreduce. Разница возникает, когда вам нужно выполнить несколько операций с одним и тем же набором данных. При уменьшении карты он будет считывать данные с диска для каждой операции, но в режиме Spark у вас есть возможность использовать память для ее хранения, и в этом случае он будет считывать данные с диска только один раз, и последующие операции будут выполняться с сохраненными данными в памяти, что, очевидно, намного быстрее. Или в случае, когда есть цепочки операций, где выход 1-й операции вводится во вторую. В Mapreduce выходные данные 1-й операции будут записаны на диск и будут считаны с диска во 2-й операции, тогда как в искре вы можете сохранить выходные данные 1-й операции в памяти, так что 2-я операция читает из памяти и будет быстрее.
Я новичок в аналитике больших данных. Но думаю, что смогу ответить на этот вопрос. Я постараюсь изо всех сил. большие данные - это большой объем данных, который невозможно обработать и сохранить с помощью обычных баз данных, чтобы решить проблему больших данных, используется hadoop. в основном hadoop - это тип инфраструктуры, которая управляет хранилищем больших данных распределенным образом.
выходные данные преобразователя (промежуточные данные) хранятся в локальной файловой системе (не в hdfs) каждого отдельного узла преобразователя. Обычно это временное расположение каталога, которое может быть настроено в конфигурации с помощью администратора hadoop. промежуточные данные очищаются после завершения задания hadoop.