私は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」パッケージをビルドするために、次のことを行いました。
環境をセットアップします。
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%
構築プロセスの実行:
mvnパッケージ-Pdist -DskipTests
「skipTests」なしで試すことができますが、私のマシンではいくつかのテストが失敗し、ビルドは終了しました。 BUILDING .txtに記載されているサイボリックリンクの問題に関連している可能性があります。 8. hadoop-dist\target\hadoop-2.1.0-betaで結果を選択しました(Windowsの実行可能ファイルとdllは「bin」フォルダーにあります)
次の手順に従ってHadoop 2.2.0をインストールしました
Windows用のHadoop binディストリビューションを構築する手順
Microsoft Windows SDK v7.1をダウンロードしてインストールします。
UnixコマンドラインツールCygwinをダウンロードしてインストールします。
Maven 3.1.1をダウンロードしてインストールします。
Protocol Buffers 2.5.0をダウンロードし、フォルダー(c:\ protobufなど)に抽出します。
環境変数Java_HOME、M2_HOME、およびPlatformを追加します(まだ追加されていない場合)。注:変数名プラットフォームでは大文字と小文字が区別されます。また、64ビットまたは32ビットシステムでビルドする場合、値はx64またはWin32になります。パス変数を編集して、Cygwinのbinディレクトリ(C:\ cygwin64\binなど)、Mavenのbinディレクトリ(C:\ maven\binなど)、およびプロトコルバッファーのインストールパス(c:\ protobufなど)を追加します。
Hadoop-2.2.0-src.tar.gzをダウンロードし、短いパス(c:\ hdfsなど)を持つフォルダーに抽出して、Windowsの最大パス長制限による実行時の問題を回避します。
[スタート]-> [すべてのプログラム]-> [Microsoft Windows SDK v7.1]を選択し、Windows SDK 7.1コマンドプロンプトを開きます。ディレクトリをHadoopソースコードフォルダー(c:\ hdfs)に変更します。オプション-Pdist、native-win -DskipTests -Dtarを指定してmvnパッケージを実行し、Windowsバイナリtarディストリビューションを作成します。
前の手順ですべてがうまくいけば、ネイティブ配布hadoop-2.2.0.tar.gzがC:\ hdfs\hadoop-dist\target\hadoop-2.2.0ディレクトリ内に作成されます。
Hadoopのインストール
Hadoop-2.2.0.tar.gzをフォルダー(c:\ hadoopなど)に抽出します。
環境変数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をビルド、インストール、構成、実行
私は同じ問題を抱えていましたが、最近のhadoop v。2.2.0で問題が発生しました。その問題を解決するための私の手順は次のとおりです。
ソースから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のビンに入れます。
次に、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を実行してください!
私の手順が誰かを助けることを願っています。
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 -version
は、32を使用するかx64を使用するかを示します。Hadoop.dll(バージョン依存)をWindowsディレクトリの下のsystem32ディレクトリに追加してください。
Hadoop.dllは winutils で取得できます
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 からダウンロードできます。
公式ブランチを使用する代わりに、最適化されたウィンドウをお勧めします
http://svn.Apache.org/repos/asf/hadoop/common/branches/branch-trunk-win/
コンパイルして、Windowsでwinutils.exeをビルドし、hadoop/binディレクトリに配置する必要があります。
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にコピーする必要がありました。
Hadoop.dllとhdfs.dllを%HADOOP_HOME%\ binフォルダーに追加すると、うまくいきました。
私の環境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>
あなたを助けるかもしれません!
ダウンロード &インストール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
お役に立てれば。
winutils.exe
およびhadoop.dll
を含む)Hadoop\binが[〜#〜] path [〜#〜](サービスとして実行する場合のシステムPATH)を介して利用できることを確認してください
Java.library.path
overridesPATH
を設定することに注意してください。 Java.library.path
を設定する場合、それが正しいこととhadoopライブラリを指していることを確認してください。