2016-09-21 161 views
4

I found this example上的Hadoop序列文件,但它引發此異常:無法創建本地文件系統如何寫入本地文件系統

Exception in thread "main" java.io.IOException: (null) entry in command string: null chmod 0644 C:\temp\test.seq 
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:770) 
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:866) 
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:849) 
    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:733) 
    at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:225) 
    at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:209) 
    at org.apache.hadoop.fs.RawLocalFileSystem.createOutputStreamWithMode(RawLocalFileSystem.java:307) 
    at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:296) 
    at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:328) 
    at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSOutputSummer.<init>(ChecksumFileSystem.java:398) 
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:461) 
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:440) 
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:911) 
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:892) 
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:789) 
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:778) 
    at org.apache.hadoop.io.SequenceFile$Writer.<init>(SequenceFile.java:1168) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 

在Windows 10箱運行此。我甚至嘗試使用msys git bash shell,可能會幫助JVM模擬chmod操作。沒有改變任何東西。有關如何在Windows上執行此操作的任何建議?

+0

Hadoop的罐子應該是在具有可訪問HDFS的hadoop MR程序的類路徑。如何在這些罐子上運行獨立的java程序 – mangusta

回答

4

我也遇到這個錯誤,這是繼步驟後解決。 (注:我使用的Spark 2.0.2和Hadoop 2.7)

  1. 驗證你是否得到 「產生java.io.IOException:在Hadoop的二進制文件無法找到可執行空\ BIN \ winutils.exe」。您通過運行「spark-shell」命令來檢查它。
  2. 我得到了上述的錯誤。這是因爲我沒有在環境變量中添加「HADOOP_HOME」。添加「HADOOP_HOME」,在我的情況一樣「SPARK_HOME」後,這個問題就解決了。
2

在Windows上只使用jar來運行Hadoop程序需要幾個步驟,而不僅僅是引用jar。

感謝Professor Lu在赫爾辛基大學張貼了他的學生一個Hadoop on Windows guide

下面是步驟,我使用的是Windows 10和Hadoop 2.7.3採取破敗:

  1. 下載並解壓縮的Hadoop的二進制文件到地方,比如C:\hadoop-2.7.3

  2. https://github.com/srccodes/hadoop-common-2.2.0-bin/archive/master.zip下載補丁文件並將其提取到您的%HADOOP_HOME%\bin目錄。

  3. 設置一個HADOOP_HOME環境變量。例如,C:\hadoop-2.7.3

  4. 下載Hadoop的源代碼,從

    return access0(path, desiredAccess.accessRight());

    複製hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio\NativeIO.java到您的項目,並修改線路609

    return true;

相關問題