hadoop+eclipse+windows7操作HDFS遇到的问题

在网上参考了一些资料,配置windows7系统上远程访问HDFS集群,包括添加系统变量$HADOOP_HOME\$HADOOP_USER,配置环境变量$HADOOP_HOME\bin,其中bin目录下有hadoop.dll、winutils.exe等程序,这些是从网上找的,但是在eclipse中运行程序遇到了一个问题,程序代码如下:

public class App
{
    public static void main( String[] args )
    {
        Configuration conf = new Configuration();
        try {
            FileSystem fs = FileSystem.get(conf);
            fs.copyFromLocalFile(new Path("D:\\testhdfs.txt"), new Path("/user/hado_cli/dist"));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("Put file to HDFS Failed");
        }
        try {
            FileSystem fs = FileSystem.get(conf);
            fs.copyToLocalFile(new Path("/user/hado_cli/dist/testhdfs.txt"), new Path("D:\\hdfstest"));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("Get file from HDFS Failed");
        }
    }
}

其中在执行前一段代码,及将本地文件上传至HDFS,程序是没有问题的,但执行从HDFS拷贝文件到我电脑上时,报了错,如下:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createFileWithMode0(Ljava/lang/String;JJJI)Ljava/io/FileDescriptor;
at org.apache.hadoop.io.nativeio.NativeIO$Windows.createFileWithMode0(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$Windows.createFileOutputStreamWithMode(NativeIO.java:559)
at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:219)
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:295)
at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:328)
at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSOutputSummer.<init>(ChecksumFileSystem.java:393)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:456)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:435)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:923)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:904)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:801)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:368)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:341)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:292)
at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:2017)
at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1986)
at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1962)

之前由于从网上找的hadoop.dll这些文件版本与集群上的hadoop版本不一致,在上传文件至HDFS时也报了类似的错误,后来换了个版本,现在下载文件仍然报错。我猜测的原因有以下几点:

  1. 版本原因,集群上时hadoop2.6.0-cdh5.9.1,程序用的jar包也是这个版本,hadoop.dll这写文件是从网上找的apache-hadoop2.6.0,是版本不一致还是找的这些dll文件有错,那为什么上传文件确可以?
  2. 程序验证了下,是可以读HDFS的文件的,但是很看报错好像是在我电脑上无法创建输出流,难道没有权限吗?

万能的网友帮忙看看吧

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/72244

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。