win10 下hadoop文件操作异常解决办法

    小编在win10下进行简单的hadoop开发,没有在eclipse安装插件的情况下出现了不能依赖本地windos系统库而引发的异常。

    代码如下:

    

* @liukang
 *
 */
public class HDFSClientDemo
{
	FileSystem fileSystem = null;
	Configuration conf = null;

	@Before
	public void init() throws Exception
	{

		conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://mini1:9000");

		// 拿到一个文件系统操作的客户端实例对象
		 fileSystem = FileSystem.get(conf);
		// 可以直接传入 uri和用户身份
		//fileSystem = FileSystem.get(new URI("hdfs://master:9000"), conf, "hadoop"); // 最后一个参数为用户名

	}

	@Test
	public void uploadFile() throws IllegalArgumentException, IOException
	{
		fileSystem.copyFromLocalFile(new Path("c:/activemq.log"), new Path("/activemq.log"));
		fileSystem.close();
	}

	@Test
	public void testDownload() throws Exception
	{
		fileSystem.copyToLocalFile(new Path("/activemq.log"), new Path("d:/"));
		// 不用原始的文件系统(不用原生的文件系统),调用java自带的IO流
//		fileSystem.copyToLocalFile(false, new Path("/activemq.log"), new Path("d:/"), false);
		fileSystem.close();
	}
}

    在测试完文件上传时,没有问题,只要指明文件源和namenode所在的主机,没有问题

    在测试文件下载时,出现异常:

    

java.lang.NullPointerException
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1010)
	at org.apache.hadoop.util.Shell.runCommand(Shell.java:482)
	at org.apache.hadoop.util.Shell.run(Shell.java:455)
	at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:715)
	at org.apache.hadoop.util.Shell.execCommand(Shell.java:808)
	at org.apache.hadoop.util.Shell.execCommand(Shell.java:791)
	at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:659)
	at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:490)
	at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:462)
	at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:428)
	at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:908)
	at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:889)
	at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:786)

    

分析:

  下载Hadoop2以上版本时,在Hadoop2的bin目录下没有winutils.exe

解决:

  1.下载https://codeload.github.com/srccodes/hadoop-common-2.2.0-bin/zip/master下载hadoop-common-2.2.0-bin-master.zip,然后解压后,把hadoop-common-2.2.0-bin-master下的bin全部复制放到我们下载的Hadoop2的binHadoop2/bin目录下。如图所示:

    

            

        在环境变量中配置hadoop

        重启机器,问题得到解决。

        223939_GVQA_1766847.png

         224014_QLrz_1766847.png

        文件下载成功!!!

转载于:https://my.oschina.net/LiuLangEr/blog/853880

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值