Hadoop

advertisement
Hadoop
Лекция 4.
Разработка и запуск
программ в Hadoop
План
Запуск программ в Hadoop из
командной строки
 Контроль состояния задач и очереди
Hadoop
 Eclipse Plug-in для Hadoop
 Karmasphere Studio

Запуск программ в Hadoop

Запуск и управление работой программ
в Hadoop выполняется командой:
$

Пример для HDFS:
$

bin/hadoop
bin/hadoop dfs -ls
Без параметров выводится подсказка по
доступным командам
Команды Hadoop
Команда
dfs (fs)
Назначение
Операции с HDFS
jar
Запустить программу, упакованную в архив
Jar
CLASSNAME Запустить класс с указанным именем
job
Управление задачами Hadoop
queue
Просмотр очереди задач

Полный список команд в «Hadoop Command Guide»
Пример запуска класса


Программа работы с HDFS из лекции 2
Компиляция (нужно установить CLASSPATH):


Результат:


javac HDFSHelloWorld.java
HDFSHelloWorld.class
Запуск:
$ bin/hadoop
Hello, world!

HDFSHelloWorld
Запуск архива jar

Синтаксис:


$ bin/hadoop jar jarFile [mainClass] args…
Пример:
 bin/hadoop jar hadoop-examples-*.jar grep input
output 'dfs[a-z.]+‘





hadoop-examples-*.jar – Имя архива с примерами из
дистрибутива Hadoop
grep – Имя класса с примером
input – Каталог входных данных
output – Каталог выходных данных
'dfs[a-z.]+‘ – Шаблон для поиска
Примеры в составе Hadoop

Готовые примеры:
– подсчет количества слов
 sort, terasort – сортировка
 randomwriter, teragen – генерация тестовых данных
 pentomino, sudoku – решатели головоломок
 wordcount

Полный список примеров:


$ bin/hadoop jar hadoop-examples-*.jar
Открытый исходный код, можно изучать
Выходные файлы

Результат работы программы Hadoop
записывается в файлы вида:
 part-XXXXX,
где XXXXX – номер процесса Reduce


Каждый процесс Reduce выводит данные в
отдельный файл
Для корректной работы необходимо, чтобы
каталог для выходных файлов не
существовал (Почему?)
Основы Jar
Jar (Java Archive) – архив Java
 Использует формат Zip
 Включает:

 Программу
на Java все необходимые
компоненты
 Манифест (метаданные, включая основной
выполняемый класс)

Создается командой jar из JDK
Команда Jar
Синтаксис jar похож на tar
 Создание архива jar:



Создание архива jar из каталога:


jar cvf WordCount.jar WordCount.class
WordCount$Map.class WordCount$Reduce.class
jar cvf WordCount.jar –C WordCount/ .
Распаковка архива jar

jar xvf WordCount.jar
Пример запуска WordCount

Компиляция (нужно установить CLASSPATH):


Результат:


WordCount.class, WordCount$Map.class,
WordCount$Reduce.class
Создание архива jar:


javac WordCount.java
jar cvf WordCount.jar WordCount.class
WordCount$Map.class WordCount$Reduce.class
Запуск:

$ bin/hadoop jar WordCount.jar WordCount input
output
Очередь задач Hadoop





В Hadoop задачи запускаются в пакетном режиме
Вызов $ bin/hadoop jar ставит задачу в
очередь
Запуск может быть выполнен не сразу, а через
некоторое время
Каждый узел кластера имеет ограниченное
количество «слотов»
JobTracker отслеживает количество свободных
слотов и при их наличии запускает задачу
Команды работы с очередью

Список существующих очередей:
$ bin/hadoop queue -list
Queue Name : default
Queue State : running
Scheduling Info : N/A

Задачи в очереди:
$ bin/hadoop queue -info default -showJobs
…
Job List
JobId
State
StartTime
UserName Priority
SchedulingInfo
job_201107011004_0009
1
1309503759318
hadoop NORMAL NA
job_201107011004_0010
1
1309504015179
hadoop NORMAL NA
Просмотр очереди через Web
Задача в очереди
Управление задачами

Команда:
$
bin/hadoop job cmd
Команда
list
Назначение
Печать списка задач
status
Сведения о задаче
kill
Остановить задачу
kill-task Остановить task
Управление задачами

