在windows下的hdfs客户端编写
在windows下的hdfs客户端编写
新建一个工程,右键 properties -> java build path -> libraries 和之前一样的操作,这次 new 一个 user libiary 把整个 hadoop3.0.0 的jar包全部导入
upload()运行成功,运行download()的时候出现报错
HADOOP_HOME and hadoop.home.dir are unset.
解决方案:
- 从linux上把解压的hadoop-3.0.0文件夹下载到本地
- 下载hadoop3.0.0的 winutils,替换掉bin目录
- 将hadoop.dll 拷贝至C:\windows\system32\
- 配置环境变量
HADOOP_HOME
,并且在系统变量的path中附加%HADOOP_HOME%/bin
成功运行代码:
package cn.thousfeet.hadoop.hdfs;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.junit.Before;
import org.junit.Test;
public class HdfsUtils {
FileSystem fs = null;
@Before
public void init() throws Exception {
// 读取classpath下的xxx-site.xml配置文件,解析内容封装到conf对象中
Configuration conf = new Configuration();
// 可以手动设置conf的配置信息(覆盖原配置文件中的值)
conf.set("fs.defaultFS", "hdfs://node01:9000/");
// 获取文件系统的客户端操作实例对象。设置username为之前上传文件的linux用户信息,以防没有读写权限
fs = FileSystem.get(new URI("hdfs://node01:9000/"), conf, "thousfeet");
}
/**
* 上传文件
* @throws Exception
* @throws IllegalArgumentException
*/
@Test
public void upload() throws IllegalArgumentException, Exception {
fs.copyFromLocalFile(new Path("D:/eclipse-workspace/test.txt"), new Path("hdfs://node01:9000/a/b/c/test.txt"));
}
/**
* 下载文件
* @throws Exception
* @throws IllegalArgumentException
*/
@Test
public void download() throws IllegalArgumentException, Exception {
fs.copyToLocalFile(new Path("hdfs://node01:9000/aa/test.txt"), new Path("D:/eclipse-workspace/test2.txt"));
}
/**
* 查看文件信息
* @throws Exception
* @throws IllegalArgumentException
* @throws FileNotFoundException
*/
@Test
public void listFiles() throws FileNotFoundException, IllegalArgumentException, Exception {
// listFile() 列出的是文件信息,并且提供递归遍历(参数为true时 能递归查看文件夹内的文件)
RemoteIterator<LocatedFileStatus> files = fs.listFiles(new Path("/"), true);
while(files.hasNext())
{
LocatedFileStatus file = files.next();
Path filePath = file.getPath();
String fileName = filePath.getName();
System.out.println(fileName);
}
/**打印结果
* test.txt
* core-site.xml
* hadoop-core-1.2.1.jar
* jdk-8u161-linux-x64.tar.gz
*/
System.out.println("-----------------------");
// listStatus() 列出文件和文件夹的信息,但是不提供递归遍历(需要自行去做递归)
FileStatus[] listStatus = fs.listStatus(new Path("/"));
for(FileStatus status : listStatus)
{
String name = status.getPath().getName();
System.out.println(name + (status.isDirectory() ? " - is a dir": " - is a file"));
}
/**
* 打印结果
* a - is a dir
* core-site.xml - is a file
* input - is a dir
* jdk-8u161-linux-x64.tar.gz - is a file
*/
}
/**
* 创建文件夹
* @throws Exception
* @throws IllegalArgumentException
*/
@Test
public void mkdir() throws IllegalArgumentException, Exception {
fs.mkdirs(new Path("/a/b/c"));
}
/**
* 删除文件或文件夹
* @throws Exception
* @throws IllegalArgumentException
*/
@Test
public void deleteFiles() throws IllegalArgumentException, Exception {
fs.delete(new Path("hdfs://node01:9000/aa"), true);
}
}
所以说还是windows的eclipse用的舒服啊!(
关于win下调试hadoop的参考资料:
- https://blog.csdn.net/nightwizard2030/article/details/53142069
- https://blog.csdn.net/darkdragonking/article/details/72636917
附:eclipse使用的一些小技巧快捷键
Alt + /
提示补全信息(设置全字符补全:https://www.cnblogs.com/firstcsharp/p/4025689.html)
Ctrl + 2 松手 L
new一个对象,前面接收的对象信息快速补全
在windows下的hdfs客户端编写的更多相关文章
- windows下的mysql客户端mysqlworkbench链接虚拟机上CentOS的mysql服务器
本人在虚拟机上CentOS的Linux环境下安装了mysql服务器,在本地Windows下安装了mysql的客户端mysqlworkbench ,所以就想让windows下的mysql客户端mysql ...
- Windows下安装Redis客户端
Redis是有名的NoSql数据库,一般Linux都会默认支持.但在Windows环境中,可能需要手动安装设置才能有效使用.这里就简单介绍一下Windows下Redis服务的安装方法,希望能够帮到你. ...
- windows 下使用github客户端报错:Failed to publish this branch
在windows系统下使用github客户端同步的时候报错“Failed to publish this branch”,查找原因,发现结果是安装vscode的时候没有检查到git,然后安装git后库 ...
- windows下安装oracle客户端和php扩展
先来抱怨下 ,按这玩楞费了我大半天的时间,一路的坑! 我的电脑是win7 64位的 第一步 打开php.ini 把 extension=php_oci8_12c.dll extension=php ...
- Mqtt开发笔记:windows下C++ ActiveMQ客户端介绍、编译和使用
前话 项目需求,需要使用到mqtt协议,之前编译QtMqtt库,不支持队列模式queue(点对点),只支持订阅/发布者模式.,所以使用C++ ActiveMQ实现. MQTT协议 简介 M ...
- windows下注册表脚本编写
Reg文件就是我今天所说的注册表脚本文件,双击可将其中的数据写入注册表.利用注册表脚本文件可以对注册表进行关于键值的任何操作,而且还不受注册表被禁用的限制. 我们平常对注册表的修改大体上可以分 ...
- windows下使用eclipse远程编写hadoop配置
1.按照一般方法配置好hadoop伪分布式,注意core-site.xml和mapred-site.xml用IP,不要用localhost 2.格式化hdfs文件系统hadoop namenode - ...
- Windows 下的SSH客户端
在日常Linux系统管理中,会使用SSH工具连接服务器,之所以SSH连接主要是为了安全,传统的telnet连接方式是以明文传输,很不安全,网络中如果又热窃听抓包,密码将要泄露.在众多SSH连接中,Pu ...
- 推荐Windows下SVN服务器端和客户端工具软件
相信很多人使用过Windows下的SVN客户端软件TortoiseSVN或者也有过Linux下.MAC下的SVN命令行使用经验,另外MAC下还有以一款就做Vesions的SVN客户端软件,不过个人感觉 ...
随机推荐
- [BJOI 2018]求和
Description 题库链接 给你一棵 \(n\) 个结点的有根树, \(m\) 次询问这棵树上一段路径上所有节点深度的 \(k\) 次方和. \(1\leq n\leq 300000,1\leq ...
- Spring缓存注解@Cache,@CachePut , @CacheEvict,@CacheConfig使用
@Cacheable.@CachePut.@CacheEvict 注释介绍 表 1. @Cacheable 作用和配置方法 @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结 ...
- Python操作 Memcache、Redis
Python操作 Memcached.Redis 一.Memcached和Redis对比 1.1 Memcached和Redis的数据类型对比 memcached只有一种数据类型,key对应value ...
- SQL Server Profiler小技巧——筛选请求
如果需要转载,请附上本文作者和原文链接:http://www.cnblogs.com/zeusro/p/4016228.html Microsoft SQL Server Profiler 是 SQL ...
- hdu2036(多边形面积)
Description “ 改革春风吹满地, 不会AC没关系; 实在不行回老家, 还有一亩三分地. 谢谢!(乐队奏乐)” 话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里雾里,而 ...
- 最全Vue开发环境搭建
前言 一直想去学Vue,不过一直找不到一个契机.然公司手机端用到了跨平台开发apicloud,里边涉及到Vue组件化开发,例如header和footer的封装,以及apicloud自定义的frame等 ...
- git常用命令和场景
总结: git init //初始化本地git环境 git clone XXX//克隆一份代码到本地仓库 git pull //把远程库的代码更新到工作台 git pull --rebase orig ...
- 浅谈脚本化css(一)
读写css属性 每一个dom元素都有一个属性style,dom.style里面存放的这个元素的行间样式,我们可以通过这个属性来读写元素的行间样式. 注意: 1.我们碰到float这样的关键字属性的时候 ...
- 遇到的一个渲染的bug
id=center1 的元素,如果js代码需要设置其宽高,则属性必须设置为display. 否则html会先计算该元素的高宽,子元素会根据该元素进行响应的渲染,后续js代码就算更改了center1的高 ...
- 规划行业GIS云平台“城智图”上线运行
首先祝各位朋友中秋节快乐! 城智图(www.imapcity.com)是远景GIS云平台的首个应用项目,它以全新的方式为规划部门提供地理信息服务,改变了以前规划部门只有CAD成果数据,难以查阅.深入挖 ...