Поделиться через


Запуск примеров MapReduce, включенных в HDInsight

Узнайте, как запускать примеры MapReduce, включенные в Apache Hadoop в HDInsight.

Предпосылки

Примеры MapReduce

Примеры находятся в кластере HDInsight по адресу /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar. Исходный код для этих примеров включен в кластер HDInsight по адресу /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples.

В этом архиве содержатся следующие примеры:

Образец Описание
суммарное количество слов Подсчитывает слова в входных файлах.
агрегатныйwordhist Вычисляет гистограмму слов в входных файлах.
bbp Использует Bailey-Borwein-Plouffe для вычисления точных цифр Pi.
dbcount Подсчитывает журналы просмотров страниц, хранящиеся в базе данных.
distbbp Использует формулу типа BBP для вычисления точных битов Pi.
grep Подсчитывает совпадения регулярных выражений во входных данных.
присоединиться Выполняет соединение на отсортированных, равномерно разделённых наборах данных.
multifilewc Подсчитывает слова из нескольких файлов.
пентомино Программа укладки плиток для поиска решений проблем пентомино.
π Оценивает Pi с помощью метода quasi-Monte Carlo.
randomtextwriter Записывает 10 ГБ случайных текстовых данных на узел.
randomwriter Записывает 10 ГБ случайных данных на каждый узел.
secondarysort Определяет вторичную сортировку для этапа уменьшения.
сортировать Сортирует данные, записанные случайным образом.
судоку Решатель sudoku.
тераген Сгенерируйте данные для terasort.
terasort Запустите terasort.
teravalidate Проверка результатов Терасорт.
количество слов Подсчитывает слова в входных файлах.
wordmean Подсчитывает среднюю длину слов в входных файлах.
wordmedian Подсчитывает длину медианы слов в входных файлах.
wordstandarddeviation Подсчитывает стандартное отклонение длины слов в входных файлах.

