问题描述:

  hadoop版本:hadoop-2.0.0-cdh4.3.0

  在本地环境下能够找到scheme,但是通过maven打包fatjar 后放到其他机器上就出现找不到scheme。

  看了代码,发现通过FileSystem.get(conf)初始化的时候,要通过静态加载来实现,其加载类的方法代码如下:

  1. private static FileSystem createFileSystem(URI uri, Configuration conf
  2. ) throws IOException {
  3. Class<?> clazz = conf.getClass("fs." + uri.getScheme() + ".impl", null);
  4. if (clazz == null) {
  5. throw new IOException("No FileSystem for scheme: " + uri.getScheme());
  6. }
  7. FileSystem fs = (FileSystem)ReflectionUtils.newInstance(clazz, conf);
  8. fs.initialize(uri, conf);
  9. return fs;
  10. }

   conf.getClass需要读取hadoop-common-x.jar下面的core-default.xml,但是这个xml里面没有fs.hdfs.impl的配置信息,所以需要将这个类给配置上去。至于为什么本地环境能够读取,看过一部分代码,我猜测是因为本地环境如果在配置文件中如果找不到就会直接加载默认的方法,但是打包之后默认的方法找不到位置,因为通过maven打包后会将所有的jar包拆包并且jar包的配置也都集合在一个文件中,可能是这里出了问题。

   用fatjar的eclipse插件打包的方法也有试过,但是还是会报错,不过不是hdfs的错误了,可能是我的fatjar插件有问题。可以先试试用fatjar插件打包,如果不行的话在用上述办法。

   其实这个错误的发生有很多中情况,引用的hadoop jar包的版本儿和服务器上的hadoop版本儿不一样也有这个问题。所以出现这个问题,先确保你引用的hadoop的jar版本儿和服务器上保持一致。

  解决方法:

  将hadoop-commom-x.jar里面的core-default.xml文件取出并修改,添加如下代码:

  1. <property>
  2. <name>fs.hdfs.impl</name>
  3. <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
  4. <description>The FileSystem for hdfs: uris.</description>
  5. </property>

然后再放回jar包中,就可以访问了,依赖jar包中一定要有hadoop-hdfs.x.jar。

No FileSystem for scheme: 远程访问HDFS找不到shceme的更多相关文章

  1. MapReduce 踩坑 - hadoop No FileSystem for scheme: file/hdfs

    一.场景 hadoop-3.0.2 + hbase-2.0.0 一个mapreduce任务,在IDEA下本地提交到hadoop集群可以正常运行. 现在需要将IDEA本地项目通过maven打成jar包, ...

  2. 解决:java.io.IOException: No FileSystem for scheme: hdfs

    解决:java.io.IOException: No FileSystem for scheme: hdfs 开发项目初期,写完代码开始放到服务器上开始测试的时候,报出这样的一个错,不知道怎么处理了, ...

  3. Eclipse maven hadoop -- java.io.IOException: No FileSystem for scheme: hdfs

    2019-01-10 概述 今天在Windows系统下新安装了Eclipse和maven的环境,想利用Maven构建一个Hadoop程序的,结果却发现程序运行时一直报 “No FileSystem f ...

  4. spark运行java-jar:Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs

    今天碰到的一个 spark问题,困扰好久才解决 首先我的spark集群部署使用的部署包是官方提供的 spark-1.0.2-bin-hadoop2.tgz 部署在hadoop集群上. 在运行java ...

  5. java.io.IOException: No FileSystem for scheme: hdfs

    在这篇文章中,介绍了如何将Maven依赖的包一起打包进jar包.使用maven-assembly打成jar后,将这个jar提供给其他工程引用的时候,报出如下错误: log4j:WARN No appe ...

  6. 【甘道夫】HBase开发环境搭建过程中可能遇到的异常:No FileSystem for scheme: hdfs

    异常: 2014-02-24 12:15:48,507 WARN  [Thread-2] util.DynamicClassLoader (DynamicClassLoader.java:<in ...

  7. No FileSystem for scheme: hdfs问题

    通过FileSystem.get(conf)初始化的时候,要通过静态加载来实现,其加载类的方法代码如下: private static FileSystem createFileSystem(URI ...

  8. Hadoop 3.1.2报错:xception in thread "main" org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "hdfs"

    报错内容如下: Exception in thread "main" org.apache.hadoop.fs.UnsupportedFileSystemException: No ...

  9. Spark No FileSystem for scheme file 解决方法

    在给代码带包成jar后,放到环境中运行出现如下错误: Exception in thread "main" java.io.IOException: No FileSystem f ...

随机推荐

  1. Unity3D使用小技巧

    原地址:http://unity3d.9tech.cn/news/2014/0411/40178.html 1.Crtl+f摄像机自动适配场景. 2.可以用一个立方体作为底盘. 3.人物角色可以直接引 ...

  2. C语言课程1——Hello World

    相信大家看了第一篇文章后,都信心满满,后边咱来点实际吧,上代码,经典之作:Hello World. 首先,不知道大家用的什么工具,VC6.0(太老了,强烈建议不用),VS,或是其他~ Hello Wo ...

  3. HDOJ 2544

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  4. SQL小技巧小知识

    1.[ ]的使用 当我们所要查的表是系统关键字或者表名中含有空格时,需要用[]括起来,例如新建了两个表,分别为user,user info,那么select * from user和select * ...

  5. ORACLE清除某一字段重复的数据(选取重复数据中另一个字段时期最大值)

    需求:资产维修表中同一资产可能维修完继续申请维修,这时候维修状态需要根据最近的维修时间去判断维修状态,所以同一资产ID下会出现重复的数据(维修审批通过,维修审批未通过),或者可能不出现(未申请维修), ...

  6. 【python】pathlib库

    pathlib在python3.2以上开始默认支持,在python2.7中如果要使用需要安装 pip install pathlib pathlib更多参考资料:http://pathlib.read ...

  7. [Android Pro] RecyclerView实现瀑布流效果(二)

    referece to : http://blog.csdn.net/u010687392 在上篇中我们知道RecyclerView中默认给我们提供了三种布局管理器,分别是LinearLayoutMa ...

  8. CodeIgniter报错: You must use the "set" method to update an entry

    I'm using codeigniter/datamapper to develop an inviocing application and I'm getting an error that i ...

  9. Windows 10 下ASP.NET4.0尚未在Web服务器上注册

    系统换成Win10后,打开VS2012出现如下问题: 网上查找了,大部分都是 C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319 并管理员运行aspnet_ ...

  10. 如何正确读取war包中配置文件的路径

    转自:http://free-chenwei.iteye.com/blog/1507480 下面展示一段代码String path = getClass().getResource("/&q ...