Хорошие программисты разделить большую линию данных обучения всего процесса MapReduce аналитического

  Хорошие программисты Большие Данные изучения маршрутов Доля MapReduce весь процесс синтаксического анализа, мобильных данных и мобильных вычислений

  При изучении большого объема данных, подверженных мобильной передачу данных и мобильные компьютеры эти два тесно связаны между собой и имеет совершенно иную концепцию, которая также называется локальными мобильными вычислительными вычислениями.

  Мобильные данные , используемые при обработке предыдущих данных, передача данных на самом деле обрабатываются необходимо будет храниться на различных узлах соответствующего режима обработки данных логических. Это неэффективно, особенно большое количество данных в данных , является большим, по крайней мере , все ГБ или более, является ТБ , ПБ еще больше, и дискового ввода / вывода , сеть ввода / вывода эффективность очень низко, так что справиться с ними будет занимать много времени, мы не можем выполнить наши требования. Мобильные вычисления возникли.

  Мобильные компьютеры, также называется локальной вычислительной, данные хранятся больше не изменится на узле, но обработка логика программы с данными на каждом узле. Так как размер программы обработки, конечно, не особенно велики, это может быть достигнуто быстро передавать программу для хранения данных до каждого узла, а затем выполняет локальную обработку данных, высокая эффективность. Большие методы обработки данных работают таким образом.

 

Сжатый сказал:

Карта этапов:

. 1 , чтение : чтение источника данных, данные фильтра в один из K / V

2 , карта : карта функция, процесс разбора K / V , и новый К / В

. 3 , сборный : выход, сохраняется в кольцевом буфере

4 , Spill : область памяти заполнена, данные записываются на локальный диск и произвести временные файлы

5 , а зерноуборочный : объединить временный файл , чтобы гарантировать , что производство файла данных

 

Сокращение этапов:

1 , в случайном порядке : Копирование фазы, Уменьшить задачу к различной Карте Целевой удаленной репликации данных в минуте, за копию данных, 2 , если его размер превышает определенный порог, затем записать диск, в противном случае в память

3 , Объединение : объединять файлы на карте памяти и диска, чтобы предотвратить чрезмерную потребляющую слишком много памяти или файл на диске

4 , Роде : карта Задача стадии частичного упорядочения, Уменьшить Целевой этап для проведения сортировки слияния

. 5 , Уменьшить : данные , чтобы уменьшить функцию

. 6 , от записи : Уменьшить функции и результаты расчета написаны HDFS на

 

Глубина анализа, сказал:

MapTask этап

( Для чтения 1 -й этап) . : Пользователь MapTask путем записи на RecordReader , вход InputSplit анализируется в один ключ / значение. 

( 2) фазы на карте : Основной узел анализируется ключ / значение , записанное на пользователя функции карты () для обработки и новый набор ключ / значение.

( . 3) Сбор этап сбора : подготовка пользователя функции карты (), после того, как обработка данных завершена, обычно называют OutputCollector.collect () выход. Внутри функции, он будет генерировать раздел ключ / значение (вызов секционирования ), и записывает буфер памяти кольца в. 

( 4) этап Spill : «Переполнение писал,» когда кольцевой буфер заполнен, MapReduce будет записывать данные на локальный диск на, создать временный файл. Следует отметить, что перед записью данных на локальный диск, данные должны сначала провести локальную сортировку и данные , при необходимости консолидации, сжатие и другие операции.

 

Написать фазные детали переполнения:

Шаг 1: Используйте алгоритм быстрой сортировки для сортировки данных в области кэша, приказывая , что в соответствии с первым номером раздела раздела отсортированный, а затем следовать ключ сортировки. Таким образом, после сортировки, раздел данных сойтись как единое целое, и все данные , в соответствии с тем же ключом раздела и упорядоченно. 

Шаг 2: превратить данные в каждом разделе писать временные файлы вывод / spillN.out в соответствии с мандатом рабочего числа разделов каталога в порядке возрастания (N представляет число записи текущего переполнения) в. Если пользователь устанавливает сумматор , перед записью файла, данные в каждом разделе раз операции агрегации. 

Шаг 3: метаинформация данных , записанных в памяти раздела структуру данных индекса SpillRecord , в котором метаинформация каждого раздела , включающее смещение во временном файле, размер данных перед сжатием и размер данных после сжатия. Если текущий размер индекса памяти превышает 1 МБ, то память записываются в индексе файл части продукции / spillN.out.index в. 

(. 5) . Совмещенный E этап : когда вся обработка данных завершена, MapTask все временные файлы , когда объединяются , чтобы гарантировать , что конец приведет в один файл данных . Когда все данные после обработки, MapTask будет все временные файлы в один большой файл и сохранить файл вывод / file.out , генерируя соответствующий индексный файл Output / file.out.index . Файл в процессе слияния, MapTask слить разделы как единое целое. Для раздела, он будет использовать несколько раундов рекурсивного слияния пути. Объединенные круглым в io.sort.factor ( по умолчанию 100) файлы, и файл , который будут добавлены к сгенерированному списку повторного слияния, файлам сортировка, вышеописанный процесс повторяется, пока в конце концов не получить большой файл. Пусть каждый MapTask в конечном итоге создать только файл данных, вы можете избежать много файлов в то же самое время , чтобы открыть и читать одновременно проводить большое количество мелких случайных чтения файлов генерируются приносит. Офсетная информацию , включая временный файл, размер данных перед сжатием и размером данных после сжатия. Если текущий размер индекса памяти превышает 1 МБ, то память записывается в индекс выходного файла / spillN.out.index в.

 

Перемешать этап (карта выходной терминал , чтобы уменьшить вход )

1) maptask собирает нашу карту () метод кВ выходной, в буфер памяти в

2) непрерывно из локального файла диска памяти переполнения буфера, несколько файлов могут переполниться 

3)多个溢出文件会被合并成大的溢出文件 

4)在溢出过程中,及合并的过程中,都要调用partitioner进行分区和针对key进行排序 

5)reducetask根据自己的分区号,去各个maptask机器上取相应的结果分区数据 

6)reducetask会取到同一个分区的来自不同maptask的结果文件,reducetask会将这些文件再进行合并(归并排序 

7)合并成大文件后,shuffle的过程也就结束了,后面进入reducetask的逻辑运算过程(从文件中取出一个一个的键值对group,调用用户自定义的reduce()方法) 

3)注意Shuffle中的缓冲区大小会影响到mapreduce程序的执行效率,原则上说,缓冲区越大,磁盘io的次数越少,执行速度就越快。缓冲区的大小可以通过参数调整,参数:io.sort.mb默认100M。

 

ReduceTask阶段

1)Copy阶段ReduceTask从各个MapTask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。 

2)Merge阶段:在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多 

3)Sort阶段:按照MapReduce语义,用户编写reduce()函数输入数据是按key进行聚集的一组数据。为了将key相同的数据聚在一起,Hadoop采用了基于排序的策略。由于各个MapTask已经实现对自己的处理结果进行了局部排序,因此,ReduceTask只需对所有数据进行一次归并排序即可 

4)Reduce阶段reduce()函数将计算结果写到HDFS上


рекомендация

отblog.51cto.com/14479068/2432987