web-dev-qa-db-ja.com

WindowsでのApache Hadoop 2.1.0の実行

私はHadoopを初めて使用し、Windows 7マシンで実行しようとすると問題が発生しました。特に、Hadoop 2.1.0の実行に興味があります リリースノート には、Windows上での実行がサポートされていると書かれています。 WindowsでCygwinを使用して1.xバージョンを実行したり、準備済みのVMをClouderaで使用したりすることもできますが、これらのオプションは何らかの理由であまり便利ではありません。

http://Apache-mirror.rbc.ru/pub/Apache/hadoop/common/hadoop-2.1.0-beta/ からtarballを調べたところ、本当にCygwinなしで実行できる* .cmdスクリプトがいくつかあります。 HDFSパーティションをフォーマットしたときはすべて正常に機能しましたが、hdfs namenodeデーモンを実行しようとすると、2つのエラーに直面しました。 Apache Hadoopソースツリーでこのコンポーネントのソースを見つけ、Microsoft SDKとMSbuildでコンパイルしました。詳細なエラーメッセージのおかげで、Hadoopを満たすために実行可能ファイルを配置する場所が明確になりました。しかし、致命的な2番目のエラーには、解決するのに十分な情報が含まれていません。

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

他の何かをコンパイルする必要があるように見えます。 Mavenを使用してソースからHadoopを構築しようとしていますが、もっと簡単な方法はありませんか?ネイティブコードを無効にして、そのtarballをWindowsで使用できるようにするオプションはありませんか?

ありがとうございました。

更新しました。はい、確かに。 「Homebrew」パッケージにはいくつかの余分なファイルが含まれており、最も重要なのはwinutils.exeとhadoop.dllです。このファイルを使用して、namenodeとdatanodeが正常に開始されました。質問は閉じられると思います。誰かが同じ困難に直面した場合のために、私はそれを削除しませんでした。

更新2.「homebrew」パッケージをビルドするために、次のことを行いました。

  1. ソースを入手し、展開しました。
  2. BUILDING.txtを注意深くお読みください。
  3. インストール済みの依存関係:
    3a)Windows SDK 7.1
    3b)Maven(3.0.5を使用)3c)JDK(1.7.25を使用)
    3d)ProtocolBuffer(2.5.0を使用しました- http://protobuf.googlecode.com/files/protoc-2.5.0-win32.Zip )。コンパイラー(protoc.exe)をいくつかのPATHフォルダーに入れるだけで十分です。
    3e)UNIXコマンドラインツールのセット(Cygwinをインストールしました)
  4. Windows SDKのコマンドラインを開始しました。スタート|すべてのプログラム| Microsoft Windows SDK v7.1 | ...コマンドプロンプト(このショートカットを変更し、コマンドラインにオプション/ releaseを追加して、ネイティブコードのリリースバージョンをビルドしました)。次のすべてのステップは、SDKコマンドラインウィンドウ内から行われます)
  5. 環境をセットアップします。

    java_HOME = {path_to_JDK_root}を設定します

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%  
  1. Dirをソースのルートフォルダーに変更しました(BUILDING.txtは、パスの長さに制限があるため、ソースのルートには短い名前が必要であると警告しています-D:\ hdsを使用しました)
  2. 構築プロセスの実行:

    mvnパッケージ-Pdist -DskipTests

「skipTests」なしで試すことができますが、私のマシンではいくつかのテストが失敗し、ビルドは終了しました。 BUILDING .txtに記載されているサイボリックリンクの問題に関連している可能性があります。 8. hadoop-dist\target\hadoop-2.1.0-betaで結果を選択しました(Windowsの実行可能ファイルとdllは「bin」フォルダーにあります)

33
Hatter

次の手順に従ってHadoop 2.2.0をインストールしました

Windows用のHadoop binディストリビューションを構築する手順

  1. Microsoft Windows SDK v7.1をダウンロードしてインストールします。

  2. UnixコマンドラインツールCygwinをダウンロードしてインストールします。

  3. Maven 3.1.1をダウンロードしてインストールします。

  4. Protocol Buffers 2.5.0をダウンロードし、フォルダー(c:\ protobufなど)に抽出します。

  5. 環境変数Java_HOME、M2_HOME、およびPlatformを追加します(まだ追加されていない場合)。注:変数名プラットフォームでは大文字と小文字が区別されます。また、64ビットまたは32ビットシステムでビルドする場合、値はx64またはWin32になります。パス変数を編集して、Cygwinのbinディレクトリ(C:\ cygwin64\binなど)、Mavenのbinディレクトリ(C:\ maven\binなど)、およびプロトコルバッファーのインストールパス(c:\ protobufなど)を追加します。

  6. Hadoop-2.2.0-src.tar.gzをダウンロードし、短いパス(c:\ hdfsなど)を持つフォルダーに抽出して、Windowsの最大パス長制限による実行時の問題を回避します。

  7. [スタート]-> [すべてのプログラム]-> [Microsoft Windows SDK v7.1]を選択し、Windows SDK 7.1コマンドプロンプトを開きます。ディレクトリをHadoopソースコードフォルダー(c:\ hdfs)に変更します。オプション-Pdist、native-win -DskipTests -Dtarを指定してmvnパッケージを実行し、Windowsバイナリtarディストリビューションを作成します。

  8. 前の手順ですべてがうまくいけば、ネイティブ配布hadoop-2.2.0.tar.gzがC:\ hdfs\hadoop-dist\target\hadoop-2.2.0ディレクトリ内に作成されます。

