最新の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)
簡単な解決法: ここ からダウンロードして$HADOOP_HOME/bin
に追加
(出典: ここをクリック )
編集:
hadoop-2.6.0の場合は、 Titus Barikブログ>> からバイナリをダウンロードできます。
HADOOP_HOME
を抽出ディレクトリ[path]
に指定するだけでなく、ネイティブlibs(dll)をロードするためのシステムプロパティ-Djava.library.path=[path]\bin
も提供する必要があります。
Apache Hadoop 2.2.0リリースのバイナリ配布を直接取得してMicrosoft Windowsで実行しようとすると、エラーutil.Shellが発生します。hadoopバイナリパスでwinutilsバイナリを見つけられませんでした。
Apache Hadoop 2.2.0リリースのバイナリ配布には、いくつかのWindowsネイティブコンポーネント(winutils.exe、hadoop.dllなど)は含まれていません。これらはWindows上でHadoopを実行するために必要です(オプションではありません)。
だからあなたはhadoopのソース配布の中にある "BUILD.txt"ファイルに続くソースコードからhadoopのウィンドウズネイティブバイナリ配布を構築する必要があります。あなたはスクリーンショットでステップバイステップガイドのために同様に以下のポストに従うことができます
Microsoft Windows OSでApache Hadoop 2.2.0をビルド、インストール、設定、および実行する
ステートメントJava.io.IOException:実行可能なnull\bin\winutils.exeが見つかりませんでした
環境変数を展開または置換するときにnullを受け取ることを説明します。 Common PackageのShell.JavaにSourceが表示されている場合は、HADOOP_HOME変数が設定されておらず、その代わりにnullを受け取っているため、エラーが発生しています。
そのため、HADOOP_HOMEを正しく設定するか、変数hadoop.home.dirを設定する必要があります。
お役に立てれば。
ありがとう、Kamleshwar。
私はEclipseの作業中にこの問題に遭遇しました。私の場合は、正しいバージョンのHadoopをダウンロードし(hadoop-2.5.0-cdh5.3.0.tgz)、内容を抽出して直接Cドライブに入れました。それから私は行きました
Eclipse - >デバッグ/実行構成 - >環境(タブ) - >と追加
変数:HADOOP_HOME
値:C:\ hadoop-2.5.0-cdh5.3.0
あなたはここwinutils.exeをダウンロードすることができます: http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe
それをHADOOP_HOME/bin
ディレクトリにコピーしてください。
Pysparkで、Pycharmを使ってローカルのsparkアプリケーションを実行するには、以下の行を使います。
os.environ['HADOOP_HOME'] = "C:\\winutils"
print os.environ['HADOOP_HOME']
winotils.exeは、hadoopがhadoop関連のコマンドを実行するために必要です。 hadoop-common-2.2.0 Zipファイルをダウンロードしてください。 winutils.exeはbinフォルダーにあります。 Zipファイルを解凍し、ローカルのhadoop/binフォルダにコピーします。
version
/ bin私は同じ問題に直面していました。 HADOOP_HOMEパスからbin\
を削除することで解決しました。 HADOOP_HOME変数のパスは次のようになります。
C:\dev\hadoop2.6\
システムの再起動が必要になる場合があります。私の場合、IDEを再起動するだけで十分です。
問題を解決するには、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");
}
Zipとして この リンクからhadoopフォルダの所望のバージョンをダウンロードします(あなたがWindowsにsparkをインストールしているならば、あなたのsparkが構築されているhadoopバージョンを言う)。
Zipを任意のディレクトリに解凍します。ダウンロードしたhadoopのbin
フォルダーに含まれるすべてのファイルを含むbin
という形式のhadoop\bin
(必要に応じて明示的にこのようなhadoop\bin
ディレクトリ構造を作成する)のディレクトリを用意する必要があります。これはwinutil.exeに加えてhdfs.dll、hadoop.dllなどのような多くのファイルを含みます。
今 環境変数HADOOP_HOME
を作成し、それを<path-to-hadoop-folder>\hadoop
に設定します。それから 環境変数PATH
に;%HADOOP_HOME%\bin;
を追加します。
「新しいコマンドプロンプト」を開き、コマンドを再実行してください。
Winutils.exeはSPARKのシェルコマンドを実行するために使用されます。 HadoopをインストールせずにSparkを実行する必要がある場合は、このファイルが必要です。
手順は次のとおりです。
次の場所からwinotil 2.7.1のwinutils.exeをダウンロードしてください https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin [注:使用している場合別のhadoopバージョンはそれからGITHUB上の対応するhadoopバージョンフォルダから上記の場所からwinutilsをダウンロードしてください。
さて、C:\ドライブにフォルダ 'winutils'を作成します。フォルダ 'winutils'内にフォルダ 'bin'を作成し、そのフォルダにwinutils.exeをコピーします。そのため、winutils.exeの場所はC:\ winutils\bin\winutils.exeになります。
これで、環境変数を開き、HADOOP_HOME = C:\ winutil [注:追加しないでください\ binをHADOOP_HOMEに設定し、PathにHADOOP_HOMEを設定する必要がなくなりました。 ]
あなたの問題は解決されなければなりません!
私は窓でも同じ問題を抱えていました。私はそれを修正しました
私は "hbase-1.3.0"と "hadoop-2.7.3"バージョンを使いました。 HADOOP_HOME環境変数を設定し、HADOOP_HOME/binフォルダの下の 'winutils.exe'ファイルをコピーすると、Windows osでの問題が解決します。 HADOOP_HOME環境をhadoopのインストールフォルダーに設定することに注意してください(これらのバージョンでは/ binフォルダーは必要ありません)。 Hbaseチームはlinux/unix envを推奨しているので、私はクロスプラットフォームのツール cygwin を使って(可能な限り)Linux OSの機能を解決することを好みました。