Hadoop 2.2 で簡単な JUnit テストを実行しようとしています。私のWindows 7マシンで。http://grepalex.com/2012/10/20/hadoop-unit-testing-with-minimrcluster/でサンプルテストを利用できるので、ClusterMapReduceTestCase を基本クラスとして使用して MiniDFSCluster を開始します。
私が取得しているテストを実行すると(コンソールで):
2013-11-15 11:59:24,636 ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Hadoop バイナリ パス java.io.IOException で winutils バイナリを見つけられませんでした: 実行可能な null が見つかりませんでしたHadoop バイナリの \bin\winutils.exe。org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278) で org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300) で org.apache.hadoop.util.Shell.( Shell.java:293) org.apache.hadoop.util.StringUtils.(StringUtils.java:76) で (...)
そしてJUnit出力で:
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) ) org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:435) で org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:996) で org.apache.hadoop. hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:451) org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:282) org.apache.hadoop.hdfs. server.namenode.FSImage.recoverTransitionRead(FSImage.java:200) (...)
次のスレッドを読みました: Failed to locate the winutils binary in the hadoop binary path and Running Apache Hadoop 2.1.0 on Windows /p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-osおよびhttp://www.srccodes.com/p/article/39/error-util-shell -failed-locate-winutils-binary-hadoop-binary-path
残念ながら、JUnit テストの場合、これは機能しません。junit テストを作成する場合、開発環境から独立させたい (すべての開発マシンで問題なく実行できるようにするため)。したがって、私はmavenを使用しており、必要なライブラリを自分で構築してHadoop binフォルダーなどに配置したくありません。
この場合の最善の解決策は何ですか?