hadoopバイナリパスでwinutilsバイナリを見つけることができませんでした


108

最新のhadoop-2.2リリースでnamenodeを開始すると、次のエラーが発生します。hadoop binフォルダーにwinutils exeファイルが見つかりませんでした。以下のコマンドを試してみました

$ bin/hdfs namenode -format
$ sbin/yarn-daemon.sh start resourcemanager

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.java:863)


そのエラーメッセージを取り除くために、私は-Dhadoop.home.dirを意味のある値に設定しました。今、私は次のようなものを得ています(変数名で置き換えられたローカルパス):Hadoopバイナリで実行可能な$ {HADOOP_HOME} \ bin \ winutils.exeを見つけることができませんでした。そして、何を推測します。変数を設定しても、そのバイナリは表示されませんでした。また、アプリケーションが継続しているように見えるため、優先度ERRORが間違っています。私の目には、Hadoop 2.2.0のバグです。
Hiran

この>のためのJIRA(今日オープンの通り)がありissues.apache.org/jira/browse/HADOOP-10051
ルネNyffenegger


1
Prasad Dからの回答を受け入れてください。彼は使用する既製のファイルを提供しています。したがって、努力を避けます。
Kaushik Lele

回答:


96

簡単な解決策:ここからダウンロードして追加$HADOOP_HOME/bin

出典

重要な更新:

以下のためのHadoop-2.6.0あなたはからバイナリをダウンロードすることができタイタスBarikのブログ>>

HADOOP_HOME抽出されたディレクトリを指すだけでなく[path]-Djava.library.path=[path]\binネイティブlibs(dll)をロードするためのシステムプロパティも提供する必要があります。


これはhdfsを開始するのに役立ちますが、テキストファイルをhdfsに入れようとすると、スレッド "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsBy teArray(II [BI [BIILjava / lang / String; JZ)V
Kaushik Lele

それは私の答えの一部が重複しています。回答で述べたように、ダウンロードとソースの両方が私のブログのリンクです。
Abhijit

1
これはHadoop 2.7.3でも機能するようです。それとも問題がありますか?1)上記のページからダウンロードしてください。Hadoop 2.6ディストリビューションを提供するtar xfvz。次に、bin \ winutlis.exeを2.73 \ binディレクトリにコピーします。すぐに動作します。これまでのところ-少なくとも。
RichMeister 2016年

28

Sparkで自己完結型のローカルアプリケーションを実行しているときにこの問題に直面した場合(つまり、spark-assembly-xxx-hadoopx.xxjarまたはMavenの依存関係をプロジェクトに追加した後)、winutils.exe(ダウンロードここから) "C:\ winutil \ bin"内。次に、次の行をコードに追加して、winutils.exeをhadoopホームディレクトリに追加できます。

System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")

出典:クリックしてここに