Список работающих задач:
$ bin/hadoop job -list
1 jobs currently running
JobId
State
StartTime
job_201107011004_0012
1

UserName Priority
SchedulingInfo
1309506512793
hadoop NORMAL NA
Информация о задаче:
$ bin/hadoop job -status job_201107011004_0012

Список всех задач, в том числе завершенных:
$ bin/hadoop job -list all
Управление задачами через Web
Разработка для Hadoop
Eclipse plug-in для Hadoop
 Karmasphere Studio:

 Eclipse
 Netbeans
 Бесплатный
вариант: Karmasphere Studio
Community Edition
Eclipse plug-in для Hadoop

Входит в дистрибутив Hadoop1:
 contrib/eclipse-plugin

Plug-in позволяет:
 Запускать
программы на сервере Hadoop из
Eclipse
 Работать с HDFS из Eclipse

Установка:
 Скопировать
файл hadoop-eclipse-plugin*.jar в
каталог plugins Eclipse
1В
текущей версии Hadoop (0.20.2) plugin не работает. Работающий plugin
можно скачать по ссылке: http://wiki.apache.org/hadoop/EclipsePlugIn
Использование Eclipse plug-in


Для компиляции программ нужен
дистрибутив Hadoop на компьютере
разработчика
Создание проекта для Hadoop в Eclipse:
 Создайте
проект «Map/Reduce Project»
 Укажите имя проекта и путь к дистрибутиву
Hadoop
 Eclipse автоматически подключит нужные
библиотеки из диструбутива Hadoop к проекту
Использование Eclipse plug-in
Подключение к серверу Hadoop
Выберите перспективу «Map/Reduce»
 В нижней части экрана выберите
закладку «Map/Reduce Locations»
 Нажмите кнопку «New Hadoop
Location…»
 Введите данные о кластере или
сервере Hadoop

Подключение к серверу Hadoop
Параметры соединения с Hadoop




Location name – имя соединения в Eclipse,
может быть любым
Map/Reduce Master – адрес (host:port)
сервера JobTracker
DFS Master – адрес (host:port) сервера имен
(NameNode) DFS
User name – имя пользователя, не работает в
текущей версии (0.20.2 и 0.20.203)
Дополнительные параметры
соединения с Hadoop
hadoop.job.ugi – имя пользователя
Hadoop до первой запятой
 mapred.system.dir – путь в HDFS к
общим системным файлам MapReduce
(рекомендуется /hadoop/mapred/system)
 hadoop.tmp.dir – путь к временным
каталогам Hadoop (рекомендуется
/tmp/hadoop)

Работа с HDFS из Eclipse
Шаблоны классов





Mapper –класс для
функции Map
Reducer – класс
для функции Reduce
MapReduce Driver –
класс для запуска задачи Hadoop
Использование: меню File->New…
Шаблоны используют устаревший API
Запуск MapReduce программ
Запуск MapReduce программ

Запуск программы:
 Правой
кнопкой мыши щелкнуть в Project Explorer
на имени нужного класса
 В контекстном меню выбрать пункт Run As -> Run
on Hadoop
 В появившемся окне выбрать сервер Hadoop и
нажать Finish


В окно консоли выводится лог запуска
Результаты работы можно посмотреть в окне
HDFS
Karmasphere Studio
Среда разработки для Hadoop,
созданная компанией Karmasphere
 Варианты:

 Professional
Edition (платный)
 Community Edition (бесплатный)

Поддерживает IDE Eclipse и Netbeans
Karmasphere Studio




Включает сконфигурированные дистрибутивы
Hadoop нескольких версий
Ничего дополнительно устанавливать не нужно
(исключение: для Windows требуется cygwin)
Самый простой способ начать программировать для
Hadoop
В курсе используется Karmasphere Studio Community
Edition для Eclipse

При желании допускается использовать платную версию
и/или NetBeans
Установка Karmasphere Studio


Установить Eclipse
В файле eclipse.ini прописать параметры:
-vmargs
-Xmx1024m
-XX:MaxPermSize=512m
-Dosgi.classloader.lock=classname
-Dosgi.requiredJavaVersion=1.6

Зарегистрироваться на сайте karmasphere1 и
получить код для Community Edition
1http://www.karmasphere.com/Download/register-for-community-edition.html
Установка Karmasphere Studio
В меню Eclipse выбрать пункт Help->
Install new software
 Создать новый репозиторий с Location:

 http://updates.karmasphere.com/dist/<Ключ>/eclipse/
