package com.my.hdfs;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
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 java.text.SimpleDateFormat;
import java.util.Date;
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.Path;
import org.apache.hadoop.io.IOUtils;
@SuppressWarnings("all")
public class HDFSTest {
private final static String HDFS_PATH = "hdfs://pc1:9000/hellow";
public static void main(String[] args) throws IOException, URISyntaxException {
//获取到HDFS文件系统对象
final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration());
createFolder(fileSystem,new Path("/logs"));
fileUploadToHDFS(fileSystem,new Path("/logs/hadoop9.avi"),new File("D:/hadoop9.avi"));
downLoadHDFSFile(fileSystem,new Path("/logs/hadoop9.avi"),new File("D:/hadoop9_02.avi"));
deleteFileOrFolder(fileSystem,new Path("/logs"));
getHDFSDirList(fileSystem);
}
/**
* 创建文件夹
* @param fileSystem HDFS文件系统对象
* @param path 要创建的文件夹,注意带有"/"为文件系统的根目录下下,否则为当前用户所在的路径
* @throws IOException
*/
private static void createFolder(final FileSystem fileSystem,final Path path) throws IOException {
if (fileSystem.exists(path)) {
System.out.println(path.getName()+" folder exist!");
} else {
fileSystem.mkdirs(path);
}
}
/**
* 上传文件到HDFS文件系统
* @param fileSystem HDFS文件系统对象
* @param toPath HDFS文件系统目标路径
* @param srcFile 本地源文件
* @throws IOException
* @throws FileNotFoundException
*/
private static void fileUploadToHDFS(final FileSystem fileSystem,final Path toPath,final File srcFile)
throws IOException, FileNotFoundException {
final FSDataOutputStream out = fileSystem.create(toPath);
final BufferedInputStream in = new BufferedInputStream(new FileInputStream(srcFile));
IOUtils.copyBytes(in, out, 1024, true);
}
/**
* 删除HDFS文件系统上的文件或文件夹
* @param fileSystem HDFS文件系统对象
* @param fsPath HDFS文件系统上的文件或者是文件夹
* @throws IOException
*/
private static void deleteFileOrFolder(final FileSystem fileSystem,final Path fsPath)
throws IOException {
if (fileSystem.exists(fsPath)) {
System.out.println("folder exist,delete the folder!");
fileSystem.delete(fsPath, true);//注意如果是文件夹必须为true,如果是文件true和false无所谓
} else {
System.out.println("folder not exist!");
}
}
/**
* 从HDFS文件系统上下载文件
* @param fileSystem HDFS文件系统对象
* @param srcFile HDFS文件系统上的源文件
* @param toPath 下载到本地目标路径
* @throws IOException
* @throws FileNotFoundException
*/
private static void downLoadHDFSFile(final FileSystem fileSystem,final Path srcFile,final File toPath)
throws IOException, FileNotFoundException {
final FSDataInputStream in = fileSystem.open(srcFile);
final BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(toPath));
IOUtils.copyBytes(in, out, 1024, true);
}
/**
* 获取到HDFS文件系统上的根目录列表
* @param fileSystem HDFS文件系统对象
* @throws IOException
*/
private static void getHDFSDirList(FileSystem fileSystem) throws IOException {
final FileStatus[] listStatus = fileSystem.listStatus(new Path("/"));
for (FileStatus fileStatus : listStatus) {
String isDir = fileStatus.isDir()?"文件夹":"文件";
final String permission = fileStatus.getPermission().toString();
final short replication = fileStatus.getReplication();
final long len = fileStatus.getLen();
final String dateStr = new SimpleDateFormat("yyyy-MM-dd hh:MM:ss").format(new Date(fileStatus.getAccessTime()));
final String path = fileStatus.getPath().toString();
System.out.println(isDir+"\t"+permission+"\t"+replication+"\t"+len+"\t"+dateStr+"\t"+path);
}
}
}
分享到:
相关推荐
Java管理hdfs文件和文件夹的工具类,最近版本hadoop2.4。
3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等)-java 网址:...
在安装好HDFS的前提下,此项目包含HDFS的基本操作,上传,下载,创建文件夹等。
hdfs dfs -test -e 文件或目录名 第三步,查看检测结果: echo $? 若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录不存在。 二、Java代码实现 import org.apache.hadoop.conf.Configuration; ...
(6)移动hdfs文件:hdfs dfs -mv /hdfs路径 /hdfs路径 (7)复制hdfs文件:hdfs dfs -cp /hdfs路径 /hdfs路径 (8)删除hdfs文件:hdfs dfs -rm /文件名 (9)删除hdfs文件夹:hdfs dfs -rm -r /文件夹名
4.3.6. 编写Java代码——向HDFS文件系统创建文件夹 24 4.3.7. 编写Java代码——文件上传 27 4.3.8. 编写Java代码——删除文件夹 30 4.3.9. 编写Java代码——重命名文件 31 4.3.10. 编写Java代码——遍历文件夹 32 ...
java操作hadoop的hdfs的各种操作,包括文件创建,删除,文件夹创建,上传文件,下载文件,读取文件等
通过调用hdfs的api,进行文件上传、创建、删除、重命名等操作的代码
hdfs-compress 压缩hdfs文件 一般压缩hdfs指 ,数据文件的压缩 和 mapred 中间结果压缩 工程只做数据压缩,至于MR中间结果压缩减少网络IO,只需要配置 mapred-site.xml 即可,网上资料很多。 工程只实现了lzo的压缩...
Linux,eclipse 要求编程实现GetMerger功能,实现从云端(HDFS)中下载一个包含多个文件的路径(文件夹),将所有文件合并后保存到本地(GetMerge)。
java操作hdfs文件系统的完整依赖包,如果是tomcat服务器,解压后全部放在web工程的lib文件夹下即可.
一个HDFS文件或目录比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更简单的/parent/child(假设你配置文件中的默认值是namenode:namenodeport)。大多数FS Shell命令的行为和对应的...
创建文件夹 传文件 下载文件 删除文件、文件夹 查看下HDFS的文件和目录
HDFS的API操作,包括 HDFS文件上传,删除,下载,文件夹的判断,获取文件夹目录详情,还有基于IO实现文件的上传和下载。
3.1 HDFS 客户端环境准备 3.2.1 HDFS 文件上传(测试参数优先级) 3.2.2 HDFS 文件下载 3.2.3 HDFS 文件夹删除 3.2.4
HDFSAPI操作(项目功能):创建文件夹,上传文件,下载文件,删除文件,查找某些类型的文件,复制文件,移动文件,重命名文件. 基于Hadoop实现的文件存储系统 技术点redis:利用redisson来对上传文件进行布隆过滤...
hdfs高可用配置和相关文件夹的建立,亲测试可用,
Hadoop Distributed File System (Hadoop分布式文件系统)。HDFS 具有高容错性,并且可以被部署在低价的...Namenode管理着整个分布式文件系统,对文件系统的操作(如建立、删除文件和文件夹)都是通过Namenode来控制。
1.HDFS命令行操作 1.1 HDFS命令行操作 1.1.1HDFS概述 HDFS概述 Hadoop由3个部分构成: Core HDFS MapReduce 1.1.2HDFS命令 HDFS命令 HDFS基本操作命令: -help [cmd] // 显示命令的帮助信息 -ls(r) <path> // 显示...
hdfs文件及文件夹的增删改查,支持本地文件页面画拖拽至hdfs,像windows服务器操作文件那样方便。