Пререквизиты
Установлена Java 8
Установлена переменная окружения JAVA_HOME
Используемая версия hadoop: hadoop-2.8.3
Путь к hadoop_home на файловой системе: c:\dev\hadoop
В качестве образца используется инструкция https://github.com/MuhammadBilalYar/Hadoop-On-Window/wiki/Step-by-step-Hadoop-2.8.0-installation-on-Window-10
Инструкция
Загрузка и подготовка дистрибутива
- Загрузите дистрибутив hadoop с официального сайта https://archive.apache.org/dist/hadoop/common/. Из папки hadoop-2.8.3 заберите hadoop-2.8.3.tar.gz
- Распакуйте файлы из tar.gz в директорию c:\dev\hadoop
- Загрузите winutils для hadoop с сайта https://github.com/steveloughran/winutils в виде архива zip (файл winutils-master.zip)
- Из архива winutils-master.zip из папки winutils-master\hadoop-2.8.3\bin скопируйте все файлы с расширениями dll, exp, lib, exp, exe в папку c:\dev\hadoop\hadoop-2.8.3\bin
Конфигурация
- Создайте директорию c:\dev\hadoop\data и две поддиректории c:\dev\hadoop\data\namenode и c:\dev\hadoop\data\datanode . В этих директориях кластер будет хранить данные namenode и datanode
- Файлы конфигурации находятся в директории c:\dev\hadoop\hadoop-2.8.3\etc\hadoop
Добавьте в файл core-site.xml в тэг <configuration> (между <configuration> и </configuration>)
<property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
Переименуйте файл mapred-site.xml.template в mapred-site.xml и добавьте в него в тэге <configuration>
<property> <name>mapreduce.job.user.name</name> <value>%USERNAME%</value> </property> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.apps.stagingDir</name> <value>/user/%USERNAME%/staging</value> </property> <property> <name>mapreduce.jobtracker.address</name> <value>local</value> </property>
В файле yarn-site.xml в тэг <configuration> добавьте
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property>
В файле hdfs-site.xml в секцию <configuration> добавьте replication factor и пути, где кластер будет хранить данные для namenode и datanode
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>c:\dev\hadoop\hadoop-2.8.3\data\namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>c:\dev\hadoop\hadoop-2.8.3\data\datanode</value> </property>
Запуск и проверка
- Запустите консоль (команда cmd)
В консоли выполните (в принципе это нужно выполнять всякий раз, когда нужно будет работать с кластером)
set HADOOP_HOME=c:\dev\hadoop\hadoop-2.8.3 set HADOOP_CONF_DIR=%HADOOP_HOME%\etc\hadoop set PATH=%PATH%;%HADOOP_HOME%\sbin;%HADOOP_HOME%\bin
Выполните форматирование namenode. Помните, что при повторном форматировании из кластера будут удалены все данные.
hdfs.cmd namenode -format
Запустите кластер
start-all.cmd
- Должны запуститься без ошибок 4 демона в 4-х консолях. Имена консолей:
- Apache Hadoop Distiribution - hadoop namenode
- Apache Hadoop Distiribution - hadoop datanode
- Apache Hadoop Distiribution - yarn nodemanager
- Apache Hadoop Distiribution - yarn resourcemanager
- По ссылке http://localhost:8088 должен быть доступен yarn recourse manager UI
- По ссылке http://localhost:50070 доступен Namenode information сайт.
Положите в hdfs какой-нибудь файл (для примера выбран winutils-master.zip)
hdfs dfs -copyFromLocal winutils-master.zip /
Проверьте, что файл был загружен
hdfs dfs -ls /
Пример запуска mapreduce задачи
Проект: wordcount.zip
Проект содержит собранный jar-файл в папке target. Однако проект можно собрать maven-ом.
Запустите консоль в корне проекта (там где лежит файл pom.xml). Выполните:
set HADOOP_HOME=<path to you hadoop> set HADOOP_CONF_DIR=%HADOOP_HOME%\etc\hadoop set PATH=%PATH%;%HADOOP_HOME%\sbin;%HADOOP_HOME%\bin rem copy file to hdfs hadoop fs -copyFromLocal spark-sql.txt / rem check if file was copied to hdfs hadoop fs -ls / rem run mapreduce job on cluster hadoop jar target\wordcount-1.0-SNAPSHOT.jar com.pva.mr.wordcount.WordCount /spark-sql.txt /out rem copy files from hdfs hadoop fs -copyToLocal /out rem delete directory from hdfs hadoop fs -rm -r /out
Логи запуска будут доступны по адресу http://localhost:8088 .
Пример запуска spark задачи
Проект: spark-1.6.3-introduction.zip
Проект содержит собранный jar-файл в папке target. Однако проект можно собрать maven-ом.
Запустите консоль в корне проекта (там где лежит файл pom.xml). Выполните:
set HADOOP_HOME=D:\Programs\hadoop_2\hadoop-2.8.3\ set HADOOP_CONF_DIR=%HADOOP_HOME%\etc\hadoop set PATH=%PATH%;%HADOOP_HOME%\sbin;%HADOOP_HOME%\bin set SPARK_HOME=D:\Programs\Spark\spark-1.6.3-bin-hadoop2.6\ set MAIN_CLASS=org.mai.dep810.spark.rdd.WordCount rem start cluster command start-all rem stop cluster command stop-all rem check if file was copied to hdfs hadoop fs -ls / rem copy file to hdfs hadoop fs -copyFromLocal spark-sql.txt / rem submit spark job on cluster %SPARK_HOME%\bin\spark-submit --class %MAIN_CLASS% --master yarn target/spark-introduction-1.0.0-SNAPSHOT.jar
Логи запуска будут доступны по адресу http://localhost:8088 .
Остановка кластера
Команда stop-all.cmd остановит кластер