Как алгоритм сортировки MapReduce работает?

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

Вы также можете создать неизменную карту, используя статический инициализатор:

public class Test {
    private static final Map<Integer, String> myMap;
    static {
        Map<Integer, String> aMap = ....;
        aMap.put(1, "one");
        aMap.put(2, "two");
        myMap = Collections.unmodifiableMap(aMap);
    }
}
103
задан Niels Basjes 20 July 2009 в 10:07
поделиться

3 ответа

Вот некоторые подробности реализации Hadoop для Terasort :

TeraSort - это стандартная сортировка по карте / уменьшению, за исключением специального разделителя, который использует отсортированный список из N - 1 ключ с выборкой, определяющий диапазон ключей для каждого сокращения. В частности, все ключи, такие как sample [i - 1] <= key

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

Я нашел ссылку на статью в сообщении в блоге Джеймса Гамильтона .

59
ответ дан 24 November 2019 в 04:22
поделиться

Просто догадываюсь ...

Учитывая огромный набор данных, вы должны разделить данные на несколько частей, которые будут обрабатываться параллельно (возможно, по номеру записи, например, запись 1 - 1000 = раздел 1 и т. Д.).

Назначьте / запланируйте каждый раздел конкретному узлу в кластере.

Каждый узел кластера будет дополнительно разбивать (отображать) раздел на свой собственный мини-раздел, возможно, в алфавитном порядке ключей. Итак, в разделе 1 достаньте мне все, что начинается с A, и выведите его в мини-раздел A из x. Создайте новый A (x), если в настоящее время уже существует A (x). Замените x порядковым номером (возможно, это задание планировщика). Т.е. дайте мне следующий уникальный идентификатор A (x).

Передать (запланировать) задания, выполненные картографом (предыдущий шаг), узлам кластера «уменьшить». Уменьшение кластера узлов затем дополнительно уточнит вид каждой части A (x), что произойдет только тогда, когда будут выполнены все задачи картографа (на самом деле невозможно начать сортировку всех слов, начиная с A, когда все еще существует вероятность того, что все еще есть будет еще один мини-раздел в процессе создания). Выведите результат в окончательный отсортированный раздел (например, Сортированный-A, Сортированный-B и т. Д.)

После этого снова объедините отсортированный раздел в единый набор данных. На данный момент это просто объединение n файлов (где n может быть 26, если вы выполняете только A - Z) и т. Д.

Между ними могут быть промежуточные шаги ... Я не уверен :) . Т.е. дальнейшее преобразование и сокращение после начального шага уменьшения.

На самом деле начать сортировку всех слов, начиная с w / A, когда все еще существует вероятность того, что еще будет еще один мини-раздел A в процессе создания). Выведите результат в окончательный отсортированный раздел (например, Sorted-A, Sorted-B, и т. Д.)

После этого снова объедините отсортированный раздел в единый набор данных. На данный момент это просто объединение n файлов (где n может быть 26, если вы выполняете только A - Z) и т. Д.

Между ними могут быть промежуточные шаги ... Я не уверен :) . Т.е. дальнейшее преобразование и сокращение после начального шага уменьшения.

На самом деле начать сортировку всех слов, начиная с w / A, когда все еще существует вероятность того, что еще будет еще один мини-раздел A в процессе создания). Выведите результат в окончательный отсортированный раздел (например, Sorted-A, Sorted-B, и т. Д.)

После этого снова объедините отсортированный раздел в единый набор данных. На данный момент это просто объединение n файлов (где n может быть 26, если вы выполняете только A - Z) и т. Д.

Между ними могут быть промежуточные шаги ... Я не уверен :) . Т.е. дальнейшее преобразование и сокращение после начального шага уменьшения.

На данный момент это просто объединение n файлов (где n может быть 26, если вы выполняете только A - Z) и т. Д.

Между ними могут быть промежуточные шаги ... Я не уверен :) . Т.е. дальнейшее преобразование и сокращение после начального шага уменьшения.

На данный момент это просто объединение n файлов (где n может быть 26, если вы выполняете только A - Z) и т. Д.

Между ними могут быть промежуточные шаги ... Я не уверен :) . Т.е. дальнейшее преобразование и сокращение после начального шага уменьшения.

0
ответ дан 24 November 2019 в 04:22
поделиться

"XML Documentation Comments (C# Programming Guide) В Visual C # вы можете создать документацию для своего кода, включив теги XML в специальные поля комментариев в исходном коде непосредственно перед блоком кода, на который они ссылаются. "

http://msdn.microsoft.com/en-us/library /b2s063f7.aspx[1246 sizes затем вы можете использовать Sandcastle для генерации файлов chm, если хотите

http://www.hanselman.com/blog/SandcastleMicrosoftCTPOfAHelpCHMFileGeneratorOnTheTailsOfTheDeathOfNDoc.aspx [12489] -121

] Ссылка Google: MapReduce: упрощенная обработка данных в больших кластерах

Появилась в :
OSDI'04: Шестой симпозиум по разработке и реализации операционных систем,
San Francisco, CA, December, 2004.

That link has a PDF and HTML-Slide reference.

There is also a Wikipedia page with description with implementation references.

Also criticism,

David DeWitt and Michael Stonebraker, pioneering experts in parallel databases and shared nothing architectures, have made some controversial assertions about the breadth of problems that MapReduce can be used for. They called its interface too low-level, and questioned whether it really represents the paradigm shift its proponents have claimed it is. They challenge the MapReduce proponents' claims of novelty, citing Teradata as an example of prior art that has existed for over two decades; they compared MapReduce programmers to Codasyl programmers, noting both are "writing in a low-level language performing low-level record manipulation". MapReduce's use of input files and lack of schema support prevents the performance improvements enabled by common database system features such as B-trees and hash partitioning, though projects such as PigLatin and Sawzall are starting to address these problems.

3
ответ дан 24 November 2019 в 04:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: