说明:整理博主用Java API实现HDFS操作时遇到的问题


问题

为搭建分布式操作环境–在ubuntu16中安装IDEA2021、tomcat9.0、hadoop2.7,建议分配磁盘空间30G及以上,内存分配3G(物理内存共8G)

未启动hadoop

报错:Exception in thread "main" java.net.ConnectException: Call From ubuntu16/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: 拒绝连接;
原因:未启动Hadoop
解决方法:

  1. 首先确保hadoop相应进程是否开启,通过jps查看是否有namenode进程
  2. 然后通过netstat -nltp|grep 9000查看9000端口是否处于监听状态
  3. 接着通过telnet 远程的主机名 9000查看是否连接成功,如果提示Connection refused则进行第4步
  4. 通过sudo service iptables status查看防火墙是否开启,如果开启则通过sudo service iptables stop(此命令立即生效,但机器重启后又会恢复,如果想永久关闭(开启)防火墙,可以通过sudo chkconfig iptables off(on)命令),将其关闭(大部分是由于开启了防火墙导致的)

‘Configuration’ is abstract; cannot be instantiated

原因:Configuration导包错误
解决方法:在上传文件到hadoop时,Configuration应该导入import org.apache.hadoop.conf.Configuration

路径错误

public class WriteFile{public static void main(String[] args) throws IOException, URISyntaxException {FileSystem hdfs = FileSystem.get(new URI("hdfs//localhost:9000"), new Configuration());String filePath = "/hdfstest/writefile";// FSDataOutputStreamFSDataOutputStream create = hdfs.create(new Path(filePath));System.out.println("Step 1 Finish!");String sayHi = "hello world hello data!";byte[] buff = sayHi.getBytes();create.write(buff, 0, buff.length);create.close();System.out.println("Step 2 Finish!");}
}

上述代码运行后报错:Exception in thread "main" java.io.IOException: Mkdirs failed to create /hdfstest (exists=false, cwd=file:/usr/local/java/project)

原因:FileSystem.get(Configuration conf) 使用配置文件来获取文件系统, 配置文件conf/core-site.xml,若没有指定参数uri或参数uri指向的不是hdfs文件系统,则返回local file system
解决方法:注意new URI("hdfs://localhost:9000")

文件的绝对路径(自根目录),需再前加:/

$pwd # /aaa
$cd /data # /data
$cd data #/app/data

文件权限问题

下载文件到本地文件系统,报错文件权限不够。
假设文件为:/data/hadoop/copytolocal
解决方法:chomd -R 777 /data/hadoop/copytolocalchomd -R a+w /data/hadoop/copytolocal

运行成功但有警告

WARN util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(62)) - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

可能的原因:系统不兼容hadoop包
解决方法:仅是warn,不影响hadoop的运行,可不解决
java - Hadoop “Unable to load native-hadoop library for your platform” warning - Stack Overflow
How To Compile Apache Hadoop On Ubuntu Linux (ercoppa.org)


参考文章:
9000 failed on connection exception: java.net.ConnectException: 拒绝连接_分享专栏一一一每天进步一点点-CSDN博客

用Java API实现HDFS操作(三)问题汇总相关推荐

  1. JAVA API实现HDFS操作(二)操作函数

    说明:在IDEA集成环境中利用JAVA API实现目录的创建.文件的创建.文件的上传和下载.文件的查看.文件删除.文件的编辑等操作.以下代码均创建在my.dfs包下 创建文件夹 在hdfs系统的根目录 ...

  2. Java API访问HDFS集群(HA)

    title: Java API访问HDFS集群(HA) date: 2021-06-23 17:06:11 tags: HDFS hadoopV2版本及以后都是HA架构,active namenode ...

  3. HDFS剩余空间大小的Java接口,java api获取hdfs索引大小

    java api获取hdfs目录大小 1. hadoop fs -dus 的源码: public static void dus(String src,Configuration conf) thro ...

  4. hdfs java api 读写文件操作_第十讲:通过JavaAPI对HDFS读写

    上一讲我们通过java api 接口对虚拟机里面的hdfs进行了新建文件夹.下面我们要进行其他的操作: 注,以下的所有内容都是在第九讲的代码的基础上的. 1.删除hdfs上面的文件夹 2.删除dhfs ...

  5. 用JAVA API实现HDFS常用shell命令的功能(新建文件夹,上传文件,下载文件,判断文件是否存在)

    新建文件夹 package hdfs.files;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Fi ...

  6. ElasticSearch Java API:Mget操作

    创建一个主查询请求对象: MultiGetRequest request = new MultiGetRequest(); 然后依次使用主请求对象的add方法,将子查询对象加入到主查询中 reques ...

  7. java hadoop api_Hadoop 系列HDFS的Java API( Java API介绍)

    HDFS的Java API Java API介绍 将详细介绍HDFS Java API,一下节再演示更多应用. Java API 官网 如上图所示,Java API页面分为了三部分,左上角是包(Pac ...

  8. Hadoop-HDFS 简介以及配置和JAVA API操作

    Hadoop 一.概述 1.1 大数据概念 大数据是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力来适应海量.高增长率和多样化的信息资产.--来自研究机构Gartner 1.2 大数据面 ...

  9. Hadoop HDFS 的 Java API 操作方式

    想要使用Java API 的方式操作 Hadoop,尤其是hdfs(hadoop file system),必然需要引入jar包(jar包提供了丰富的API). 点中工程名, alt+enter,进入 ...

最新文章

  1. 十八岁华裔天才携手「量子计算先驱」再次颠覆量子计算
  2. LeetCode-数组-删除有序数组重复元素
  3. python语言入门p-MicropPython的学习,如何从0到1?
  4. Linux (CentOS)增加删除用户
  5. linux共享文件丢失,【干货分享】linux平台下数据文件被误删后,如何及时得知并进行恢复...
  6. nginx+memcached+captcha_server实现验证码服务器
  7. POJ-1845 数论
  8. 2018 年你需要知道的 11 个 JavaScript 库
  9. Mac计算器的计算过程怎么看?教你一键查看运算记录!
  10. 华为手机_text是什么文件_华为学习文档资料
  11. 亲密关系沟通-【正向情绪】创造一场愉快的沟通体验
  12. java 挥发注解_C中的挥发性预选赛
  13. Android 自定义组合控件 简单导航栏
  14. ArcView GIS 应用与开发技术(3)-地理要素的显示和标注
  15. 干货分享——安卓USB通信
  16. pandas使用dataframe的索引和数据列同时对dataframe数据进行排序、使用ascending参数指定索引和数据列的排序方向(升序或者降序)
  17. 如何VUE写桌面应用(electron)
  18. 改变生活的态度,突破瓶颈
  19. ORcad Capture CIS元件库管理
  20. 力扣(700.701)补9.9

热门文章

  1. Leetcode1705. 吃苹果的最大数目[C++题解]:贪心
  2. php怎么实现缓存,PHP怎么实现缓存功能_后端开发
  3. 动态规划 dp01 西瓜分堆问题 c代码
  4. excel表格行宽列高怎么设置_excel表格怎么设置行高列宽
  5. swift 同步 网络请求_IOS开发中异步网络请求上实现同步逻辑
  6. su组件在什么窗口_Su与Rhino互导注意事项
  7. android没有捂脸表情,Emoji神器 | 如果你也喜欢[捂脸]表情
  8. mysql分析表锁,MySQL锁分析和监控
  9. C语言中的关键字概览
  10. 舞蹈里需要用计算机的地方,【舞蹈教学论文】计算机多媒体技术在舞蹈教学中的应用(共2080字)...