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文件和文件夹的关键知识点,特别是基于Hadoop 2.4版本。 首先,理解HDFS的基础概念至关重要。HDFS是一种分布式文件系统,设计用于跨大量廉价硬件节点存储和处理大数据。它遵循主从...
2. HDFS API:通过FSDataInputStream,可以读取HDFS文件并写入本地文件系统。 四、HDFS的文件创建与删除 1. 创建文件夹:使用`hadoop fs -mkdir`命令创建目录,如`hadoop fs -mkdir /myfolder`。 2. 删除文件:...
hdfs dfs -test -e 文件或目录名 第三步,查看检测结果: echo $? 若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录不存在。 二、Java代码实现 import org.apache.hadoop.conf.Configuration; ...
Python在HDFS文件系统上实现高效存储的过程不仅限于使用H5Py库,还可以借助其他工具和库,比如Pydoop,这是一个支持在Python中操作HDFS的库。Pydoop允许用户以Python的方式编写MapReduce任务,并与HDFS进行交互,...
* 上传文件或目录:hdfs dfs -put log.txt /log/20161001/ 或 hdfs dfs -copyFromLocal log.txt /log/20161001/ * 显示目录下的文件:hdfs dfs -ls /log/20161001/ * 递归显示目录下的文件:hdfs dfs -ls -R /log/...
在大数据处理领域,Hadoop 分布式文件系统(HDFS)扮演着核心角色。为了高效地与HDFS交互,Java API 提供了一套丰富的工具和类库,使得开发者能够方便地进行文件的读写、上传、下载、遍历、查找、拷贝以及管理HDFS上...
4. **编写Hadoop程序**:使用Eclipse创建Java项目,导入Hadoop相关的库(这些库通常可以从Hadoop的lib目录下找到),编写读写HDFS文件的代码。 5. **测试HDFS操作**:通过Eclipse内置的HDFS浏览器或者在代码中调用...
HDFS 基础知识大总结 HDFS(Hadoop Distributed File System)是 Hadoop 项目中的一部分,是一种分布式文件系统。...HDFS 是一种功能强大且灵活的分布式文件系统,提供了许多便捷的命令和 Web 界面来操作文件系统。
本文档详细介绍了如何在CentOS 6.6 X64操作系统上搭建Hadoop 2.7.0版本的HDFS(Hadoop Distributed File System)分布式文件系统。该过程分为几个主要步骤:环境准备、安装Java环境、部署ZooKeeper集群、创建Hadoop...
(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 /文件夹名
实验报告“云计算技术实验报告四HDFS文件的读写”主要涵盖了如何在Hadoop的分布式文件系统(HDFS)上进行文件操作,包括文件的上传和下载,以及文件的合并。该实验是针对计算机科学专业的《云计算技术》课程设计,...
HDFS(Hadoop Distributed File System)是Hadoop的核心组件,提供了一个高容错、可扩展的分布式文件系统。本文将深入探讨在搭建好Hadoop环境后,如何使用Eclipse进行HDFS的基本操作。 首先,我们要理解HDFS的基本...
在Java程序中操作HDFS文件主要依赖于`org.apache.hadoop.fs.FileSystem`类,该类提供了许多方法用于执行文件系统操作,如创建文件、删除文件、读写文件等。 ##### 1. 创建文件系统实例 ```java Configuration conf ...
本教程将详细讲解如何利用HDFS API进行文件的上传、创建、删除以及重命名等基本操作。这些API是Java编程接口,为开发者提供了与HDFS交互的便利。 首先,我们需要导入Hadoop相关的库,通常在Java项目中,这可以通过...
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 ...
在Hadoop分布式文件系统(HDFS)中,进行操作通常通过命令行界面(CLI)进行,这包括管理文件、目录以及与本地文件系统的交互。本文将详细介绍HDFS的Shell操作,主要涵盖基本语法、常用命令以及其用法。 首先,HDFS...
java操作hadoop的hdfs的各种操作,包括文件创建,删除,文件夹创建,上传文件,下载文件,读取文件等
在大数据处理场景中,经常需要将Excel文件上传到Hadoop分布式文件系统(HDFS)中进行进一步的数据处理或分析。然而,由于HDFS本身并不直接支持Excel文件格式,通常的做法是先将Excel文件转换为CSV等更易于处理的格式...
hdfs-compress 压缩hdfs文件 一般压缩hdfs指 ,数据文件的压缩 和 mapred 中间结果压缩 工程只做数据压缩,至于MR中间结果压缩减少网络IO,只需要配置 mapred-site.xml 即可,网上资料很多。 工程只实现了lzo的压缩...
列表文件目录可以使用hdfs dfs -ls路径命令,创建文件夹可以使用hdfs dfs -mkdir文件夹名称命令,上传文件可以使用hdfs dfs -put源路径目标存放路径命令,下载文件可以使用hdfs dfs -get HDFS文件路径本地存放路径...