私にとっては、winutilsをに入れるだけで十分でしたhadoop/bin/bin/。そのため、hadoopのbinフォルダーにwinutilsフォルダーをコピーするだけbinです。(HADOOP_HOME
環境

1、私は自分のためにここにこれを残しているので、1つのあまりにも多くのスラッシュは、ディレクトリパスにあります:System.setProperty("hadoop.home.dir", "c:\\winutil\\")
emragins

27

Apache Hadoop 2.2.0リリースのバイナリディストリビューションを直接取得してMicrosoft Windowsで実行しようとすると、ERROR util.Shell:hadutilバイナリバイナリがhadoopバイナリパスで見つかりません。

Apache Hadoop 2.2.0リリースのバイナリディストリビューションには、一部のWindowsネイティブコンポーネント(winutils.exe、hadoop.dllなど)が含まれていません。これらは、WindowsでHadoopを実行するために必要です(オプションではありません)。

したがって、hadoopのソースディストリビューション内にある「BUILD.txt」ファイルに続くソースコードから、hadoopのWindowsネイティブバイナリディストリビューションをビルドする必要があります。スクリーンショット付きのステップバイステップガイドについては、以下の投稿もフォローできます

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

エラーutil.Shell:hadoopバイナリパスでwinutilsバイナリを見つけることができませんでした


2
こんにちはアビジット。自分の指示に従いましたか?HadoopはWindowsではサポートされていません。実際には、特定のバージョンのWindows Serverでのみサポートされています。それはマイクロソフトとHortonWorksによって非常にひどいです。
javadba 14年

2
それは2年以上前のことであり、当時(非常に!)非常に真実でした。会議の2週間前にHortonworksのエンジニアと直接確認しました。
javadba

18

ステートメントjava.io.IOException:実行可能null \ bin \ winutils.exeが見つかりませんでした

環境変数を拡張または置換するときにnullが受信されることを説明します。共通パッケージのShell.Javaのソースが表示される場合は、HADOOP_HOME変数が設定されておらず、代わりにnullが返されているため、エラーが発生しています。

したがって、HADOOP_HOMEを適切に設定するか、変数hadoop.home.dirプロパティを設定する必要があります。

お役に立てれば。

ありがとう、カメルシュワール。


1
hadoop.home.dirプロパティを設定する必要がある構成ファイル(例:hdfs-site.xml、core-site.xml)?
Tushar Sarde 2014

4
System.setProperty( "hadoop.home.dir"、 "C:\\ winutil \\"); 参照:stackoverflow.com/a/33610936/3110474
Himanshu Bhandari

Windowsを使用している場合は、パスを値として書き込むときは、必ず二重円記号を使用してください。
rishirich

12

Winutils.exeは、SPARKのシェルコマンドを実行するために使用されます。HadoopをインストールせずにSparkを実行する必要がある場合は、このファイルが必要です。

手順は次のとおりです。

  1. Hadoopの2.7.1のための次の場所からwinutils.exeをダウンロード https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin [注:独立したHadoopのバージョンを使用している場合は、ダウンロードしてください上記の場所からのGITHUB上の対応するhadoopバージョンフォルダーからのwinutils。]

  2. 次に、C:\ドライブに「winutils」フォルダを作成します。次に、「winutils」フォルダ内に「bin」フォルダを作成し、そのフォルダにwinutils.exeをコピーします。したがって、winutils.exeの場所はC:\ winutils \ bin \ winutils.exeになります。

  3. さて、環境変数とセットHADOOP_HOME = Cオープン:\ winutils [注:追加しないでください \ binにHADOOP_HOMEとパスで設定HADOOP_HOMEする必要はありません]を

問題を解決する必要があります!!


11

私はEclipseで作業中にこの問題に遭遇しました。私の場合、正しいHadoopバージョン(hadoop-2.5.0-cdh5.3.0.tgz)をダウンロードし、コンテンツを抽出してCドライブに直接配置しました。それから私は行きました

Eclipse-> Debug / Run Configurations-> Environment(tab)-> and added

変数:HADOOP_HOME

値:C:\ hadoop-2.5.0-cdh5.3.0


7

ここからwinutils.exeをダウンロードできます:http ://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe

次に、それをHADOOP_HOME/binディレクトリにコピーします。


3

Pysparkでは、Pycharmを使用してローカルのSparkアプリケーションを実行するには、以下の行を使用します

os.environ['HADOOP_HOME'] = "C:\\winutils"
print os.environ['HADOOP_HOME']

2

winoops.exeは、hadoopがhadoop関連のコマンドを実行するために必要です。hadoop-common-2.2.0 zipファイルをダウンロードしてください。winutils.exeはbinフォルダーにあります。zipファイルを抽出し、ローカルのhadoop / binフォルダーにコピーします。


2

私も同じ問題に直面していました。bin\HADOOP_HOMEパスからを削除することで解決しました。HADOOP_HOME変数のパスは次のようになります。

C:\dev\hadoop2.6\

システムの再起動が必要になる場合があります。私の場合、IDEを再起動するだけで十分です。


2

問題を解決するには、WindowsでHADOOP_HOME変数を設定します

あなたは答えを見つけることができますorg/apache/hadoop/hadoop-common/2.2.0/hadoop-common-2.2.0-sources.jar!/org/apache/hadoop/util/Shell.java

からのIOException

  public static final String getQualifiedBinPath(String executable) 
  throws IOException {
    // construct hadoop bin path to the specified executable
    String fullExeName = HADOOP_HOME_DIR + File.separator + "bin" 
      + File.separator + executable;
    File exeFile = new File(fullExeName);
    if (!exeFile.exists()) {
      throw new IOException("Could not locate executable " + fullExeName
        + " in the Hadoop binaries.");
    }
    return exeFile.getCanonicalPath();
  }

からのHADOOP_HOME_DIR

// first check the Dflag hadoop.home.dir with JVM scope
String home = System.getProperty("hadoop.home.dir");
// fall back to the system/user-global env variable
if (home == null) {
  home = System.getenv("HADOOP_HOME");
}


1

Windowsでも同じ問題が発生していました。私はそれを修正しました

  • linkからhadoop-common-2.2.0-bin-masterをダウンロードしています。
  • 環境変数にユーザー変数HADOOP_HOMEを作成し、hadoop-common binディレクトリのパスを値として割り当てます。
  • cmdでhadoopを実行することで確認できます。
  • IDEを再起動して実行します。

1

このリンクから必要なバージョンのhadoopフォルダー(WindowsにSparkをインストールしてから、Sparkのビルド用のHadoopバージョンをインストールする場合など)をzipとしてダウンロードします。

zipを目的のディレクトリに解凍します。に含まれるすべてのファイルを含む形式のディレクトリhadoop\bin(必要に応じて明示的にそのようなhadoop\binディレクトリ構造を作成)が必要です。binbinダウンロードしたhadoopのフォルダーに。これには、winutil.exeに加えて、hdfs.dll、hadoop.dllなどの多くのファイルが含まれます。

次に、環境変数 HADOOP_HOME作成し、に設定し<path-to-hadoop-folder>\hadoopます。次に、環境変数に追加 ;%HADOOP_HOME%\bin;PATHます。

「新しいコマンドプロンプト」を開き、コマンドを再実行してください。


これは私にとってはうまくいき、HADOOP_HOMEが(親ではなく)binディレクトリーを指す代替はうまくいきませんでした。
philwalk

0

「hbase-1.3.0」と「hadoop-2.7.3」のバージョンを使用しました。HADOOP_HOME環境変数を設定し、「winutils.exe」ファイルをHADOOP_HOME / binフォルダーの下にコピーすると、Windows OSでの問題が解決します。HADOOP_HOME環境をhadoopのインストールフォルダーに設定することに注意してください(これらのバージョンでは、/ binフォルダーは必要ありません)。さらに、Hbaseチームがlinux / unix envを推奨しているため、クロスプラットフォームツールcygwinを使用して(可能な限り)Linux OS機能を解決することを推奨しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.