Запуск Apache Hadoop 2.1.0 в Windows
Я новичок в Hadoop и столкнулся с проблемами, пытаясь запустить его на моей машине с Windows 7. В частности, я заинтересован в том, чтобы запустить Hadoop 2.1.0 в качестве примечаний к выпуску, о том, что поддерживается работа в Windows. Я знаю, что я могу попробовать запустить версии 1.x в Windows с Cygwin или даже использовать подготовленную VM, например Cloudera, но эти параметры по некоторым причинам менее удобны для меня.
Изучив tarball из http://apache-mirror.rbc.ru/pub/apache/hadoop/common/hadoop-2.1.0-beta/, я обнаружил, что действительно есть некоторые *.cmd-скрипты, которые можно запускать без Cygwin. Все работало нормально, когда я формировал раздел HDFS, но когда я пытался запустить hdfs namenode daemon, я столкнулся с двумя ошибками: во-первых, не фатальным было то, что winutils.exe не удалось найти (его действительно не было в загруженном tarball). Я нашел источники этого компонента в дереве источников Apache Hadoop и скомпилировал его с помощью Microsoft SDK и MSbuild. Благодаря подробному сообщению об ошибке было ясно, где поставить исполняемый файл для удовлетворения Hadoop. Но вторая ошибка, которая является фатальной, не содержит достаточной информации для меня:
13/09/05 10:20:09 FATAL namenode.NameNode: Exception in namenode join
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:423)
at org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:952)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:451)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:282)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:200)
...
13/09/05 10:20:09 INFO util.ExitUtil: Exiting with status 1
Похоже, что что-то еще должно быть скомпилировано. Я собираюсь попытаться построить Hadoop из источника с Maven, но нет ли более простого способа? Разве нет какой-то опции-я-не-знаю, что может отключить собственный код и сделать этот tarball пригодным для использования в Windows?
Спасибо.
ОБНОВЛЕНО. Да, в самом деле. В пакете "Homebrew" содержались дополнительные файлы, а самое главное winutils.exe и hadoop.dll. С этим файлом namenode и datanode начали успешно. Я думаю, вопрос может быть закрыт. Я не удалял его, если кто-то сталкивается с такой же трудностью.
ОБНОВЛЕНО 2. Чтобы создать пакет "доморощенный", я сделал следующее:
Кажется, что JAVA_HOME НЕ ДОЛЖЕН содержать пробел!
set PATH={path_to_maven_bin};%PATH%
set Platform=x64
set PATH={path_to_cygwin_bin};%PATH%
set PATH={path_to_protoc.exe};%PATH%
Вы можете попробовать без 'skipTests', но на моей машине некоторые тесты не удались, и строительство было прекращено. Он может быть связан с проблемами сибольной ссылки, упомянутыми в СТРОЕНИИ .txt.
8. Выбрали результат в hadoop-dist\target\hadoop-2.1.0-beta (исполняемые файлы и библиотеки DLL находятся в папке "bin" )
Ответы
Ответ 1
Я выполнил следующие шаги для установки Hadoop 2.2.0
Шаги по созданию дистрибутива Hadoop bin для Windows
-
Загрузите и установите Microsoft Windows SDK v7.1.
-
Загрузите и установите инструмент командной строки Unix Cygwin.
-
Загрузите и установите Maven 3.1.1.
-
Загрузите Buffers Buffers 2.5.0 и извлеките в папку (скажем c:\protobuf).
-
Добавьте переменные среды JAVA_HOME, M2_HOME и платформу, если они еще не добавлены.
Примечание. Имя переменной Платформа чувствительна к регистру. И значение будет либо x64, либо Win32 для построения на 64-битной или 32-битной системе.
Edit Path Variable, чтобы добавить каталог bin в Cygwin (скажем C:\cygwin64\bin), каталог bin Maven (скажем C:\maven\bin) и путь установки буферов протокола (например, c:\protobuf).
-
Загрузите файл hasoop-2.2.0-src.tar.gz и извлеките его в папку с коротким путем (например, c:\hdfs), чтобы избежать проблемы с запуском из-за ограничения длины пути в Windows.
-
Выберите Пуск → Все программы → Microsoft Windows SDK v7.1 и откройте командную строку Windows SDK 7.1. Измените каталог на папку исходного кода Hadoop (c:\hdfs). Выполнить пакет mvn с параметрами -Pdist, native-win -DskipTests -Dtar для создания бинарного дистрибутива Windows.
-
Если на предыдущем шаге все будет хорошо, тогда внутренний каталог hasoop-2.2.0.tar.gz будет создан внутри каталога C:\hdfs\hadoop-dist\target\hadoop-2.2.0.
Установить Hadoop
Настроить Hadoop
C:\Hadoop\и т.д.\Hadoop\ядро-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
C:\Hadoop\и т.д. \\ Hadoop HDFS-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/data/dfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/data/dfs/datanode</value>
</property>
</configuration>
C:\Hadoop\и т.д. \Hadoop\mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
C:\hadoop\etc\hadoop\yarn-site.xml
<configuration>
<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>
</configuration>
Формат namenode
Только в первый раз, namenode нужно отформатировать.
C:\Users\abhijitg>cd c:\hadoop\bin
c:\hadoop\bin>hdfs namenode –format
Начать HDFS (Namenode и Datanode)
C:\Users\abhijitg>cd c:\hadoop\sbin
c:\hadoop\sbin>start-dfs
Начать MapReduce aka YARN (диспетчер ресурсов и Node менеджер)
C:\Users\abhijitg>cd c:\hadoop\sbin
c:\hadoop\sbin>start-yarn
starting yarn daemons
Всего четыре отдельных окна командной строки будут автоматически открываться для запуска Namenode, Datanode, Resource Manager, Node Manager
Ссылка: Сборка, установка, настройка и запуск Apache Hadoop 2.2.0 в ОС Microsoft Windows
Ответ 2
У меня была та же проблема, но с недавним hadoop v. 2.2.0. Вот мои шаги для решения этой проблемы:
-
Я построил winutils.exe
из источников. Каталог проекта:
hadoop-2.2.0-src\hadoop-common-project\hadoop-common\src\main\winutils
Моя ОС: Windows 7. Инструмент для создания: MS Visual Studio Express 2013 для Windows Desktop (бесплатно и может быть загружен из http://www.microsoft.com/visualstudio/).
Откройте Studio, File -> Open -> winutils.sln
. Щелкните правой кнопкой мыши на решении с правой стороны → Build
.
В моем случае было несколько ошибок (возможно, вам потребуется исправить свойства проекта, указать папку вывода).
Виола! Вы получаете winutils.exe
- помещаете его в bin-bin.
-
Далее нам нужно построить hadoop.dll
.
Некоторые ледяные магии здесь: open
hadoop-2.2.0-src\hadoop-common-project\hadoop-common\src\main\native\native.sln
в MS VS; щелкните правой кнопкой мыши по решению → build.
У меня куча ошибок. Я создал вручную несколько пропущенных файлов заголовков (не спрашивайте меня, почему они пропущены в исходном tarball!):
https://github.com/jerishsd/hadoop-experiments/tree/master/sources
(и не спрашивайте меня, для чего этот проект на git, я не знаю - Google указала его, ища имена заголовочных файлов)
Я скопировал
hadoop-2.2.0-src\hadoop-common-project\hadoop-common\target\winutils\Debug\libwinutils.lib
(результат шага # 1) в
hadoop-2.2.0-src\hadoop-common-project\hadoop-common\target\bin
И, наконец, операция сборки создает hasoop.dll!
Поместите его снова в бункер-приемник и счастливо запустите namenode!
Надеюсь, что мои шаги помогут кому-то.
Ответ 3
Хан подготовил двоичные файлы Windows x64 Hadoop 2.2 (см. его blog) и загрузили их в Github.
После помещения двух файлов winutils.exe
и hadoop.dll
в папку %hadoop_prefix%\bin
я получил тот же UnsatisfiedLinkError
.
Проблема заключалась в том, что некоторая зависимость hadoop.dll
отсутствовала. Я использовал Dependency Walker для проверки зависимостей двоичных файлов и Microsoft Распространяемые компоненты Visual С++ 2010 отсутствовали.
Итак, помимо создания всех компонентов, ответ на проблему -
- обязательно используйте ту же архитектуру для Java и собственный код.
java -version
указывает, используете ли вы 32 или x64.
- затем используйте Dependency Walker, чтобы убедиться, что все исходные двоичные файлы являются чистыми и имеют одну и ту же архитектуру. Иногда отсутствует x64-зависимость, и Windows возвращается к x86, что не работает. См. ответ на другой вопрос.
- также проверяет, удовлетворяются ли все зависимости исходных двоичных файлов.
Ответ 4
В дополнение к другим решениям здесь является предварительно созданной копией winutil.exe. Загрузите его и добавьте в $HADOOP_HOME/bin. Это работает для меня.
(Источник: Нажмите здесь)
Ответ 5
Вместо использования официальной ветки я бы предложил оптимизированные окна
http://svn.apache.org/repos/asf/hadoop/common/branches/branch-trunk-win/
Вам нужно скомпилировать его, создать winutils.exe под окнами и поместить его в каталог hadoop/bin
Ответ 6
У меня возникла проблема с Hadoop 2.4.1 на Windows 8.1; было несколько отличий от полученного решения, вызванного в основном новой ОС.
Сначала я установил двоичный файл Hadoop 2.4.1, распакуя его в% HADOOP_HOME%.
В предыдущих ответах описывается, как настроить Java, protobuf, cygwin и maven и необходимые переменные среды. Мне пришлось изменить переменную среды Платформа из нечетного значения BCD от HP.
Я загрузил источник из зеркала Apache и распаковал его в короткий каталог ( HADOOP_SRC= C:\hsrc). Maven побежал из стандартной командной строки Windows в этом каталоге: mvn package -DskipTests.
Вместо использования Windows 7 SDK (который я не мог загрузить) или SDK Windows 8.1 (у которого нет инструментов построения командной строки), я использовал бесплатный Microsoft Visual Studio Express 2013 для Windows Desktop. Для сборки Hadoop требуется место MSBuild (C:\Program Files (x86)\MSBuild\12.0) в PATH и требуется, чтобы различные исходные проекты Hadoop были обновлены до более нового (MS VS 2013) формата. Ошибки сборки maven были достаточно хороши, чтобы указать абсолютный путь каждого проекта, так как он провалился, что упростило загрузку проекта в Visual Studio (который автоматически преобразуется после запроса).
После создания я скопировал собственные исполняемые файлы и библиотеки в каталог bin Hadoop. Они были созданы в% HADOOP_SRC%\hadoop-common-project\hadoop-common\target\bin и должны быть скопированы в% HADOOP_HOME%\bin.
Ответ 7
Добавьте файл hadoop.dll(зависит от версии) в каталог system32 в каталоге Windows.
Вы можете получить hasoop.dll в winutils
Ответ 8
Добавление hadoop.dll и hdfs.dll в папку% HADOOP_HOME%\bin сделало трюк для меня.
Ответ 9
Просто установлен Hadoop 2.2.0 в моей среде win7 X64.
следующий файл BUILD.txt заставляет меня сделать это. Обратите внимание, что: dir в hdfs-site.xml и mapred-site.xml начинается с/как ниже
например
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop-2.2.0_1/dfs/name</value>
<description></description>
<final>true</final>
Может помочь u!
Ответ 10
Вам может потребоваться скопировать файлы hadoop.dll и winutils.exe из hadoop-common-bin в% HADOOP_HOME%\bin
Добавьте% HADOOP_HOME%/bin к переменной% PATH%.
Вы можете скачать hadoop-common из https://github.com/amihalik/hadoop-common-2.6.0-bin
Ответ 11
Download и установить Java в c:/java/
убедитесь, что путь указан таким образом, если java установлен в 'program files ', то hasoop-env.cmd не распознает путь Java
Загрузить Бинарный дистрибутив Hadoop.
Я использую двоичное распределение Hadoop-2.8.1. Кроме того, я бы рекомендовал сохранить путь извлечения как можно короче
Установить переменные среды:
JAVA_HOME = "c:/Java"
HADOOP_HOME="<your hadoop home>"
Path= "JAVA_HOME/bin"
Path = "HADOOP_HOME/bin"
Hadoop будет работать над окнами, если Hadoop-src построен с использованием maven in ваш компьютер с окнами. Построение Hadoop-src (распространение) будет создайте двоичный дистрибутив Hadoop, который будет работать как родной для Windows версия.
Но если вы не хотите этого делать, загрузите предварительно построенный winutils of Hadoop distribution.
Вот ссылка GitHub, в которой есть winutils некоторых версий Hadoop.
если версия, которую вы используете, отсутствует в списке, выполните традиционный метод настройки Hadoop на окнах - ссылка
Если вы нашли свою версию, скопируйте все содержимое папки в путь:/bin/
Задайте все конфигурационные файлы .xml - Ссылка и задайте путь JAVA_HOME в файле hadoop-env.cmd
Из cmd перейдите к:
<HADOOP_HOME>/bin/> hdfs namenode -format
<HADOOP_HOME>/sbin> start-all.cmd
Надеюсь, что это поможет.