用Java API实现HDFS操作(三)问题汇总
说明:整理博主用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
解决方法:
- 首先确保hadoop相应进程是否开启,通过
jps
查看是否有namenode进程 - 然后通过
netstat -nltp|grep 9000
查看9000端口是否处于监听状态 - 接着通过telnet 远程的主机名 9000查看是否连接成功,如果提示Connection refused则进行第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/copytolocal
或chomd -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操作(三)问题汇总相关推荐
- JAVA API实现HDFS操作(二)操作函数
说明:在IDEA集成环境中利用JAVA API实现目录的创建.文件的创建.文件的上传和下载.文件的查看.文件删除.文件的编辑等操作.以下代码均创建在my.dfs包下 创建文件夹 在hdfs系统的根目录 ...
- Java API访问HDFS集群(HA)
title: Java API访问HDFS集群(HA) date: 2021-06-23 17:06:11 tags: HDFS hadoopV2版本及以后都是HA架构,active namenode ...
- HDFS剩余空间大小的Java接口,java api获取hdfs索引大小
java api获取hdfs目录大小 1. hadoop fs -dus 的源码: public static void dus(String src,Configuration conf) thro ...
- hdfs java api 读写文件操作_第十讲:通过JavaAPI对HDFS读写
上一讲我们通过java api 接口对虚拟机里面的hdfs进行了新建文件夹.下面我们要进行其他的操作: 注,以下的所有内容都是在第九讲的代码的基础上的. 1.删除hdfs上面的文件夹 2.删除dhfs ...
- 用JAVA API实现HDFS常用shell命令的功能(新建文件夹,上传文件,下载文件,判断文件是否存在)
新建文件夹 package hdfs.files;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Fi ...
- ElasticSearch Java API:Mget操作
创建一个主查询请求对象: MultiGetRequest request = new MultiGetRequest(); 然后依次使用主请求对象的add方法,将子查询对象加入到主查询中 reques ...
- java hadoop api_Hadoop 系列HDFS的Java API( Java API介绍)
HDFS的Java API Java API介绍 将详细介绍HDFS Java API,一下节再演示更多应用. Java API 官网 如上图所示,Java API页面分为了三部分,左上角是包(Pac ...
- Hadoop-HDFS 简介以及配置和JAVA API操作
Hadoop 一.概述 1.1 大数据概念 大数据是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力来适应海量.高增长率和多样化的信息资产.--来自研究机构Gartner 1.2 大数据面 ...
- Hadoop HDFS 的 Java API 操作方式
想要使用Java API 的方式操作 Hadoop,尤其是hdfs(hadoop file system),必然需要引入jar包(jar包提供了丰富的API). 点中工程名, alt+enter,进入 ...
最新文章
- 十八岁华裔天才携手「量子计算先驱」再次颠覆量子计算
- LeetCode-数组-删除有序数组重复元素
- python语言入门p-MicropPython的学习,如何从0到1?
- Linux (CentOS)增加删除用户
- linux共享文件丢失,【干货分享】linux平台下数据文件被误删后,如何及时得知并进行恢复...
- nginx+memcached+captcha_server实现验证码服务器
- POJ-1845 数论
- 2018 年你需要知道的 11 个 JavaScript 库
- Mac计算器的计算过程怎么看?教你一键查看运算记录!
- 华为手机_text是什么文件_华为学习文档资料
- 亲密关系沟通-【正向情绪】创造一场愉快的沟通体验
- java 挥发注解_C中的挥发性预选赛
- Android 自定义组合控件 简单导航栏
- ArcView GIS 应用与开发技术(3)-地理要素的显示和标注
- 干货分享——安卓USB通信
- pandas使用dataframe的索引和数据列同时对dataframe数据进行排序、使用ascending参数指定索引和数据列的排序方向(升序或者降序)
- 如何VUE写桌面应用(electron)
- 改变生活的态度,突破瓶颈
- ORcad Capture CIS元件库管理
- 力扣(700.701)补9.9
热门文章
- Leetcode1705. 吃苹果的最大数目[C++题解]:贪心
- php怎么实现缓存,PHP怎么实现缓存功能_后端开发
- 动态规划 dp01 西瓜分堆问题 c代码
- excel表格行宽列高怎么设置_excel表格怎么设置行高列宽
- swift 同步 网络请求_IOS开发中异步网络请求上实现同步逻辑
- su组件在什么窗口_Su与Rhino互导注意事项
- android没有捂脸表情,Emoji神器 | 如果你也喜欢[捂脸]表情
- mysql分析表锁,MySQL锁分析和监控
- C语言中的关键字概览
- 舞蹈里需要用计算机的地方,【舞蹈教学论文】计算机多媒体技术在舞蹈教学中的应用(共2080字)...