二、JAVA API实现HDFS
2021/11/22 1:10:01
本文主要是介绍二、JAVA API实现HDFS,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前文
- 一、CentOS7 hadoop3.3.1安装(单机分布式、伪分布式、分布式
hdfsdemo通过HDFS上传下载文件
HDFS_CRUD
windows环境下需要使用uitls.exe
可从github下载,并且要设置环境变量 HADOOP_HOME=Location 【安装解压的位置】 PATH添加:%HADOOP_HOME%\bin 和 %HADOOP_HOME%\sbin
Hadoop集群是3.3,建议pom.xml的hadoop依赖包也是3.3
/** * @author LEHOSO * @date 2021/10/18 * @apinote */ public class HDFS_CRUD { FileSystem fs = null; //初始化客户端对象 @Before public void init() throws Exception { //构造一个配置参数对象,设置一个参数:要访问的HDFS的URI Configuration conf = new Configuration(); //这里指定使用的是HDFS conf.set("fs.defaultFS", "hdfs://192.168.142.10:9000"); //通过如下的方式进行客户端身份的设置 System.setProperty("HADOOP_USER_NAME", "root"); //通过FileSystem的静态方法获取文件系统客户端对象 fs = FileSystem.get(conf); } //上传文件到HDFS @Test public void testAddFileToHdfs() throws IOException { //要上传的文件所在本地路径 Path src = new Path("D:/test.txt"); //要上传到HDFS目标路径 Path dst = new Path("/testFile"); //上传文件方法调用 fs.copyFromLocalFile(src, dst); //关闭资源 fs.close(); } //从HDFS中复制文件到本地系统 @Test public void testDownloadFileToLocal() throws IllegalArgumentException, IOException { //下载文件 /** * 在windows平台开发HDFS项目时候,不设置Hadoop开发环境,会报错 * 安装hadoop环境,需要重启IDEA或者重启电脑才能生效 * 需要相关依赖:winuitls.exe、winutis.pdb、hadoop.dll */ fs.copyToLocalFile(false, new Path("/testFile"), new Path("E:/x.txt"), true); /** * delSrc参数设置为False * useRawLocalFileSystem参数设置为true * 下载的文件就没有 带.crc的校验文件 */ fs.close(); } //创建、删除、重命名文件 @Test public void testMkdirAndDeleteAndRename() throws Exception { //创建项目 fs.mkdirs(new Path("/a/b/c")); fs.mkdirs(new Path("/a2/b2/c2")); //重命名文件或文件夹 fs.rename(new Path("/a"), new Path("/a3")); //删除文件夹,如果是非空文件夹,参数2【recurisive】值必须true fs.delete(new Path("/a2"), true); } //查看目录信息,只显示文件 @Test public void testListFiles() throws FileNotFoundException, IllegalArgumentException, IOException { //获取迭代器对象 /**ListFile方法 * param pathstring:为路径 * param recursive:为是否为递归查询 */ RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true); while (listFiles.hasNext()) { LocatedFileStatus fileStatus = listFiles.next(); //打印当前文件名 System.out.println(fileStatus.getPath().getName()); ///打印当前块大小 System.out.println(fileStatus.getBlockSize()); //打印当前文件权限 System.out.println(fileStatus.getPermission()); //打印当前文件内容长度 System.out.println(fileStatus.getLen()); //获取该文件块信息(包含长度,数据块,datanode的信息) BlockLocation[] blockLocations = fileStatus.getBlockLocations(); for (BlockLocation bl : blockLocations) { System.out.println("block-length:" + bl.getLength() + "--" + "block-offset:" + bl.getOffset()); String[] hosts = bl.getHosts(); for (String host : hosts) { System.out.println(host); } } System.out.println("---------分割线---------"); //若测试显示信息太多,可以删除或者禁用log4j } } // 查看文件及文件夹信息 @Test public void testListAll() throws FileNotFoundException, IllegalArgumentException, IOException { // 获取HDFS系统中文件和目录的元数据等信息 FileStatus[] listStatus = fs.listStatus(new Path("/")); String flag = "d-- "; for (FileStatus fstatus : listStatus) { // 判断是文件还是文件夹 if (fstatus.isFile()) flag = "f-- "; System.out.println(flag + fstatus.getPath().getName()); } } }
(HadoopDemo)[https://github.com/lehoso/HadoopDemo]
这篇关于二、JAVA API实现HDFS的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器