环境准备

windows需要配置hadoop的windows下的依赖

安装包地址:

链接:https://pan.baidu.com/s/1QtbH-x-S0QytkmaoSosdEw

提取码:2ktw

将安装包解压至自己所选择的目录,然后配置环境变量:

HADOOP_HOME : 解压的目录

PATH后新增:%HADOOP_HOME%\bin

maven所需依赖

新建Maven项目,添加以下依赖:

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.12.0</version>
</dependency> <dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.1.3</version>
</dependency>

实际操作

实际操作前先讲所需要的对象设为全局变量,方便今后操作:

private URI uri;
private Configuration configuration;
private String user;
private FileSystem fileSystem;

使用@Before注释的函数,可以在@Test注释下的函数运行前执行,可以进行对象的初始化:

	@Before
public void init() throws IOException, InterruptedException {
uri = URI.create("hdfs://hadoop100:8020");
configuration = new Configuration();
user = "nevesettle";
fileSystem = FileSystem.get(uri,configuration,user);
}

@After则相反

	@After
public void closeFs() throws IOException {
fileSystem.close();
}

文件上传

	/**
* 上传文件
* @throws IOException
*/
@Test
public void uploadFile() throws IOException {
fileSystem.copyFromLocalFile(false,false,
new Path("D:\\Program files\\QQ\\QQ Data\\794133319\\FileRecv\\资源集合.txt"),
new Path("/"));
}

使用的函数为:

copyFromLocalFile(boolean delSrc, boolean overwrite,Path src, Path dst)
  • delSrc:是否删除源文件
  • overwrite:目标地址有相同文件是否覆盖
  • src:源文件地址
  • dst:目标文件地址

文件下载

	/**
* 文件下载
* @throws IOException
* @throws InterruptedException
*/
@Test
public void downFile() throws IOException {
fileSystem.copyToLocalFile(false,
new Path("/资源集合.txt"),
new Path("d:\\"),
true);
}

使用的函数为:

copyToLocalFile(boolean delSrc, Path src, Path dst,boolean useRawLocalFileSystem)
  • delSrc:是否删除源文件
  • src:源文件地址
  • dst:目标文件地址
  • useRawLocalFileSystem:是否进行文件传输校验(CRC校验)

文件更名及移动位置

	/**
* 文件名字修改
* @throws IOException
* @throws InterruptedException
*/
@Test
public void updateFile() throws IOException {
fileSystem.rename(new Path("/资源集合.txt"),
new Path("/资源.txt"));
}

使用的函数为:

rename(Path src, Path dst)
  • src:源文件
  • dst:目标文件
  • 前后目录相同,文件名不同,则是修改文件名
  • 前后目录不同,文件名相同,则是修改目录
  • 前后目录和文件名都不同,则是移动位置并修改文件名

文件删除

	/**
* 文件删除
* @throws IOException
* @throws InterruptedException
*/
@Test
public void deleteFile() throws IOException {
fileSystem.delete(new Path("/资源.txt"),false);
}

使用的函数为:

delete(Path f, boolean recursive)
  • f:删除的文件或目录地址
  • recursive:是否递归删除
  • 当要删除的为文件是,递归删除为false
  • 当要删除的是目录且为空时,递归删除为false
  • 当要删除的是目录且不为空,则递归删除为true

IO流的文件上传

   /**
* IO流的文件上传
* @throws IOException
* @throws InterruptedException
*/
@Test
public void uploadFileByIO() throws IOException {
//源文件地址
String srcFilePath = "D:\\资源集合.txt";
//目标文件地址
String destFilePath = "/资源集合.txt";
//输入流
FileInputStream fis = new FileInputStream(new File(srcFilePath));
//通过hdfs封装的方法获取输出流
FSDataOutputStream fos = fileSystem.create(new Path(destFilePath)); //最原始的方法
// int i = 0;
// while ( ( i = fis.read()) != -1 ){
// fot.write(i);
// } //hdfs封装的方法
IOUtils.copyBytes(fis,fos,configuration); //关闭IO流
IOUtils.closeStream(fis);
IOUtils.closeStream(fos); }
  • IOUtils 使用时注意要使用hadoop的包,不要使用错了
  • configuration 为我们的全局变量,即配置

