Цепочка Hadoop MapReduce с трубами (C ++)

Кто-нибудь знает, как связать два MapReduce с Pipes API?
Я уже связал два MapReduce в предыдущем проекте с JAVA, но сегодня мне нужно использовать C ++. К сожалению, я не видел примеров в C ++.

Кто-то уже сделал это? Это невозможно?

5

Решение

использование Oozie Workflow. Это позволяет вам использовать трубы наряду с обычными заданиями MapReduce.

1

Другие решения

Мне наконец-то удалось заставить Hadoop Pipes работать. Вот несколько шагов, чтобы сделать работу примеров wordcount доступными в src / examples / pipe / impl /.

У меня есть работающий кластер Hadoop 1.0.4, настроенный в соответствии с шагами, описанными в документации.

Чтобы написать работу Pipes, мне нужно было включить библиотеку pipe, которая уже скомпилирована в исходный пакет. Это можно найти в папке C ++ как для 32-битной, так и для 64-битной архитектуры. Однако мне пришлось перекомпилировать его, что можно сделать, выполнив следующие действия:

# cd /src/c++/utils
# ./configure
# make install

# cd /src/c++/pipes
# ./configure
# make install

Эти две команды скомпилируют библиотеку для нашей архитектуры и создадут каталог ‘install’ в / src / c ++, содержащий скомпилированные файлы.

Более того, мне пришлось добавить −lssl а также −lcrypto ссылка флаги для компиляции моей программы. Без них я столкнулся с некоторым исключением аутентификации во время выполнения.
Благодаря этим шагам я смог запустить wordcount-simple, который можно найти в каталоге src / examples / pipe / impl /.

Однако, чтобы выполнить более сложный пример wordcount-nopipe, мне пришлось сделать несколько других замечаний. Благодаря реализации программы чтения и записи, мы непосредственно читаем или пишем из локальной файловой системы. Вот почему мы должны указать наш путь ввода и вывода с помощью файла: //. Кроме того, мы должны использовать выделенный компонент InputFormat. Таким образом, чтобы запустить это задание, мне пришлось использовать следующую команду:

# bin/hadoop pipes −D hadoop.pipes.java.recordreader=false −D hadoop.pipes.java.recordwriter=false −libjars hadoop−1.0.4/build/hadoop−test−1.0.4.jar −inputformat org.apache.hadoop.mapred.pipes.WordCountInputFormat −input file:///input/file −output file:///tmp/output −program wordcount−nopipe

Кроме того, если мы посмотрим на org.apache.hadoop.mapred.pipes.Submitter.java версии 1.0.4, текущая реализация отключает возможность указывать не-читатель записей Java, если вы используете опцию InputFormat.
Таким образом, вы должны прокомментировать строку setIsJavaRecordReader(job,true); сделать возможным и перекомпилировать основные источники, чтобы учесть это изменение (http://web.archiveorange.com/archive/v/RNVYmvP08OiqufSh0cjR).

if(results.hasOption("−inputformat")) {
setIsJavaRecordReader(job, true);
job.setInputFormat(getClass(results, "−inputformat", job,InputFormat.class));
}
0

По вопросам рекламы [email protected]