二、JAVA API实现HDFS
2021-11-22 00:40
1296 查看
目录
前文
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
为pom.xml增加依赖
<!-- hadoop依赖库--> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>3.3.1</version> </dependency>
新建java文件HDFS_CRUD
/** * @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 56c 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 rec ad8 ursive:为是否为递归查询 */ 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()); } } }
GitHub下载地址
相关文章推荐
- HDFS 使用Java api实现上传/下载/删除文件
- Apache Hadoop 使用Java API操作HDFS之代码实现文件夹遍历文件上传下载
- HDFS 使用java api实现上传/下载/删除文件
- 利用java API实现本地文件上传至hdfs
- 用JAVA API实现HDFS常用shell命令的功能(新建文件夹,上传文件,下载文件,判断文件是否存在)
- 用Fluentd实现收集日志到HDFS(下)
- 使用NFS实现HA(HDFS High Availability With NFS)
- Redis(ZADD)使用Java API实现简单排名
- python实现对HDFS的文件操作
- hadoop java api操作hdfs出现Retrying connect to server: localhost/127.0.0.1:8020
- HDFS中JAVA API的使用
- Hadoop 系列(七)—— HDFS Java API
- 后端分布式系列:分布式存储-HDFS NameNode 设计实现解析
- HDFS集群内文件移动的Java实现
- 【总结】Hadoop2.2.0中HDFS的高可用性实现原理
- HDFS-RAID原理和实现
- 04 Java API:arraylist实现算术表达式的解析
- 常用HDFS java API
- HDFS java api文件基本操作 CDH-5-11-2
- hadoop学习记录(二)HDFS java api