我发现了这个如何写入本地文件系统的示例,但它引发了以下异常:
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)
在Windows10上运行这个。我甚至尝试使用msysgitbashshell,认为这可能有助于jvm模拟chmod操作。什么都没变。对如何在windows上执行此操作有什么建议吗?
3条答案
按热度按时间du7egjpx1#
解决方案之一如下。
在项目结构(intelij)中,在sdk的下,确保没有其他版本的hadoop被引用。在我的例子中——我之前运行的是spark,它引用的是hadoop jar,这导致了访问问题。一旦我把它们移走,开始了mr的工作,一切都很好。
fykwrbwg2#
我也面临着这个错误,在遵循这些步骤之后,问题得到了解决(注意:我使用的是spark 2.0.2和hadoop 2.7)
验证是否获得“java.io.ioexception:在hadoop二进制文件中找不到可执行文件null\bin\winutils.exe”。您可以通过运行“sparkshell”命令来检查它。
我犯了上述错误。发生这种情况是因为我没有在environment var中添加“hadoop\u home”。在添加了“hadoop\u home”之后,在我的例子中与“spark\u home”相同,问题得到了解决。
4sup72z83#
在windows上只使用jar运行hadoop程序需要几个步骤,而不仅仅是引用jar。
赫尔辛基大学的卢教授为他的学生发布了一个hadoop-on-windows指南。
下面是我在使用windows 10和hadoop 2.7.3时必须采取的步骤:
下载hadoop二进制文件并将其解压到
C:\hadoop-2.7.3
.从下载修补程序文件https://github.com/srccodes/hadoop-common-2.2.0-bin/archive/master.zip 把它们提取到你的
%HADOOP_HOME%\bin
目录。设置
HADOOP_HOME
环境变量。例如,C:\hadoop-2.7.3
.下载hadoop源代码,复制
hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio\NativeIO.java
并修改第609行return access0(path, desiredAccess.accessRight());
到return true;