Поиск по сайту:

Как установить Hadoop на Ubuntu 13.10


Предпосылки

Единственным предварительным условием для этого руководства является VPS с установленной Ubuntu 13.10 x64.

Вам нужно будет выполнять команды из командной строки, которые вы можете сделать одним из двух способов:

  1. Используйте SSH для доступа к дроплету.
  2. Используйте «Консольный доступ» из панели управления Digital Ocean Droplet.

Что такое Хадуп?

Hadoop — это фреймворк (состоящий из программных библиотек), упрощающий обработку наборов данных, распределенных по кластерам серверов. Двумя основными компонентами Hadoop являются HDFS и MapReduce.

HDFS — это файловая система, используемая Hadoop для хранения всех данных. Эта файловая система охватывает все узлы, используемые Hadoop. Эти узлы могут быть на одном VPS или распределены по большому количеству виртуальных серверов.

MapReduce — это платформа, которая управляет всеми действиями Hadoop. Он обрабатывает назначение работы различным узлам в кластере.

Преимущества использования Hadoop

Архитектура Hadoop позволяет масштабировать оборудование по мере необходимости. Новые узлы можно добавлять постепенно, не беспокоясь об изменении форматов данных или об обработке приложений, размещенных в файловой системе.

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

Установка Хадуп

Установка и запуск Hadoop довольно просты. Однако, поскольку этот процесс требует редактирования нескольких файлов конфигурации и установки, убедитесь, что каждый шаг выполнен правильно.

1. Установите Java

Hadoop требует установки Java, поэтому начнем с установки Java:

apt-get update
apt-get install default-jdk

Эти команды обновят информацию о пакете на вашем VPS, а затем установят Java. После выполнения этих команд выполните следующую команду, чтобы убедиться, что Java установлена:

java -version

Если Java была установлена, должны отображаться сведения о версии, как показано на следующем рисунке:

2. Создайте и настройте сертификаты SSH

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

ssh-keygen -t rsa -P ''
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

После выполнения первой из этих двух команд вас могут попросить ввести имя файла. Просто оставьте поле пустым и нажмите клавишу ввода, чтобы продолжить. Вторая команда добавляет вновь созданный ключ в список авторизованных ключей, чтобы Hadoop мог использовать SSH без запроса пароля.

3. Загрузите и установите Hadoop

Сначала давайте загрузим Hadoop с одного из зеркал с помощью следующей команды:

wget http://www.motorlogy.com/apache/hadoop/common/current/hadoop-2.3.0.tar.gz

Примечание. Эта команда использует ссылку для скачивания на одном из зеркал, перечисленных на веб-сайте Hadoop. Список зеркал можно найти по этой ссылке. Вы можете выбрать любое другое зеркало, если хотите. Чтобы загрузить последнюю стабильную версию, выберите файл hadoop-X.Y.Z.tar.gz из текущего каталога или каталога current2 на выбранном зеркале.

После загрузки пакета Hadoop выполните следующую команду, чтобы извлечь его:

tar xfz hadoop-2.3.0.tar.gz

Эта команда извлечет все файлы этого пакета в каталог с именем hadoop-2.3.0. Для этого руководства установка Hadoop будет перемещена в каталог /usr/local/hadoop с помощью следующей команды:

mv hadoop-2.3.0 /usr/local/hadoop 

Примечание. Имя извлеченной папки зависит от загруженной и извлеченной версии Hadoop. Если ваша версия отличается от используемой в этом руководстве, измените команду выше соответствующим образом.

4. Редактировать и настраивать файлы конфигурации

Чтобы завершить настройку Hadoop, необходимо изменить следующие файлы:

  • ~/.bashrc
  • /usr/local/hadoop/etc/hadoop/hadoop-env.sh
  • /usr/local/hadoop/etc/hadoop/core-site.xml
  • /usr/local/hadoop/etc/hadoop/yarn-site.xml
  • /usr/local/hadoop/etc/hadoop/mapred-site.xml.template
  • /usr/local/hadoop/etc/hadoop/hdfs-site.xml

я. Редактирование ~/.bashrc

Прежде чем редактировать файл .bashrc в вашем домашнем каталоге, нам нужно найти путь, по которому была установлена Java, чтобы установить переменную среды JAVA_HOME. Для этого воспользуемся следующей командой:

update-alternatives --config java

Это отобразит что-то вроде следующего:

Полный путь, отображаемый этой командой:

/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

Значение для JAVA_HOME — это все, что находится перед /jre/bin/java в указанном выше пути — в данном случае /usr/lib/jvm/java-7- openjdk-amd64. Запишите это, так как мы будем использовать это значение на этом шаге и еще на одном шаге.

Теперь используйте nano (или ваш любимый редактор) для редактирования ~/.bashrc с помощью следующей команды:

nano ~/.bashrc

Это откроет файл .bashrc в текстовом редакторе. Перейдите в конец файла и вставьте/введите в него следующее содержимое:

#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END

Примечание 1. Если значение JAVA_HOME на вашем VPS отличается, не забудьте соответствующим образом изменить первый оператор export в приведенном выше содержимом.

Примечание 2. Файлы, открытые и отредактированные с помощью nano, можно сохранить с помощью Ctrl + X. При появлении запроса на сохранение изменений введите Y. Если вас попросят ввести имя файла, просто нажмите клавишу ввода.

Конец файла .bashrc должен выглядеть примерно так:

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

source ~/.bashrc

Помещение вышеуказанного содержимого в файл .bashrc гарантирует, что эти переменные всегда будут доступны при запуске вашего VPS.