IO流的文件下载

	/**
* IO流的文件下载
* @throws IOException
* @throws InterruptedException
*/
@Test
public void downFileByIO() throws IOException { //源文件
String srcFilePath = "/资源集合.txt"; //目标文件
String destFilePath = "d:\\资源.txt"; //获得输入流
FSDataInputStream fis = fileSystem.open(new Path(srcFilePath)); //获得输出流
FileOutputStream fos = new FileOutputStream(new File(destFilePath)); //传输
IOUtils.copyBytes(fis,fos,configuration); //关闭
IOUtils.closeStream(fis);
IOUtils.closeStream(fos); }

HDFS客户端操作(JAVA代码)的更多相关文章

  1. Hadoop JAVA HDFS客户端操作

    JAVA HDFS客户端操作 通过API操作HDFS org.apache.logging.log4jlog4j-core2.8.2org.apache.hadoophadoop-common${ha ...

  2. 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)

    一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...

  3. Hadoop之HDFS客户端操作

    1. HDFS 客户端环境准备 1.1 windows 平台搭建 hadoop 2.8.5 2. 创建Maven工程 # pom.xml <dependencies> <depend ...

  4. 大数据学习——hdfs客户端操作

    package cn.itcast.hdfs; import org.apache.commons.io.IOUtils; import org.apache.hadoop.conf.Configur ...

  5. 在linux安装redis单机和集群后,如何在windows上使用redis客户端或者java代码访问错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略,默认会只准许本地访问。需要通过简单配置,完成允许外网访问。

    这几天在学习在linux上搭建服务器的工作,可谓历经艰辛.可喜最后收获也不少. 这次是在linux上搭建redis服务器后从windows上缺无法访问,连接不上. 仔细回忆以前搭建nginx和ftp的 ...

  6. 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  7. 在命令提示符窗口下(cmd)使用指令操作并编译java代码,运行java编译代码

    使用cmd操作java代码,编译.java文件,运行.class文件. 操作步骤: 1:创建一个文件夹: 例如:在e盘根目录(\)下面创建一个名为Hello的文件夹: 使用md指令:如图 在e盘中会生 ...

  8. Hadoop系列007-HDFS客户端操作

    title: Hadoop系列007-HDFS客户端操作 date: 2018-12-6 15:52:55 updated: 2018-12-6 15:52:55 categories: Hadoop ...

  9. HDFS的Java客户端操作代码(HDFS的查看、创建)

    1.HDFS的put上传文件操作的java代码: package Hdfs; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

随机推荐

  1. 经典c程序100例==11--20

    [程序11] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1 ...

  2. Integer a=1,b=1,c=500,d=500;a==b,c==d;

    public class test { public static void main(String[] args){ Integer a=1,b=1,c=500,d=500; System.out. ...

  3. ixgbe 驱动 为xxx驱动做准备1

    网卡都是pci设备,因此这里每个网卡驱动其实就是一个pci驱动.并且intel这里是把好几个万兆网卡(82599/82598/x540)的驱动做在一起的.V4L2 一样几个类型摄像头合并在一起 先说一 ...

  4. Java开发环境搭建(若jdk8按默认安装后没有jre文件夹,卸载重装时选择完整安装)

    JDK下载与安装(JDK 8是主流,新版版就是增加了一些新特性) 卸载旧JDK 删除java的安装目录 删除JAVA_HOME 删除path下关于java的目录 在cmd命令行中输入java vers ...

  5. (一)廖师兄springboot微信点餐SQL建表脚本

      数据库设计 数据库表之间的关系 类目表(product_category) 商品表(product_info) 订单主表(order_master) 订单详情表(order_detail) 卖家信 ...

  6. Serilog 源码解析——数据的保存(下)

    上一篇中,我们提到了日志数据是如何进行解析了.然而,Serilog 灵活采用了不同的策略(Policy)决定一个日志对象如何解析到LogEventPropertyValue的子类对象中,即采用了ISc ...

  7. NO.A.0002——Git简史及安装教程/创建本地仓库/提交项目到本地仓库/误删还原

    一.Git简史及同类产品对比: 1.git简史:        同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linu ...

  8. 【建议收藏】一份阿里大牛花了三天整理出来的XML学习笔记,写的非常详细

    1. 什么是XML? XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种标记语言,很类似 HTMLXML 的设计宗旨是传输数据,而非显示数据XML 标签没有 ...

  9. 关于oracle11g 和sqldeverloper的安装配置

    0友情提示:以下下载地址都是我的百度云分享链接安全无毒请放心下载! 电脑配置 win10 jdk版本1.7 下载oracle11G 版本 下载地址:安装很简单 sqldverloper(oracleD ...

  10. yii2 删除数据

    直接 model 删除 $model = User::find($id); $model->delete(); 带有条件的删除 $connection ->createCommand() ...