Hadoop для разработчика
Для разработки приложений, работающих с использованием Hadoop, или же алгоритмов для MapReduce framework'а совсем не нужен полномасштабный кластер. На самом же деле для запуска всей системы, описанной мной в одном из предыдущих постов, вполне достаточно одного компьютера и буквально минут 15 свободного времени, как потратить их для решения этой задачи я Вам и поведаю.
Рассказывать я буду на примере своего Gentoo Linux, но большая часть этого повествования будет справедлива и для других unix-like операционных систем.
Подготовка
Перед тем, как приступить собственно говоря к установке Hadoop, необходимо выполнить два элементарных действия, необходимых для правильного функционирования системы:
- открыть доступ одному из пользователей по ssh к этому же компьютеру без пароля, можно например создать отдельного пользователя для этого [hadoop]:
useradd -m -n hadoop
Далее действия выполняем от его имени:
su hadoop
Генерируем RSA-ключ для обеспечения аутентификации в условиях отсутствия возможности использовать пароль:
hadoop@localhost ~ $ ssh-keygen -t rsa -P "" Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: 7b:5c:cf:79:6b:93:d6:d6:8d:41:e3:a6:9d:04:f9:85 hadoop@localhost
И добавляем его в список авторизованных ключей:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Этого должно быть более чем достаточно, проверить работоспособность соединения можно просто написав:
ssh localhost
Не забываем предварительно инициализировать sshd:
/etc/init.d/sshd start
- Помимо этого необходимо убедиться в наличии установленной JVM версии 1.5.0 или выше, а также узнать директорию, где она располагается, вариантов сделать это множество, я нашел ее просто заглянув в самое логичное место — /usr/lib, но при желании никто не может Вам помешать воспользоваться услугами, например, slocate. Найденную директорию с JVM лучше запомнить или записать куда-нибудь, для меня она оказалась:
/usr/lib/jvm/sun-jdk-1.6
Установка
Установка начинается с получения копии исходного кода системы, способов для этого существует несколько. Я перепробовал практически все, самую адекватную версию мне удалось получить из SVN. Для ее получения необходимо выполнить следующую команду:
svn checkout http://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.16 ~
branch-0.16 — последняя доступная версия на данный момент, для определения ее номера достаточно заглянуть по тому же адресу браузером. Предполагается, что Hadoop будет располагаться прямо в /home/hadoop, но запросто можно использовать и другую директорию.
Сразу же стоит скомпилировать различные дополнительные компоненты системы, особенно это актуально из-за HBase, но и помимо него соберется много чего интересного, например plug-in для отличной IDE под названием Eclipse или Hadoop On Demand. Задача также элементарна:
cd ~
ant clean jar compile-contrib
Настройка
Конфигурационные файлы можно редактировать в произвольном порядке, самое главное ничего не забыть
- conf/hadoop-env.sh
# The java implementation to use. Required. export JAVA_HOME=/usr/lib/jvm/sun-jdk-1.6
Единственная обязательная переменная окружения — JAVA_HOME, здесь как раз пригодится заранее найденный путь до JVM, все остальное — по желанию. - conf/hadoop-site.xml
Этот конфигурации файл является одним из ключевых, таким образом он выглядит для конфигурации, состоящей из одного компьютера (позаимствован из англоязычного мануала на ту же тему).hadoop.tmp.dir /home/hadoop/data/${user.name} A base for other temporary directories. fs.default.name hdfs://localhost:54310 The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem. mapred.job.tracker localhost:54311 The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task. dfs.replication 1 Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time. - src/contrib/hbase/conf/hbase-site.xml
Как не сложно заметить, этот файл необходим для функционирования HBase, по-моему все просто и очевидно, <description> говорят сами за себя.hbase.master localhost:60000 The host and port that the HBase master runs at hbase.rootdir /hbase location of HBase instance in dfs
Запуск
Начать стоит с ознакомления с кратким описанием доступных команд Hadoop, сделать это можно просто набрав ~/bin/hadoop:
Usage: hadoop [--config confdir] COMMAND where COMMAND is one of: namenode -format format the DFS filesystem secondarynamenode run the DFS secondary namenode namenode run the DFS namenode datanode run a DFS datanode dfsadmin run a DFS admin client fsck run a DFS filesystem checking utility fs run a generic filesystem user client balancer run a cluster balancing utility jobtracker run the MapReduce job Tracker node pipes run a Pipes job tasktracker run a MapReduce task Tracker node job manipulate MapReduce jobs version print the version jarrun a jar file distcp copy file or directories recursively daemonlog get/set the log level for each daemon or CLASSNAME run the class named CLASSNAME Most commands print help when invoked w/o parameters.
Первым делом необходимо отформатировать Namenode:
~/bin/hadoop namenode -format
И дело останется лишь за малым, запустить на выполнение пару bash-скриптов, которые без вашего дальнейшего участия инициализируют всю систему, включая HBase:
~/bin/hadoop/start-all.sh && ~/src/contrib/hbase/bin/start-hbase.sh
Как только они закончат все необходимые действия, у Вас появится возможность удостовериться, что все в порядке. Самым простым способом является запуск клиента Hbase Shell:
~/bin/src/contrib/hbase/bin/hbase shell
Если в ответ Вы получили соответствующее приглашение клиента, значит все было сделано верно!
Вот собственно говоря и все, псевдо-кластер функционирует, доступ к HBase имеется, можно приступать к разработке
Метки: gentoo linux, Hadoop, HBase, HDFS, MapReduce, ПО, развертывание, разработка, установка
Pingback: Иван Бегтин | Yahoo и Hadoop
Pingback: ivbeg: Yahoo и Hadoop
Pingback: Hadoop возвращается | Insight IT