II. Редактирование /usr/local/hadoop/etc/hadoop/hadoop-env.sh

Откройте файл /usr/local/hadoop/etc/hadoop/hadoop-env.sh с помощью nano, используя следующую команду:

nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh

В этом файле найдите строку, которая экспортирует переменную JAVA_HOME. Измените эту строку на следующую:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Примечание. Если значение JAVA_HOME на вашем VPS отличается, обязательно измените эту строку соответствующим образом.

Файл hadoop-env.sh должен выглядеть примерно так:

Сохраните и закройте этот файл. Добавление приведенного выше оператора в файл hadoop-env.sh гарантирует, что значение переменной JAVA_HOME будет доступно для Hadoop при каждом его запуске.

III. Редактирование /usr/local/hadoop/etc/hadoop/core-site.xml

Файл /usr/local/hadoop/etc/hadoop/core-site.xml содержит свойства конфигурации, которые Hadoop использует при запуске. Этот файл можно использовать для переопределения настроек по умолчанию, с которыми начинается Hadoop.

Откройте этот файл с помощью nano, используя следующую команду:

nano /usr/local/hadoop/etc/hadoop/core-site.xml

В этом файле введите следующее содержимое между тегом :

<property>
   <name>fs.default.name</name>
   <value>hdfs://localhost:9000</value>
</property>

Файл core-site.xml должен выглядеть примерно так:

Сохраните и закройте этот файл.

IV. Редактирование /usr/local/hadoop/etc/hadoop/yarn-site.xml

Файл /usr/local/hadoop/etc/hadoop/yarn-site.xml содержит свойства конфигурации, которые MapReduce использует при запуске. Этот файл можно использовать для переопределения настроек по умолчанию, с которыми запускается MapReduce.

Откройте этот файл с помощью nano, используя следующую команду:

nano /usr/local/hadoop/etc/hadoop/yarn-site.xml

В этом файле введите следующее содержимое между тегом :

<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
<property>
   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
   <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

Файл yarn-site.xml должен выглядеть примерно так:

Сохраните и закройте этот файл.

v. Создание и редактирование /usr/local/hadoop/etc/hadoop/mapred-site.xml

По умолчанию папка /usr/local/hadoop/etc/hadoop/ содержит файл /usr/local/hadoop/etc/hadoop/mapred-site.xml.template. файл, который необходимо переименовать/скопировать с именем mapred-site.xml. Этот файл используется для указания того, какой фреймворк используется для MapReduce.

Это можно сделать с помощью следующей команды:

cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml

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

nano /usr/local/hadoop/etc/hadoop/mapred-site.xml

В этом файле введите следующее содержимое между тегом :

<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>

Файл mapred-site.xml должен выглядеть примерно так:

Сохраните и закройте этот файл.

ви. Редактирование /usr/local/hadoop/etc/hadoop/hdfs-site.xml

Файл /usr/local/hadoop/etc/hadoop/hdfs-site.xml должен быть настроен для каждого хоста в используемом кластере. Он используется для указания каталогов, которые будут использоваться в качестве узла имени и узла данных на этом хосте.

Прежде чем редактировать этот файл, нам нужно создать два каталога, которые будут содержать namenode и datanode для этой установки Hadoop. Это можно сделать с помощью следующих команд:

mkdir -p /usr/local/hadoop_store/hdfs/namenode
mkdir -p /usr/local/hadoop_store/hdfs/datanode

Примечание. Вы можете создать эти каталоги в разных местах, но обязательно соответствующим образом измените содержимое hdfs-site.xml.

После этого откройте файл /usr/local/hadoop/etc/hadoop/hdfs-site.xml с помощью nano, используя следующую команду:

nano /usr/local/hadoop/etc/hadoop/hdfs-site.xml

В этом файле введите следующее содержимое между тегом :

<property>
   <name>dfs.replication</name>
   <value>1</value>
 </property>
 <property>
   <name>dfs.namenode.name.dir</name>
   <value>file:/usr/local/hadoop_store/hdfs/namenode</value>
 </property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>file:/usr/local/hadoop_store/hdfs/datanode</value>
 </property>

Файл hdfs-site.xml должен выглядеть примерно так:

Сохраните и закройте этот файл.

Отформатируйте новую файловую систему Hadoop

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

hdfs namenode -format

Примечание. Это нужно сделать только один раз, прежде чем вы начнете использовать Hadoop. Если эта команда будет выполнена снова после использования Hadoop, она уничтожит все данные в файловой системе Hadoop.

Запустить Hadoop

Осталось только запустить только что установленный одноузловой кластер:

start-dfs.sh

При выполнении этой команды вам дважды будет предложено сообщение, подобное следующему:

Вы уверены, что хотите продолжить подключение (да/нет)?

Введите yes для обоих этих запросов и нажмите клавишу ввода. Как только это будет сделано, выполните следующую команду:

start-yarn.sh

Выполнение двух вышеуказанных команд запустит Hadoop. Вы можете убедиться в этом, введя следующую команду:

jps

Выполнение этой команды должно показать вам что-то похожее на следующее:

Если вы видите результат, аналогичный изображенному на скриншоте выше, это означает, что теперь у вас есть работающий экземпляр Hadoop, работающий на вашем VPS.

Следующие шаги

Если у вас есть приложение, настроенное для использования Hadoop, вы можете запустить его и начать использовать с новой установкой. С другой стороны, если вы просто экспериментируете и изучаете Hadoop, вы можете начать с добавления/манипулирования данными или файлами в новой файловой системе, чтобы почувствовать ее.

Прислал: Джей