Пререквизиты

Установлена 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


Инструкция

Загрузка и подготовка дистрибутива

  1. Загрузите дистрибутив hadoop с официального сайта https://archive.apache.org/dist/hadoop/common/. Из папки hadoop-2.8.3 заберите hadoop-2.8.3.tar.gz
  2. Распакуйте файлы из tar.gz в директорию c:\dev\hadoop
  3. Загрузите winutils для hadoop с сайта https://github.com/steveloughran/winutils в виде архива zip (файл winutils-master.zip)
  4. Из архива winutils-master.zip из папки winutils-master\hadoop-2.8.3\bin скопируйте все файлы с расширениями dll, exp, lib, exp, exe в папку c:\dev\hadoop\hadoop-2.8.3\bin

Конфигурация

  1. Создайте директорию c:\dev\hadoop\data и две поддиректории c:\dev\hadoop\data\namenode и c:\dev\hadoop\data\datanode . В этих директориях кластер будет хранить данные namenode и datanode
  2. Файлы конфигурации находятся в директории c:\dev\hadoop\hadoop-2.8.3\etc\hadoop
  3. Добавьте в файл core-site.xml в тэг <configuration> (между <configuration> и </configuration>)

    	<property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
  4. Переименуйте файл 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>
  5. В файле 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>
  6. В файле 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>

Запуск и проверка

  1. Запустите консоль (команда cmd)
  2. В консоли выполните (в принципе это нужно выполнять всякий раз, когда нужно будет работать с кластером)

    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
    
    
  3. Выполните форматирование namenode. Помните, что при повторном форматировании из кластера будут удалены все данные.

    hdfs.cmd namenode -format
  4. Запустите кластер

    start-all.cmd
  5. Должны запуститься без ошибок 4 демона в 4-х консолях. Имена консолей: 
    1. Apache Hadoop Distiribution - hadoop namenode
    2. Apache Hadoop Distiribution - hadoop datanode
    3. Apache Hadoop Distiribution - yarn nodemanager
    4. Apache Hadoop Distiribution - yarn resourcemanager
  6. По ссылке http://localhost:8088 должен быть доступен yarn recourse manager UI
  7. По ссылке http://localhost:50070  доступен Namenode information сайт.
  8. Положите в hdfs какой-нибудь файл (для примера выбран winutils-master.zip)

    hdfs dfs -copyFromLocal winutils-master.zip /
  9. Проверьте, что файл был загружен

    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 остановит кластер

  • Нет меток