No FileSystem for scheme: 远程访问HDFS找不到shceme
问题描述:
hadoop版本:hadoop-2.0.0-cdh4.3.0
在本地环境下能够找到scheme,但是通过maven打包fatjar 后放到其他机器上就出现找不到scheme。
看了代码,发现通过FileSystem.get(conf)初始化的时候,要通过静态加载来实现,其加载类的方法代码如下:
private static FileSystem createFileSystem(URI uri, Configuration conf
) throws IOException {
Class<?> clazz = conf.getClass("fs." + uri.getScheme() + ".impl", null);
if (clazz == null) {
throw new IOException("No FileSystem for scheme: " + uri.getScheme());
}
FileSystem fs = (FileSystem)ReflectionUtils.newInstance(clazz, conf);
fs.initialize(uri, conf);
return fs;
}
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文件取出并修改,添加如下代码:
<property>
<name>fs.hdfs.impl</name>
<value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
<description>The FileSystem for hdfs: uris.</description>
</property>
然后再放回jar包中,就可以访问了,依赖jar包中一定要有hadoop-hdfs.x.jar。
No FileSystem for scheme: 远程访问HDFS找不到shceme的更多相关文章
- MapReduce 踩坑 - hadoop No FileSystem for scheme: file/hdfs
一.场景 hadoop-3.0.2 + hbase-2.0.0 一个mapreduce任务,在IDEA下本地提交到hadoop集群可以正常运行. 现在需要将IDEA本地项目通过maven打成jar包, ...
- 解决:java.io.IOException: No FileSystem for scheme: hdfs
解决:java.io.IOException: No FileSystem for scheme: hdfs 开发项目初期,写完代码开始放到服务器上开始测试的时候,报出这样的一个错,不知道怎么处理了, ...
- Eclipse maven hadoop -- java.io.IOException: No FileSystem for scheme: hdfs
2019-01-10 概述 今天在Windows系统下新安装了Eclipse和maven的环境,想利用Maven构建一个Hadoop程序的,结果却发现程序运行时一直报 “No FileSystem f ...
- 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 ...
- java.io.IOException: No FileSystem for scheme: hdfs
在这篇文章中,介绍了如何将Maven依赖的包一起打包进jar包.使用maven-assembly打成jar后,将这个jar提供给其他工程引用的时候,报出如下错误: log4j:WARN No appe ...
- 【甘道夫】HBase开发环境搭建过程中可能遇到的异常:No FileSystem for scheme: hdfs
异常: 2014-02-24 12:15:48,507 WARN [Thread-2] util.DynamicClassLoader (DynamicClassLoader.java:<in ...
- No FileSystem for scheme: hdfs问题
通过FileSystem.get(conf)初始化的时候,要通过静态加载来实现,其加载类的方法代码如下: private static FileSystem createFileSystem(URI ...
- 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 ...
- Spark No FileSystem for scheme file 解决方法
在给代码带包成jar后,放到环境中运行出现如下错误: Exception in thread "main" java.io.IOException: No FileSystem f ...
随机推荐
- Linux Apache prefork和worker的原理详解
prefork(多进程,每个进程产生子进程)和worker(多进程,每个进程生成多个线程) prefork的工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinS ...
- django migration使用指南
转自: https://docs.djangoproject.com/en/1.8/topics/migrations/
- A + B Problem
Write a function that add two numbers A and B. You should not use + or any arithmetic operators. 分析: ...
- css用标签选择器在本页写样式
<title>静夜思</title><style type="text/css">p{ color:#ff0000; font-size:2 ...
- 通过关闭UseDNS和GSSAPIAuthentication选项加速SSH登录
引自:http://www.cnblogs.com/wjoyxt/p/3790537.html More:http://blogread.cn/it/article/4719 通常情况下我们在连接 O ...
- 7.python模块补充
此文章是对上节文章模块的补充 一,xml模块 xml是实现不同语言或程序之间进行数据交换的协议,可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言.xml的格式如下 ...
- BestCoder10 1002 Revenge of GCD(hdu 5019) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5019 题目意思:给出 X 和 Y,求出 第 K 个 X 和 Y 的最大公约数. 例如8 16,它们的公 ...
- HDU 5734 Acperience (公式推导) 2016杭电多校联合第二场
题目:传送门. #include <iostream> #include <algorithm> #include <cstdio> #include <cs ...
- fork
#include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> ...
- C语言,输入一个正整数,按由大到小的顺序输出它的所有质数的因子(如180=5*3*3*2*2)
#include <iostream> using namespace std; int main() { long num; while(cin >> num){ ){ co ...