Hadoopのインストール

  1. Hadoop-2.2.0.tar.gzをフォルダー(c:\ hadoopなど)に抽出します。

  2. 環境変数HADOOP_HOMEを追加し、パス変数を編集してHADOOP_HOMEのbinディレクトリを追加します(C:\ hadoop\binなど)。

Hadoopの構成

C:\ hadoop\etc\hadoop\core-site.xml

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

C:\ hadoop\etc\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\etc\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またはYARNを起動します(リソースマネージャーおよびNode Manager)

C:\Users\abhijitg>cd c:\hadoop\sbin
c:\hadoop\sbin>start-yarn
starting yarn daemons

合計4つの個別のコマンドプロンプトウィンドウが自動的に開いて実行されますNamenode、Datanode、Resource Manager、Node Manager

参照: Microsoft Windows OSでApache Hadoop 2.2.0をビルド、インストール、構成、実行

17
Abhijit

私は同じ問題を抱えていましたが、最近のhadoop v。2.2.0で問題が発生しました。その問題を解決するための私の手順は次のとおりです。

  1. ソースからwinutils.exeを構築しました。プロジェクトディレクトリ:

    hadoop-2.2.0-src\hadoop-common-project\hadoop-common\src\main\winutils

    私のOS:Windows7。ビルド用のツール:Windowsデスクトップ用MS Visual Studio Express 2013(無料で、 http://www.Microsoft.com/visualstudio/ )。 Open Studio、File -> Open -> winutils.sln。右側のソリューションを右クリック-> Build。私の場合、いくつかのエラーがありました(プロジェクトプロパティの修正、出力フォルダーの指定が必要な場合があります)。ビオラ! winutils.exeを取得します-hadoopのビンに入れます。

  2. 次に、hadoop.dllをビルドする必要があります。ここにいくつかのoooooマジックがあります:オープン

    hadoop-2.2.0-src\hadoop-common-project\hadoop-common\src\main\native\native.sln

    mS VS;ソリューションを右クリック->ビルド。エラーがたくさんありました。いくつかの欠落したヘッダーファイルを手動で作成しました(ソース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

    そして最後に、ビルド操作によりhadoop.dllが生成されます!もう一度hadoopのbinに入れて、喜んでnamenodeを実行してください!

私の手順が誰かを助けることを願っています。

14
Aleksei Egorov

Hanは、Hadoop 2.2 Windows x64バイナリ( ブログ を参照)および Githubにアップロード を準備しました。

2つのバイナリを配置した後winutils.exeおよびhadoop.dll%hadoop_prefix%\binフォルダ、同じUnsatisfiedLinkErrorを取得しました。

問題は、hadoop.dllが欠落していました。 Dependency Walker を使用してバイナリの依存関係を確認し、 Microsoft Visual C++ 2010 Redistributables が欠落していました。

したがって、すべてのコンポーネントを自分で構築する以外に、問題に対する答えは

  • Javaとネイティブコードに同じアーキテクチャを使用するようにしてください。Java -versionは、32を使用するかx64を使用するかを示します。
  • dependency Walkerを使用して、すべてのネイティブバイナリが純粋で同じアーキテクチャであることを確認します。 x64依存関係が欠落している場合があり、Windowsはx86にフォールバックしますが、これは機能しません。 別の質問の回答 を参照してください。
  • また、ネイティブバイナリのすべての依存関係が満たされているかどうかを確認します。
14
Peter Kofler

Hadoop.dll(バージョン依存)をWindowsディレクトリの下のsystem32ディレクトリに追加してください。

Hadoop.dllは winutils で取得できます

6
futuredaemon

他のソリューションに加えて、 here はwinutil.exeのビルド済みコピーです。それをダウンロードして、$ HADOOP_HOME/binに追加します。わたしにはできる。

(出典: ここをクリック

6
Prasad D

hadoop.dllおよびwinutils.exeファイルをコピーする必要がある場合がありますhadoop-common-bin to%HADOOP_HOME%\ bin%HADOOP_HOME%/ binを%PATH%変数に追加します。

Hadoop-commonは https://github.com/amihalik/hadoop-common-2.6.0-bin からダウンロードできます。

4
Vikash Pareek

公式ブランチを使用する代わりに、最適化されたウィンドウをお勧めします

http://svn.Apache.org/repos/asf/hadoop/common/branches/branch-trunk-win/

コンパイルして、Windowsでwinutils.exeをビルドし、hadoop/binディレクトリに配置する必要があります。

4
Marco Seravalli

Windows 8.1上のHadoop 2.4.1でも同じ問題に遭遇しました。主に新しいOSによって引き起こされた結果のソリューションといくつかの違いがありました。

最初にHadoop 2.4.1バイナリをインストールし、%HADOOP_HOME%に解凍しました。

前の回答では、Java、protobuf、cygwin、およびmavenのセットアップ方法、および必要な環境変数について説明しました。 プラットフォーム環境変数をHPの奇数の「BCD」値から変更する必要がありました。

Apacheミラーからソースをダウンロードし、短いディレクトリに展開しました(HADOOP_SRC = C:\ hsrc)。 Mavenは、そのディレクトリの標準Windowsコマンドプロンプトmvn package -DskipTestsから正常に実行されました。

Windows 7 SDK(ロードできなかった)またはWindows 8.1 SDK(コマンドラインビルドツールがない)を使用する代わりに、無料のWindowsデスクトップ用Microsoft Visual Studio Express 201。 Hadoopのビルドには、PATHにMSBuildの場所(C:\ Program Files(x86)\ MSBuild\12.0)が必要であり、さまざまなHadoopネイティブソースプロジェクトを新しい(MS VS 2013)形式にアップグレードする必要がありました。 Mavenビルドの失敗は、失敗した各プロジェクトの絶対パスを指摘するのに十分であり、プロジェクトをVisual Studioに簡単に読み込むことができます(尋ねると自動的に変換されます)。

ビルドしたら、ネイティブの実行可能ファイルとライブラリをHadoop binディレクトリにコピーしました。これらは%HADOOP_SRC%\ hadoop-common-project\hadoop-common\target\binに構築されており、%HADOOP_HOME%\ binにコピーする必要がありました。

3
leifbennett

Hadoop.dllとhdfs.dllを%HADOOP_HOME%\ binフォルダーに追加すると、うまくいきました。

2
Kunal Kanojia

私の環境win7 X64にHadoop 2.2.0をインストールしました。

次のBUILD.txtを実行すると、私はそれを実行します。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>

あなたを助けるかもしれません!

1
Derry

ダウンロード &インストールJava in c:/Java/

Javaが 'program files'にインストールされている場合、hadoop-env.cmdはJava pathを認識しません

ダウンロード Hadoopバイナリ配布。

バイナリ配布Hadoop-2.8.1を使用しています。また、抽出パスをできるだけ短くすることをお勧めします

環境変数を設定します。

Java_HOME = "c:/Java"
HADOOP_HOME="<your hadoop home>"
Path= "Java_HOME/bin"
Path = "HADOOP_HOME/bin" 

Hadoop-src がWindowsマシンでmavenを使用して構築されている場合、HadoopはWindowsで動作します。 Hadoop-src (distribution)をビルドすると、Hadoopバイナリディストリビューションが作成され、Windowsネイティブバージョンとして機能します。

ただし、そうしたくない場合は、ビルド済みのwinutils of Hadoop distribution.これは GitHubリンク で、これにはHadoopの一部のバージョンのwinutilsが含まれています。

使用しているバージョンがリストにない場合、WindowsでHadoopをセットアップする従来の方法に従ってください- link

バージョンが見つかったら、フォルダーのすべてのコンテンツをコピーしてパスに貼り付けます:/ bin /

すべての.xml構成ファイルを設定します- Link &hadoop-env.cmdファイルでJava_HOMEパスを設定します

Cmdから:

<HADOOP_HOME>/bin/> hdfs namenode -format
<HADOOP_HOME>/sbin> start-all.cmd

お役に立てれば。

0
Raxit Solanki
  1. Get Hadoopバイナリ(winutils.exeおよびhadoop.dllを含む)
  2. Hadoop\binが[〜#〜] path [〜#〜](サービスとして実行する場合のシステムPATH)を介して利用できることを確認してください

    Java.library.pathoverridesPATHを設定することに注意してください。 Java.library.pathを設定する場合、それが正しいこととhadoopライブラリを指していることを確認してください。

0
rustyx