私たちはLinuxのhadoopクラスタを持っていますが、さまざまな理由からいくつかのWindowsクライアントがLinuxクラスタにデータを接続してプッシュしています。 hadoop1ではcygwin経由でhadoopを実行することができました しかし、hadoop2ではに記載されているように、cygwinは必須ではありません。LinuxクラスタのWindows上のHadoop2クライアント
質問を正確に何が変わったのか
- ?なぜクライアント(唯一)は cygwinの下で動かないのですか?他の考慮すべき点はパスとは別に演奏されていますか?別に仕事の提出については、以下のプロパティから
は、LinuxクラスタのHadoop-2.6.0-cdh5.5.2を抽出
conf.set("mapreduce.app-submission.cross-platform", "true");
との対話の窓/クライアントのために考慮する必要がある何か他のものがあります$ HADOOP_HOME/etcの正しい設定でcygwinから実行すると、いくつかのクラスパスまたはクラスパス形成の問題クラスが見つかりませんでしたか?彼らはcygwinのパスを含むように例えば次にクラスパスを見て次の実行
hdfs dfs -ls Error: Could not find or load main class org.apache.hadoop.fs.FsShell
が見えます。私の質問上記の私が試してみて、この問題を解決するために、さらに行くべきであるために
16/04/07 16:01:05 ERROR util.Shell: 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:378)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:393)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:386)
at org.apache.hadoop.util.GenericOptionsParser.preProcessForWindows(GenericOptionsParser.java:438)
at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions(GenericOptionsParser.java:484)
at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:170)
at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:153)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:64)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.fs.FsShell.main(FsShell.java:362)
16/04/07 16:01:13 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Warning: fs.defaultFs is not set when running "ls" command.
Found 15 items
-ls: Fatal internal error
java.lang.NullPointerException
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1010)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:505)
at org.apache.hadoop.util.Shell.run(Shell.java:478)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:738)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:831)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:814)
at org.apache.hadoop.fs.FileUtil.execCommand(FileUtil.java:1100)
at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.loadPermissionInfo(RawLocalFileSystem.java:582)
at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.getOwner(RawLocalFileSystem.java:565)
at org.apache.hadoop.fs.shell.Ls.adjustColumnWidths(Ls.java:139)
at org.apache.hadoop.fs.shell.Ls.processPaths(Ls.java:110)
at org.apache.hadoop.fs.shell.Command.recursePath(Command.java:373)
at org.apache.hadoop.fs.shell.Ls.processPathArgument(Ls.java:98)
at org.apache.hadoop.fs.shell.Command.processArgument(Command.java:271)
at org.apache.hadoop.fs.shell.Command.processArguments(Command.java:255)
at org.apache.hadoop.fs.shell.FsCommand.processRawArguments(FsCommand.java:118)
at org.apache.hadoop.fs.shell.Command.run(Command.java:165)
at org.apache.hadoop.fs.FsShell.run(FsShell.java:305)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.fs.FsShell.main(FsShell.java:362)
:jarファイルは、これは以下になり
in $HADOOP_HOME/etc/hdfs.sh locate the dfs command and change to
elif [ "$COMMAND" = "dfs" ] ; then
if $cygwin; then
CLASSPATH=`cygpath -p -w "$CLASSPATH"`
fi
CLASS=org.apache.hadoop.fs.FsShell
を見上げることができるように、Windowsのパスに変換しようとし私の既存のクライアントの.shスクリプトを再利用するか、あるいは.batを変換することができますか?
下で実行していないいくつかのコマンドをオフにするためのスクリプトを修正
hereを説明したパスにインストールする必要があります.batは命令の長さに関連するすべての制限を伴う悪夢になっています。クラスパスなど – sunny