35

私は 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.「自作」パッケージをビルドするには、次のことを行いました。

  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」フォルダーにあります)。

4

13 に答える 13

18

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

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

  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 (リソース マネージャーおよびノー​​ド マネージャー) を開始します。

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 のビルド、インストール、構成、および実行

于 2013-11-03T21:07:03.533 に答える
15

Han は、Hadoop 2.2 Windows x64 バイナリ (彼のブログを参照)を準備し、それらを Github にアップロードしました

2つのバイナリwinutils.exeをフォルダーにhadoop.dll入れた後、同じ.%hadoop_prefix%\binUnsatisfiedLinkError

問題は、 の依存関係hadoop.dllが欠落していたことです。Dependency Walkerを使用してバイナリの依存関係を確認したところ、Microsoft Visual C++ 2010 Redistributablesが見つかりませんでした。

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

  • Java とネイティブ コードに同じアーキテクチャを使用するようにしてください。java -version32 または x64 を使用しているかどうかを示します。
  • 次に、Dependency Walker を使用して、すべてのネイティブ バイナリが純粋で同じアーキテクチャであることを確認します。x64 の依存関係が失われ、Windows が x86 にフォールバックすることがありますが、これは機能しません。別の質問の回答を参照してください。
  • また、ネイティブ バイナリのすべての依存関係が満たされているかどうかも確認します。
于 2014-05-30T16:25:23.657 に答える
8

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

(出典:ここをクリック

于 2014-12-10T06:41:46.880 に答える
4

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

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

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

于 2013-10-04T14:32:10.160 に答える
3

Windows 8.1 の Hadoop 2.4.1 でも同じ問題に遭遇しました。結果として得られるソリューションには、主に新しい OS が原因でいくつかの違いがありました。

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

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

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

Windows 7 SDK (ロードできませんでした) または Windows 8.1 SDK (コマンド ライン ビルド ツールがない) を使用する代わりに、無料のMicrosoft Visual Studio Express 2013 for Windows Desktopを使用しました。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にコピーする必要がありました。

于 2014-08-04T05:11:18.333 に答える
0

複数の試行錯誤の後、以下のソリューションで動作するようになりました。

ウィンドウの変更:

  1. https://github.com/steveloughran/winutilswinutilsからzip をダウンロードします。
  2. zip を に解凍しC:\winutilsます。
  3. 画面を開きWindows Environment Variables、以下を追加しますSystem Variable

HADOOP_HOME = C:\winutils\hadoop-3.0.0

  1. システム変数の下Pathに追加

%HADOOP_HOME%\bin 5. システムを再起動します。

Maven の変更:

  <properties>

    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

    <scala.version>2.12</scala.version>
    <spark.version>3.0.1</spark.version>
    <hadoop.version>3.0.0</hadoop.version>  <!-- Note: HADOOP Version used is the one available for winutils -->

  </properties>

  <dependencies>

    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_${scala.version}</artifactId>
      <version>${spark.version}</version>
<!--  <scope>provided</scope> -->
    </dependency>

    <!-- Hadoop-->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>${hadoop.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${hadoop.version}</version>
    </dependency>

    <!-- For S3 Read (optional) -->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-aws</artifactId>
      <version>${hadoop.version}</version>
    </dependency>
于 2020-11-22T09:21:27.687 に答える
0

Java をダウンロードしてインストールするc:/java/

パスがこのようになっていることを確認してください。Java が「プログラム ファイル」にインストールされている場合、hadoop-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 -srcが Windows マシンで maven を使用してビルドされている場合、 Hadoop は Windows で動作します。Hadoop-src (ディストリビューション) をビルドすると、Windows ネイティブ バージョンとして機能する Hadoop バイナリ ディストリビューションが作成されます。

しかし、それをしたくない場合は、Hadoop の一部のバージョンの winutils が含まれているビルド済みのwinutils of Hadoop distribution. GitHubリンクをダウンロードしてください。

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

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

すべての .xml 構成ファイルを設定します - hadoop-env.cmd ファイルに JAVA_HOME パスをリンクして設定します

cmd から次の場所に移動します。

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

お役に立てれば。

于 2017-12-05T08:41:07.647 に答える
0

私の環境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>

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

于 2013-10-29T06:19:03.097 に答える