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

转载于:https://www.cnblogs.com/PigeonNoir/p/9213388.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解读自动驾驶的2020:从硬件角度看,无人车商业化落地难在哪?

来源 &#xff1a;AI前线作者 &#xff1a;滴滴自动驾驶技术团队策划 &#xff1a;陈思「重点问题」什么是合适的无人驾驶车辆平台&#xff1f;复杂场景下的“无人驾驶”&#xff0c;传感器硬件系统还有哪些挑战&#xff1f;告别 demo 硬件系统后&#xff0c;下一个前装量产的必…

Leetcode--142. 环形链表Ⅱ

给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff0c;则在该链表中没有…

java中字符串函数_JAVA中字符串函数subString的用法小结

string str;str&#xff1d;str.substring(int beginindex);截取掉str从首字母起长度为beginindex的字符串&#xff0c;将剩余字符串赋值给str&#xff1b;str&#xff1d;str.substring(int beginindex&#xff0c;int endindex);截取str中从beginindex开始至endindex结束时的…

select默认下拉箭头改变、option样式清除

谷歌、火狐、ie下 select 的默认下拉箭头图标差别还是比较大&#xff0c;一般我们都会清除默认样式&#xff0c;重新设计箭头图标&#xff1b; /* --ie清除--*/select::-ms-expand{ display: none; }/* --火狐、谷歌清除--*/select{appearance:none; -moz-appearance:none; -…

Leetcode--15. 三数之和

给定一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;找出所有满足条件且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 例如, 给定数组 nums [-1, 0, 1,…

他们提出了一个大胆的猜想:GWT(深度学习)→通用人工智能

来源&#xff1a;AI科技评论编译 &#xff1a;陈彩娴近日&#xff0c;有一篇发表在arXiv的论文“Deep Learning and the Global Workspace Theory”提出了一个大胆的猜想&#xff08;或理论&#xff09;。两位作者认为&#xff0c;当下的深度学习已经可以基于一个意识模型&…

python调用jar 性能_亲自有效---python 调用jar

#-*-coding:utf-8-*-import jpypefrom jpype import *import os.pathjarpath os.path.abspath(‘.‘)#这个函数用来获取当前 python 脚本所在的绝对路径aajarpath ‘\JpypeDemo.jar‘print(aa)jvm_path jpype.getDefaultJVMPath() #获取当前系统JDK的路径print(jvm_path)# s…

计算机网络-奈氏准则

假定某信道受奈氏准则限制的最高码元速率为20000码元/秒。如果采用振幅调制&#xff0c;把码元的振幅划分为16个不同等级来传送&#xff0c;那么可以获得多高的数据率&#xff08;b/s&#xff09;?答&#xff1a;CR*Log2&#xff08;16&#xff09;20000b/s*480000b/s (C是速据…

Leetcode--80. 删除排序数组中的重复项Ⅱ

给定一个排序数组&#xff0c;你需要在原地删除重复出现的元素&#xff0c;使得每个元素最多出现两次&#xff0c;返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定 nums [1,1,1,2…

科学史上那些盛极一时的“著名理论”是如何被攻破的?

《雅典学院》名画中的亚里士多德和柏拉图来源 :《自然》百年科学经典制版编辑: Morgan在科学发展的过程中&#xff0c;曾经涌现出不少盛极一时而后被证明是错误的理论。这些理论有的也许在今天看来悖谬荒诞&#xff0c;但是从整个科学发展的过程来看&#xff0c;它们仍然有其作…

Cluster - LB - haproxy

sd 转载于:https://www.cnblogs.com/aftree/p/9219435.html

Leetcode--1004. 最大连续1的个数Ⅲ

给定一个由若干 0 和 1 组成的数组 A&#xff0c;我们最多可以将 K 个值从 0 变成 1 。 返回仅包含 1 的最长&#xff08;连续&#xff09;子数组的长度。 示例 1&#xff1a; 输入&#xff1a;A [1,1,1,0,0,0,1,1,1,1,0], K 2 输出&#xff1a;6 解释&#xff1a; [1,1,1…

java 按钮 颜色_改变按钮颜色的java事件,个人成果!

import java.awt.*;import java.awt.event.*;public class Eventest{Button btn1new Button("单击");Frame myframenew Frame("测试单击事件");public void init(){btn1.setSize(30,26);btn1.addActionListener(new ActionListener(){public void actionPe…

AI在智能建筑中的应用和发展

来源&#xff1a;中研网图片来源&#xff1a;网络智能建筑诞生于二十世纪末&#xff0c;第一幢智能建筑于1984年在美国哈特福德 &#xff08;Hartford&#xff09;市建成。我国于90年代才起步&#xff0c;但迅猛发展势头令世人瞩目。目前&#xff0c;新技术、新产品在智能建筑中…

SpringBoot核心

1.基本配置 1.1入口类和SrpingBootApplication SpringBoot通常有一个名为*Application的入口类&#xff0c;入口类里有一个main方法&#xff0c;这个main方法就是一个标准的java应用的入口方法 。在main方法中使用SpringApplication.run,启动springboot项目。 其中EnablieAutoC…

grpc简单使用 java_gRPC学习记录(四)-官方Demo - Java 技术驿站-Java 技术驿站

了解proto3后,接下来看官方Demo作为训练,这里建议看一遍之后自己动手搭建出来,一方面巩固之前的知识,一方面是对整个流程更加熟悉.官方Demo地址: https://github.com/grpc/grpc-java例子是一个简单的路由映射的应用&#xff0c;它允许客户端获取路由特性的信息&#xff0c;生成…

冯端:漫谈物理学的过去、现在与未来

来源&#xff1a; 算法与数学之美撰文&#xff1a; 冯端 (南京大学物理系)“物理学的过去、现在和未来”是一个非常大而且重要的题目&#xff0c;也是一个非常难讲的题目&#xff0c;特别是涉及物理学的未来&#xff0c;结果往往是贻笑大方。这里以历史的透视为主线&#xff0c…

Leetcode--713. 乘积小于k的子数组

给定一个正整数数组 nums。 找出该数组内乘积小于 k 的连续的子数组的个数。 示例 1: 输入: nums [10,5,2,6], k 100 输出: 8 解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。 需要注意的是 [10,5,2] 并不是乘积小于100的子数…

第四次博客

第四次博客 一、测试与正确性论证的比较 测试具有针对性&#xff0c;能从一些方面完美的展现出代码的正确性&#xff0c;但是它的验证度取决于样例的质量。 优点是方便&#xff0c;快捷&#xff0c;结果明显&#xff1b;缺点是可能不会覆盖到方方面面。 正确性论证能从所有的方…

院士论坛|李德仁:测绘遥感能为智能驾驶做什么? ——论测绘遥感与智能驾驶

来源&#xff1a; 中国测绘学会未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;云脑技术和企业…