В появившемся списке выбрать и
установить Karmasphere Studio
Community Edition
 Перезапустить Eclipse

Установка Karmasphere Studio
Использование Karmasphere
Karmasphere Studio создает новую
перспективу «Hadoop»
 Новый типа проекта не создается,
используется обычный Java проект
 Библиотеки Hadoop к проекту
подключаются вручную из состава
Karmasphere

Подключение библиотек
Основные понятия Karmasphere
Workflow – поток работ MapReduce
 Hadoop Job – задача Hadoop,
генерируется автоматически на базе
Workflow

WordCount в Karmasphere





Создайте проект Java
Подключите библиотеки Hadoop MapReduce
0.20
Создайте задачу Hadoop MapReduce Job
(0.20.2) (File->New->Other->Hadoop 0.20-> Hadoop
MapReduce Job (0.20.2) )
Приложение WordCount готово!
Используются Mapper и Reducer из состава
Hadoop
WordCount в Karmasphere
WordCount Workflow
Мастер для настройки всех фаз
MapReduce
 Код на Java генерируется
автоматически
 Просмотр обработки данных без
запуска задачи на Hadoop

WordCount Workflow
Автоматически сгенерированная
задача (фрагмент)
public class WordCountJob {
public static void main(String[] args) throws Exception {
Job job = new Job();
/* Autogenerated initialization. */
initJob(job);
/* Custom initialization. */
initCustom(job);
/* Tell Task Tracker this is the main */
job.setJarByClass(WordCountJob.class);
/* This is an example of how to set input and output. */
FileInputFormat.setInputPaths(job, args[0]);
FileOutputFormat.setOutputPath(job, new Path(args[1]));
/* You can now do any other job customization. */
// job.setXxx(...);
/* And finally, we submit the job. */
job.submit();
job.waitForCompletion(true);
}
...
Шаблоны классов


Karmasphere
включает шаблоны
классов Mapper,
Reducer и др.
Собственные
классы после
создания можно
включать в
WorkFlow
Запуск задач в Karmasphere
Karmasphere включает
сконфигурированные дистрибутивы
Hadoop нескольких версий для
локального запуска
 Поддерживается запуск задач на
удаленных кластерах
 Для запуска нажмите кнопку «Deploy To
A Cluster» в Workflow

Локальный запуск
Подключение к кластеру


Настройка соединения
с кластером Hadoop
выполняется в окне
«Hadoop Services»
Для запуска задачи на кластере необходимо
настроить:
 Соединение
с HDFS, «Remote File Systems»
 Соединение с кластером, «Remote Clusters»
Соединение с HDFS
Соединение с HDFS




В «Hadoop Services» нажмите правой кнопкой
мыши на «Remote Filesystems» и в меню
выберите «New Filesystem»
Введите имя файловой системы (может быть
любым), нажмите «Next»
Введите параметры файловой системы: имя
и порт сервера имен, версию Hadoop, имя
пользователя и группу Hadoop
Нажмите «Finish»
Просмотр HDFS
Соединение с кластером
Соединение с кластером




В «Hadoop Services» нажмите правой кнопкой
мыши на «Remote Clusters» и в меню
выберите «New Cluster»
Введите имя кластера (может быть любым),
выберите версию Hadoop и файловую
систему по умолчанию, нажмите «Next»
Введите параметры кластера: имя и порт
сервера задач, имя пользователя Hadoop
Нажмите «Finish»
Запуск задачи на кластере
Итоги

Запуск задач Hadoop из командной строки:




Подготовить Jar архив с задачей
Запустить командой bin/hadoop jar
Задачи Hadoop выполняются в пакетном режиме

Просмотр состояния очереди и задач из командной
строки bin/hadoop queue и bin/hadoop job

Также очередь и состояние задач можно контролировать
через Web
Среда разработки для Hadoop:


Karmasphere для Eclipse (рекомендуется) или NetBeans
Eclipse plugin для Hadoop
Дополнительные материалы

Hadoop Commands Guide


Hadoop Eclipse Plug-in


http://hadoop.apache.org/common/docs/current/commands_manual.html
http://wiki.apache.org/hadoop/EclipsePlugIn
Karmasphere Studio Community Edition

http://www.karmasphere.com/Products-Information/karmasphere-studiocommunity-edition.html
Вопросы?
Download