MapReduce 踩坑 - hadoop No FileSystem for scheme: file/hdfs
一、场景
hadoop-3.0.2 + hbase-2.0.0
一个mapreduce任务,在IDEA下本地提交到hadoop集群可以正常运行。
现在需要将IDEA本地项目通过maven打成jar包,从而能够在windows/Linux命令行下,通过Java -jar方式运行。
二、状况
报错可能1:Exception in thread "main" java.io.IOException: No FileSystem for scheme: file
报错可能2:Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs
三、分析
- 主要是maven的maven-assembly带来的问题。
- 问题产生原因:
- LocalFileSystem 所在的包 hadoop-commons 和 DistributedFileSystem 所在的包 hadoop-hdfs,这两者在他们各自的 META-INFO/services下,都包含了不同但重名的文件叫做 org.apache.hadoop.fs.FileSystem。(这个FileSystem文件中,都列出了实现filesystem需要声明的规范类名。)
- 当使用maven-assembly-plugin时,maven会将所有的jar包都merge为一个jar。因此。所有META-INFO/services/org.apache.hadoop.fs.FileSystem 会相互覆盖,最终只留一个(the last one)。在这里,hadoop-commons 中的 FileSystem 会 overwrite 掉 hadoop-hdfs 中的 FileSystem, 因此 DistributedFileSystem 的声明就会失效!
四、解决方案 - 基于mapreduce
在提交mapreduce之前,显式指定 LocalFileSystem 或/和 DistributedFileSystem 的类,以确保它们的声明生效。
conf.set("fs.hdfs.impl",
org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
);
conf.set("fs.file.impl",
org.apache.hadoop.fs.LocalFileSystem.class.getName()
);
五、解决方案 - 基于 maven-assembly
在pom.xml中,使用如下的maven-assembly。使用merge了所有FileSystem的合并版本,而不是互相overwrite的。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
六、参考
https://stackoverflow.com/questions/17265002/hadoop-no-filesystem-for-scheme-file
MapReduce 踩坑 - hadoop No FileSystem for scheme: file/hdfs的更多相关文章
- Spark No FileSystem for scheme file 解决方法
在给代码带包成jar后,放到环境中运行出现如下错误: Exception in thread "main" java.io.IOException: No FileSystem f ...
- hadoop No FileSystem for scheme: hdfs
http://stackoverflow.com/questions/17265002/hadoop-no-filesystem-for-scheme-file This is a typical c ...
- No FileSystem for scheme: 远程访问HDFS找不到shceme
问题描述: hadoop版本:hadoop-2.0.0-cdh4.3.0 在本地环境下能够找到scheme,但是通过maven打包fatjar 后放到其他机器上就出现找不到scheme. 看了代码,发 ...
- hadoop之mapReduce踩坑集合
居然没有把这个目录,之前还想爆粗口的,还是算了. 上苷酸菜: 1.对于mapreduce中FileInputFormat只输入input文件根目录的方法尝试. 很简单好吧: step1: FileIn ...
- Hadoop EC 踩坑 :data block 缺失导致的 HDFS 传输速率下降
环境:hadoop-3.0.2 + 11 机集群 + RS-6-3-1024K 的EC策略 状况:某天,往 HDFS 上日常 put 业务数据时,发现传输速率严重下降 分析: 检查集群发现,在之前的传 ...
- MapReduce 踩坑 :Aggregation is not enabled. Try the nodemanager at IP:HOST
原因:yarn-site.xml 中,有关mapreduce日志查看的aggregation未配置启用 解决:在yarn-site.xml 中加入以下配置 <property> <n ...
- Eclipse maven hadoop -- java.io.IOException: No FileSystem for scheme: hdfs
2019-01-10 概述 今天在Windows系统下新安装了Eclipse和maven的环境,想利用Maven构建一个Hadoop程序的,结果却发现程序运行时一直报 “No FileSystem f ...
- Hadoop编程踩坑
Hadoop踩坑 在hadoop所有组件编程中,遇到在Windows下运行程序出现 java.io.IOException: Could not locate executable null\bin\ ...
- 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 ...
随机推荐
- 补充:MySQL整理
1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...
- 洛谷试炼场 - 关卡2-1 - 简单的模拟 - (Done)
最近这段时间感冒外加一些乱七八糟的事情,导致脑子严重僵化……只好刷刷基础(水)题巩固巩固基础(混混题数). 目录 P1003 铺地毯 P1067 多项式输出 P1540 机器翻译 P1056 排座椅 ...
- 实时分析(在线查询),firehose---clickhouse
firehose---clickhouse 在Hive中适不适合像传统数据仓库一样利用维度建模hive新功能 Cube, Rollup介绍https://blog.csdn.net/moon_yang ...
- Delphi 中的 XMLDocument 类详解(9) - 关于 HasChildNodes 与 IsTextElement
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- java框架之Spring(5)-注解驱动开发
准备 1.使用 maven 创建一个 java 项目,依赖如下: <dependency> <groupId>org.springframework</groupId&g ...
- js篇-解析url链接里面的参数名和参数值
项目背景是,链接为:https://paladin.pingan.com.cn/jf/?appId=PA00200000000_01_APP&id=123456#/fundRank 要求拿到: ...
- JavaScript事件起泡与捕获
// 向 <div> 元素添加事件句柄 document.getElementById("myDIV").addEventListener("mousemov ...
- SPP空间金字塔池化技术的直观理解
空间金字塔池化技术, 厉害之处,在于使得我们构建的网络,可以输入任意大小的图片,不需要经过裁剪缩放等操作. 是后续许多金字塔技术(psp,aspp等)的起源,主要的目的都是为了获取场景语境信息,获取上 ...
- tp 内置压缩文件zip
一.解压缩zip文件 $zip = new ZipArchive;//新建一个ZipArchive的对象 /* 通过ZipArchive的对象处理zip文件 $zip->open这个方法的参数表 ...
- nrm 使用
全局安装 npm i nrm -g 全局安装nrm nrm ls 查看镜像地址: npm ---- https://registry.npmjs.org/ cnpm --- http://r.c ...