Запуск примера подсчёта слов

  1. Подключитесь к HDInsight с помощью SSH. Замените CLUSTER именем кластера и введите следующую команду:

    ssh [email protected]
    
  2. В сеансе SSH используйте следующую команду для перечисления примеров:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
    

    Эта команда создает список примеров из предыдущего раздела этого документа.

  3. Используйте следующую команду, чтобы получить справку по конкретному образцу. В этом случае пример wordcount :

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount
    

    Отобразится следующее сообщение.

    Usage: wordcount <in> [<in>...] <out>
    

    Это сообщение указывает, что можно указать несколько входных путей для исходных документов. Окончательный путь заключается в том, где хранятся выходные данные (количество слов в исходных документах).

  4. Используйте следующую команду, чтобы подсчитать все слова в записных книжках Леонардо да Винчи, которые предоставляются в качестве примеров данных в кластере:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/davinciwordcount
    

    Входные данные для этого задания считываются из /example/data/gutenberg/davinci.txt. Выходные данные для этого примера хранятся в /example/data/davinciwordcount. Оба пути находятся в хранилище по умолчанию для кластера, а не в локальной файловой системе.

    Примечание.

    Как отмечалось в справке для примера wordcount, можно также указать несколько входных файлов. Например, hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/gutenberg/ulysses.txt /example/data/twowordcount будет подсчитывать слова как в davinci.txt, так и в ulysses.txt.

  5. После завершения задания используйте следующую команду, чтобы просмотреть выходные данные:

    hdfs dfs -cat /example/data/davinciwordcount/*
    

    Эта команда объединяет все выходные файлы, созданные заданием. Он отображает выходные данные в консоли. Результат будет аналогичен приведенному ниже:

    zum     1
    zur     1
    zwanzig 1
    zweite  1
    

    Каждая строка представляет слово и сколько раз оно произошло в входных данных.

Пример Sudoku

Sudoku — это логическая головоломка, состоящая из девяти 3x3 сеток. Некоторые ячейки в сетке имеют числа, а другие пустые, и цель — заполнить пустые ячейки. Предыдущая ссылка содержит дополнительные сведения о головоломке, но цель этого примера — заполнить пустые ячейки. Поэтому входные данные должны быть файлом, который находится в следующем формате:

  • Девять строк из девяти столбцов
  • Каждый столбец может содержать число или ? (указывающее пустую ячейку)
  • Ячейки разделены пробелом

Существует определенный способ создания головоломки Sudoku; Нельзя повторить число в столбце или строке. Существует пример кластера HDInsight, который правильно создан. Он расположен /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta и содержит следующий текст:

8 5 ? 3 9 ? ? ? ?
? ? 2 ? ? ? ? ? ?
? ? 6 ? 1 ? ? ? 2
? ? 4 ? ? 3 ? 5 9
? ? 8 9 ? 1 4 ? ?
3 2 ? 4 ? ? 8 ? ?
9 ? ? ? 8 ? 5 ? ?
? ? ? ? ? ? 2 ? ?
? ? ? ? 4 5 ? 7 8

Чтобы выполнить эту проблему с помощью примера Sudoku, используйте следующую команду:

yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar sudoku /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta

Результаты отображаются примерно так:

8 5 1 3 9 2 6 4 7
4 3 2 6 7 8 1 9 5
7 9 6 5 1 4 3 8 2
6 1 4 8 2 3 7 5 9
5 7 8 9 6 1 4 2 3
3 2 9 4 5 7 8 1 6
9 4 7 2 8 6 5 3 1
1 8 5 7 3 9 2 6 4
2 6 3 1 4 5 9 7 8

Пример pi (π)

В примере pi используется статистический метод (квази-Монте-Карло) для оценки значения pi. Точки размещаются случайным образом в единичном квадрате. Квадрат также содержит круг. Вероятность того, что точки расположены внутри круга, равна площади круга, а именно π/4. Значение pi можно оценить по значению 4R. R — это соотношение количества точек, находящихся внутри круга, к общему количеству точек, находящихся в квадрате. Чем больше выборка точек используется, тем лучше оценка.

Чтобы запустить этот пример, используйте следующую команду. Эта команда использует 16 карт с 10 000 000 выборок каждый для оценки значения pi:

yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 16 10000000

Значение, возвращаемое этой командой, аналогично 3.141591550000000000000000000. Для справки, первые 10 десятичных знаков числа пи — 3,1415926535.

Пример 10 ГБ GraySort

GraySort — это эталонная сортировка. Метрика — это скорость сортировки (ТБ/минута), которая достигается при сортировке больших объемов данных, как правило, минимальное значение 100 ТБ.

В этом примере используется скромные 10 ГБ данных, чтобы его можно было выполнить относительно быстро. В нем используются приложения MapReduce, разработанные Owen O'Malley и Arun Murthy. Эти приложения выиграли ежегодный тест на широкое назначение ("Daytona") по бенчмарку сортировки в 2009 году, со скоростью 0,578 ТБ/мин (100 ТБ за 173 минуты). Дополнительные сведения об этом и других тестах сортировки см. на сайте Sort Benchmark .

В этом примере используются три набора программ MapReduce:

  • TeraGen: программа MapReduce, которая создает строки данных для сортировки

  • TeraSort: примеры входных данных и использование MapReduce для сортировки данных в общем порядке

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

  • TeraValidate: программа MapReduce, которая проверяет, что выходные данные отсортированы глобально

    Он создает одну карту для каждого файла в выходном каталоге, и каждая карта гарантирует, что каждый ключ меньше или равен предыдущему. Функция карты создает записи первых и последних ключей каждого файла. Функция уменьшения гарантирует, что первый ключ файла i больше последнего ключа файла i-1. Все проблемы отображаются в виде выходных данных этапа сокращения с ключами, которые не упорядочены.

Выполните следующие действия для создания данных, сортировки и проверки выходных данных:

  1. Создайте 10 ГБ данных, которые хранятся в хранилище по умолчанию кластера HDInsight:/example/data/10GB-sort-input

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapred.map.tasks=50 100000000 /example/data/10GB-sort-input
    

    -Dmapred.map.tasks указывает Hadoop, сколько задач map следует использовать для этого задания. Последние два параметра указывают заданию создать 10 ГБ данных и сохранить его в /example/data/10GB-sort-input.

  2. Для сортировки данных используйте следующую команду:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar terasort -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-input /example/data/10GB-sort-output
    

    -Dmapred.reduce.tasks сообщает Hadoop, сколько reduce-задач использовать для задания. Последние два параметра — это только входные и выходные расположения для данных.

  3. Используйте следующую команду, чтобы проверить данные, созданные с помощью сортировки:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teravalidate -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-output /example/data/10GB-sort-validate
    

Дальнейшие действия

Из этой статьи вы узнали, как запустить примеры, включенные в кластеры HDInsight под управлением Linux. Руководства по использованию Pig, Hive и MapReduce с HDInsight см. в следующих разделах: