Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как запускать примеры MapReduce, включенные в Apache Hadoop в HDInsight.
Предпосылки
Кластер Apache Hadoop в HDInsight. См. Начало работы с HDInsight на Linux.
Клиент SSH. Дополнительные сведения см. в руководстве по подключению к HDInsight (Apache Hadoop) с помощью SSH.
Примеры 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 | Подсчитывает стандартное отклонение длины слов в входных файлах. |
Запуск примера подсчёта слов
Подключитесь к HDInsight с помощью SSH. Замените
CLUSTER
именем кластера и введите следующую команду:ssh [email protected]
В сеансе SSH используйте следующую команду для перечисления примеров:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
Эта команда создает список примеров из предыдущего раздела этого документа.
Используйте следующую команду, чтобы получить справку по конкретному образцу. В этом случае пример wordcount :
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount
Отобразится следующее сообщение.
Usage: wordcount <in> [<in>...] <out>
Это сообщение указывает, что можно указать несколько входных путей для исходных документов. Окончательный путь заключается в том, где хранятся выходные данные (количество слов в исходных документах).
Используйте следующую команду, чтобы подсчитать все слова в записных книжках Леонардо да Винчи, которые предоставляются в качестве примеров данных в кластере:
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.После завершения задания используйте следующую команду, чтобы просмотреть выходные данные:
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. Все проблемы отображаются в виде выходных данных этапа сокращения с ключами, которые не упорядочены.
Выполните следующие действия для создания данных, сортировки и проверки выходных данных:
Создайте 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
.Для сортировки данных используйте следующую команду:
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-задач использовать для задания. Последние два параметра — это только входные и выходные расположения для данных.Используйте следующую команду, чтобы проверить данные, созданные с помощью сортировки:
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 см. в следующих разделах: