私は Hadoop を初めて使用し、Windows 7 マシンで Hadoop を実行しようとして問題に遭遇しました。特に、Hadoop 2.1.0 のリリース ノートには、Windows での実行がサポートされていると記載されているため、Hadoop 2.1.0 の実行に関心があります。Cygwin を使用して Windows で 1.x バージョンを実行したり、Cloudera などで準備された VM を使用したりできることはわかっていますが、これらのオプションはいくつかの理由であまり便利ではありません。
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 が正常に起動しました。質問は締め切らせていただきます。誰かが同じ問題に直面した場合に備えて、削除しませんでした。
UPDATED 2.「自作」パッケージをビルドするには、次のことを行いました。
- ソースを入手し、解凍しました。
- BUILDING.txt をよく読んでください。
- インストールされた依存関係:
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 をインストールしました) - Windows SDK のコマンドラインを開始しました。スタート | すべてのプログラム | Microsoft Windows SDK v7.1 | ... コマンド プロンプト (このショートカットを変更し、コマンド ラインにオプション /release を追加して、ネイティブ コードのリリース バージョンをビルドしました)。次のすべてのステップは、SDK コマンド ライン ウィンドウ内から実行されます)。
環境をセットアップします。
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%
- dir をソース ルート フォルダに変更しました (BUILDING.txt は、パスの長さにいくつかの制限があるため、ソース ルートには短い名前を付ける必要があると警告しています - 私は D:\hds を使用しました)
構築プロセスを実行しました:
mvn パッケージ -Pdist -DskipTests
「skipTests」なしで試すことができますが、私のマシンではいくつかのテストが失敗し、ビルドが終了しました。BUILDING .txt に記載されているシンボリック リンクの問題に関連している可能性があります。8. hadoop-dist\target\hadoop-2.1.0-beta で結果を取得します (Windows の実行可能ファイルと dll は「bin」フォルダーにあります)。