2016-09-21 164 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;

相关问题