win10 hadoop NativeIO$Windows.createFileWithMode0(Ljava/lang/String;JJJI)Ljava/io/FileDes

原创
2020/02/18 19:42
阅读数 838

在win10 下 运行 hadoop api 代码,下载代码的时候报错

爆了这个错误
NativeIO$Windows.createFileWithMode0(Ljava/lang/String;JJJI)Ljava/io/FileDes


 /**
     * 拷贝HDFS文件到本地:下载
     */
    @Test
    public void copyToLocalFile() throws Exception {




        Path src = new Path("/hdfsapi/test/d.txt");

        Path dst = new Path("C:\\Users\\10737\\Desktop\\mingpian\\");
        fileSystem.copyToLocalFile(src, dst);

       
    }

其余执行方法,比如创建目录啊,上传啊,重命名 那些基本都没有问题。就是这里执行错误了

百度很多都说是 删除 hadoop.dll 文件。。。 试过了 完全无用。

解决办法

1.  改变执行方法

改为   


        fileSystem.copyToLocalFile(false,src,dst,true);

2. 以上虽然解决了,但是 

fileSystem.copyToLocalFile(src, dst); 如果解决才可以?

在请教了大神之后 下面的是大神解决办法:

Hadoop版本:hadoop-2.6.0-cdh5.16.2.tar
下载地址:https://archive.cloudera.com/cdh5/cdh/5/
系统:Windows 10
Bug:java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V
解决方式
    1、以管理员身份启动WinRAR 解压 hadoop-2.6.0-cdh5.16.2.tar 解压到指定目录 D:\WorkTools\Hadoop
    2、HADOOP_HOME=D:\WorkTools\Hadoop
    3、path=%HADOOP_HOME%/bin
    4、添加winutils
         下载页面:https://github.com/steveloughran/winutils
         建议采用 git clone  git@github.com:steveloughran/winutils.git

         第一次我选择的是2.6.0的,但是没有解决问题,
         第二次选择3.0.0的。
    5、复制hadoop-3.0.0/bin中的全部文件去替换%HADOOP_HOME%/bin中的文件
    6、在要运行的类中添加静态代码块。
static {
    try {
        System.load("D:/WorkTools/Hadoop/bin/hadoop.dll");//建议采用绝对地址。
    } catch (UnsatisfiedLinkError e) {
        System.err.println("Native code library failed to load.\n" + e);
        System.exit(1);
    }
}
	7、运行程序,成功。

我试了一下, 添加的代码块还需要改动一下:

 static {
        try {
            //建议采用绝对地址。
           // System.load("D:/cloud/hadoop/hadoopDohome/hadoop2/bin/hadoop.dll");
            //如果上面的路径保存,就使用下面的
            System.load("D:\\cloud\\hadoop\\hadoopDohome\\hadoop26\\bin\\hadoop.dll");
        } catch (UnsatisfiedLinkError e) {
            e.printStackTrace();
            System.err.println("Native code library failed to load.\n" + e);
            System.exit(1);
        }
    }

以上的方式,我觉得 如果就算出现了 其他 hadoop  版本 在win10 系统配置不对的而产生的都问题,都是可以参考解决的。

参考  https://blog.csdn.net/muyingmiao/article/details/100101584

https://blog.csdn.net/tanhaodi2012/article/details/96754432

 

 

 

 

 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部