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的文件的,但是很看报错好像是在我电脑上无法创建输出流,难道没有权限吗?

万能的网友帮忙看看吧

时间: 2024-12-05 10:33:44

hadoop+eclipse+windows7操作HDFS遇到的问题的相关文章

httpwebrequest-通过java 调用http协议操作hdfs如何实现

问题描述 通过java 调用http协议操作hdfs如何实现 如何让外网的client 通过 接入层 达到对hadoop集群HDFS操作的目的,要通过java 调用http协议实现 解决方案 可以参考官方文档,hadoop支持http操作hdfs,link text

Hadoop大象之旅009-通过Shell操作hdfs

Hadoop大象之旅009-通过Shell操作hdfs                                                                老帅 调用Hadoop分布式文件系统(HDFS)Shell命令应使用bin/hadoop fs <args>的形式.   1.查看hdfs都有哪些Shell命令 参照前面章节中所述方法,使用SecureCRTPortable.exe登录CentOS; 使用命令"hadoopfs"查看hdfs的命

独家 | 一文读懂Hadoop(二)HDFS(上)

随着全球经济的不断发展,大数据时代早已悄悄到来,而Hadoop又是大数据环境的基础,想入门大数据行业首先需要了解Hadoop的知识.2017年年初apache发行了Hadoop3.0,也意味着一直有一群人在对Hadoop不断的做优化,不仅如此,各个Hadoop的商业版本也有好多公司正在使用,这也印证了它的商业价值. 读者可以通过阅读"一文读懂Hadoop"系列文章,对Hadoop技术有个全面的了解,它涵盖了Hadoop官网的所有知识点,并且通俗易懂,英文不好的读者完全可以通过阅读此篇文

Hadoop利用FileSystem API 执行hadoop文件读写操作

因为HDFS不同于一般的文件系统,所以Hadoop提供了强大的FileSystem API来操作HDFS. 核心类是FSDataInputStream和FSDataOutputStream 读操作: 我们用FSDataInputStream来读取HDFS中的指定文件(第一个实验),另外我们还演示了这个类的定位文件位置的能力,然后从指定位置开始读取文件(第二个实验). 代码如下: /* */ package com.charles.hadoop.fs; import java.net.URI; i

hadoop详解(六) HDFS数据完整性

数据完整性 IO操作过程中难免会出现数据丢失或脏数据,数据传输得量越大出错得几率越高.校验 错误最常用得办法就是传输前计算一个校验和,传输后计算一个校验和,两个校验和如果不相同就说明数据存 在错误,比较常用得错误校验码是CRC32. hdfs数据完整性 hdfs写入的时候计算出校验和, 然后每次读的时候再计算校验和.要注意的一点是,hdfs每固定长度就会计算一次校验和,这个值由 io.bytes.per.checksum指定,默认是512字节.因为CRC32是32位即4个字节,这样校验和占用的空

独家 | 一文读懂Hadoop(二)HDFS(下)

5.1 用户命令 hadoop集群用户的常用命令. 5.1.1 classpath 打印获取Hadoop jar和所需库所需的类路径.如果无参数调用,则打印由命令脚本设置的类路径,可以在类路径条目中包含通配符.其他选项在通配符扩展后打印类路径或将类路径写入jar文件的清单.后者在不能使用通配符且扩展的类路径超过支持的最大命令行长度的环境中非常有用. 5.1.2 dfs HDFS允许以文件和目录的形式组织用户数据.它提供了一个称为FS shell的命令行界面,允许用户与HDFS中的数据交互.此命令

Windows7操作中心的作用

大部分朋友刚刚开始接触Windows7系统的时候,就留意到了任务栏右下角通知 区的那个白色的小旗子,后来才知道,这个小白旗,对于很多Win7电脑新用户是 有很多用处的.别看这只是个小图标,它可是有大用处的,今天我们一起来聊聊 这个小图标--Windows7操作中心的作用. 为 了在增强客服质量的同时节约成本,微软在Windows7中加入了许多具备自诊断和 自动修复系统故障能力的功能,这些工具中的一部分被集成在Windows7操作中心 .微软工作人员在其博客中如是说:"这些功能能够自动诊断,并解决

windows7操作系统启动ISC服务失败的解决方法

  windows7操作系统启动ISC服务失败的解决方法            具体解决方法: 1.首先打开Win7系统的运行对话框,然后输入services.msc,回车打开服务; 2.然后找到并将"Network Connections"设置为"手动"并启动; 3.然后再将"Windows Firewall/Internet Connection Sharing (ICS)"服务启用就可以了.

Hadoop危机?替代HDFS的8个绝佳方案

HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,坦白说HDFS是一个不错的分布式文件系统,它有很多的优点,但也存在有一些缺点,包括:不适合低延迟数据访问.无法高效存储大量小文件.不支持多用户写入及任意修改文件. Apache软件基金会成立的时候,HDFS就一直在想办法提高它的性能和可用性,坦白说,这也许对试点项目.非常规项目.要求不严格的大环境中比较适用,但是对于某些Hadoop用户来说,他们对于性能.可用