【Hadoop】HDFS的java客户端编写
来源:互联网 发布:veket linux img 编辑:程序博客网 时间:2024/06/04 23:06
项目使用了Maven Project 快速进行HDFS 客户端程序测试
客户端操作系统:win10 64位
JDK: 1.7.0_79
开发工具 :Eclipse Luna
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.alixx</groupId> <artifactId>hdfsz</artifactId> <version>0.0.1</version> <packaging>jar</packaging> <name>hdfsz</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.4</version> <scope>test</scope> </dependency> <!-- hadoop 分布式文件系统类库 --><dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.7.3</version></dependency><!-- hadoop 公共类库 --><dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.3</version></dependency> </dependencies></project>测试类HDFSUtil
package com.bonc.hdfsz;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import org.apache.commons.compress.utils.IOUtils;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FSDataOutputStream;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 HdfsUtil {/*FileSystem是文件系统的抽象,HDFS是分布式文件系统对FileSystem的实现,如此即可解耦合。不论底层文件系统的具体实现是什么样的,文件系统FileSystem统一提供了访问接口。*/FileSystem fs = null;@Beforepublic void init() throws IOException, InterruptedException, URISyntaxException{//访问HDFS文件系统两种方式Configuration conf = new Configuration();/*方式1:设置默认文件系统、设置run Configuration的参数 -DHADOOP_USER_NAME=dream361 默认读取classpath下的xxx.site.xml配置文件,并解析其内容,封装到conf对象中。conf.set("fs.defaultFS", "hdfs://master:9000/");*/fs = FileSystem.get(conf);/*方式2:在此方法的参数中设置默认文件系统、用户名 根据配置信息,去获取一个具体文件系统的客户端操作实例对象*/fs = FileSystem.get(new URI("hdfs://master:9000/"), conf, "dream361");}// 上传方式1:更底层的@Testpublic void upload1() throws IOException{Path dst = new Path("hdfs://master:9000/c.txt");FSDataOutputStream os = fs.create(dst);FileInputStream in = new FileInputStream("D:/c.txt");IOUtils.copy(in, os);}// 上传方式2: 封装好的@Testpublic void upload2() throws IllegalArgumentException, IOException{fs.copyFromLocalFile(new Path("D:/c2.txt"), new Path("hdfs://master:9000/c3.txt"));}// 下载文件@Testpublic void download() throws Exception, IOException{fs.copyToLocalFile(new Path(""), new Path(""));}//迭代列出文件@Testpublic void listFiles1() throws FileNotFoundException, IllegalArgumentException, IOException{//listFiles列出的是文件信息,而且提供递归遍历 ,第二个参数为false则不提供递归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);}}//迭代列出目录及文件@Testpublic void listFiles2() throws FileNotFoundException, IllegalArgumentException, IOException{//listStatus可以列出文件和目录信息,但是不提供自带的递归遍历 FileStatus[] listStatus = fs.listStatus(new Path("/"));for(FileStatus status:listStatus){String name = status.getPath().getName();//判断是目录还是文件,然后打印name+和判断结果System.out.println(name+(status.isDirectory()?" is dir":" is file"));}}//创建目录@Testpublic void mkdir() throws IllegalArgumentException, IOException{fs.mkdirs(new Path("/aa/bb/cc"));}//删除文件或目录@Testpublic void rmFile() throws IllegalArgumentException, IOException{fs.delete(new Path("/aa"),true);}//移动文件@Testpublic void mvFile() throws IllegalArgumentException, IOException{fs.rename(new Path("/aa/a.txt"), new Path("/bb/b.txt"));}//在程序入口测试public static void main(String[] args) throws IOException {//配置文件信息Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path src = new Path("hdfs://master:9000/jdk.tar.gz");FSDataInputStream in = fs.open(src);FileOutputStream os = new FileOutputStream("D:/jdk.tar.gz");IOUtils.copy(in, os);}}
0 0
- 【Hadoop】HDFS的java客户端编写
- HDFS的java客户端编写
- HDFS的java客户端编写
- Hadoop3-HDFS的java客户端编写
- Hadoop—HDFS的Java客户端编程
- HDFS的JAVA客户端编写(JAVA代码实现对HDFS的操作)
- hdfs的java客户端
- Hadoop之HDFS客户端------java实现
- hadoop源码 - HDFS的文件操作流 写操作(客户端)
- Hadoop之HDFS客户端的权限错误:Permission denied
- Hadoop2.4.1 HDFS的Java客户端开发
- Hdfs的JAVA客户端基本操作
- 【hadoop】 2003-hdfs的java接口
- Hadoop HDFS文件操作的Java代码
- Hadoop HDFS 的 Java API 操作方式
- Hadoop HDFS文件操作的Java代码
- Hadoop的HDFS Java pai 读写操作
- Hadoop之HDFS的Java Interface(三)
- linux笔记-selinux
- LeetCode | 412. Fizz Buzz
- 应用服务器性能优化
- linux系统tomcat应为被定时任务脚本监控自动部署,服务器重启导致同一个tomcat出现很多进程,kill -9杀死又出现等一系列问题解决。
- 大数据学习笔记之四十八 推荐算法的主要算法第一部分
- 【Hadoop】HDFS的java客户端编写
- POJ 1230 Pass-Muraille (贪心)
- 并查集节点删除于添加
- 习惯养成计划
- PAT-A1100
- go语言web框架gin 从请求中取参数
- 超出边界字体换行
- leetcode
- java windows开发环境导入证书