看着书写了下通过java操作filesystem api对hdfs操作的简单操作,贴下代码:
package com.lyq.study.api; import java.io.IOException; import org.apache.hadoop.fs.BlockLocation; 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.hdfs.DistributedFileSystem; import org.apache.hadoop.hdfs.protocol.DatanodeInfo; import com.lyq.study.util.HBaseConfigUtils; public class HDFS_API { //上传文件到hdfs上 public static void copyFile() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path src = new Path("D:\\data.txt"); Path dst = new Path("/test/input"); hdfs.copyFromLocalFile(src, dst); System.out.println("==========="); FileStatus files[] = hdfs.listStatus(dst); for(FileStatus file:files){ System.out.println(file.getPath()); } } //创建hdfs文件 public static void createFile() throws IOException { byte[] buff = "hello world hadoop study hbase study hello world study hadoop hbase".getBytes(); FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path dst = new Path("/test/input/test.txt"); FSDataOutputStream outputStream = hdfs.create(dst); outputStream.write(buff, 0, buff.length); } //重命名hdfs文件 public static void renameFile() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path frpath = new Path("/test/input/test.txt"); Path topath = new Path("/test/input/test1.txt"); boolean rename = hdfs.rename(frpath, topath); System.out.println("rename ? "+rename); } //删除hdfs文件 public static void deleteFile() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path delpath = new Path("/test/input/test1.txt"); boolean isdelete = hdfs.delete(delpath,false); // Boolean isdelete = hdfs.delete(delpath,true);//递归删除 System.out.println("isdelete ? "+isdelete); } //查看hdfs文件最好修改时间 public static void getLTime() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path fpath = new Path("/test/input/a.txt"); FileStatus filestatus = hdfs.getFileStatus(fpath); long modificationTime = filestatus.getModificationTime(); System.out.println("Modifycation time is: "+modificationTime); } //查看hdfs文件是否存在 public static void checkFile() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path fpath = new Path("/test/input/a.txt"); boolean isExists = hdfs.exists(fpath); System.out.println("Exist ? "+isExists); } //查看hdfs文件在集群上的位置 public static void fileLoc() throws IOException { FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); Path fpath = new Path("/test/input/a.txt"); FileStatus filestatus = hdfs.getFileStatus(fpath); BlockLocation[] blkLocations = hdfs.getFileBlockLocations(filestatus, 0, filestatus.getLen()); int blockLen = blkLocations.length; for(int i=0;i<blockLen;i++){ String[] hosts = blkLocations[i].getHosts(); System.out.println("block"+i+"location: "+hosts[i]); } } //获取hdfs集群上所以节点 public static void getList() throws IOException { FileSystem fs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0)); DistributedFileSystem hdfs = (DistributedFileSystem) fs; DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats(); String[] names = new String[dataNodeStats.length]; for(int i=0;i<dataNodeStats.length;i++){ names[i] = dataNodeStats[i].getHostName(); System.out.println("node"+i+"name: "+names[i]); } } public static void main(String[] args) throws IOException { copyFile(); // createFile(); // renameFile(); // deleteFile(); // getLTime(); // checkFile(); // fileLoc(); // getList(); } }
package com.lyq.study.util; import org.apache.hadoop.conf.Configuration; public class HBaseConfigUtils { /** * 获取HBaseConfiguration * @param flag * 集群标识:0,单机;1集群 * @return */ public static Configuration getHBaseConfig(int flag){ Configuration conf = new Configuration(); if(flag > 0){ //集群 conf.set("fs.defaultFS", "hdfs://master129:9000/"); conf.set("mapreduce.framework.name", "local"); conf.set("mapred.job.tracker", "master129:9001"); conf.set("hbase.zookeeper.quorum", "master129,slave130,slave131,slave132"); }else{ //单机 conf.set("fs.defaultFS", "hdfs://ubuntu:9000/"); conf.set("mapreduce.framework.name", "local"); conf.set("mapred.job.tracker", "ubuntu:9001"); conf.set("hbase.zookeeper.quorum", "ubuntu"); } return conf; } }
相关推荐
在实际编程中,我们通常会创建一个Java类,导入Hadoop的相关库,然后使用FileSystem类和Path类等来执行HDFS操作。例如,使用`FileSystem.get(conf)`获取FileSystem实例,其中conf是包含HDFS配置信息的Configuration...
而“FileSystem”是一个用Java语言编写的简单文件系统模拟器,旨在帮助用户理解和探索操作系统中的符号链接和硬链接等概念。 Java作为一种跨平台、面向对象的编程语言,因其丰富的类库和高效性能,常常被用于开发...
这个项目是一个基于Java实现的简单文件管理系统,设计用于企业级应用的初步实践。它通过命令行界面提供了一系列基本的文件管理操作,使用户能够执行如列出目录、改变当前工作目录、创建新目录以及复制文件等任务。...
Spring Data JPA提供了一种声明式的方式,通过简单的方法签名就能实现对数据库的CRUD(创建、读取、更新、删除)操作,减少了编写大量的SQL代码的需要。 **Spring Boot** Spring Boot是Spring框架的一个扩展,用于...
总之,通过Hadoop的HDFS Java API,我们可以方便地在Java应用中与HDFS进行集成,实现文件的上传、下载等操作。理解并熟练掌握这些API,对于开发分布式应用,尤其是在大数据处理场景中,是至关重要的。在实际项目中,...
在这个简单的Java文件系统中,我们可以预期它会包含对文件和目录的基本操作,如读、写、创建、删除等。 3. **类设计** - **File类**:代表单个文件,可能包含读取、写入、重命名、删除等方法。 - **Directory类**...
在Java编程环境中,操作HBase并将其数据写入HDFS(Hadoop Distributed File System)是一项常见的任务,特别是在大数据处理和分析的场景下。本篇将详细介绍如何使用Java API实现这一功能,以及涉及到的关键技术和...
在Java编程语言中,实现对本地文件的简单监控是一项实用的技术,这可以帮助开发者在文件系统中检测到诸如移动、复制和粘贴等操作。本文将深入探讨如何利用Java的文件I/O API和事件监听机制来达成这个目标。 首先,...
标题 "Java写的简单文件目录监控程序" 涉及到的是使用Java编程语言实现一个能够监控文件目录变化的工具。这种程序通常用于自动化任务,比如当文件或目录发生变化时自动执行某些操作,如备份、同步或者日志记录。在...
### Java操作Word文档知识点 #### 一、Java操作Word文档概述 在现代办公环境中,Word文档是最常用的文档格式之一。由于其广泛的应用场景,很多时候我们需要通过编程的方式对Word文档进行读写操作。Java作为一种强大...
【filesystem-master.zip】是一个压缩包,包含了某个博主分享的学习资源,主要是关于SpringBoot应用中文件上传和文件管理系统的基础实现。这个项目旨在提供一个基础框架,让学习者可以通过它来理解和实践如何在...
通过这些基本操作,你可以使用HDFS Java API构建复杂的数据处理和分析应用。在实际项目中,还需要考虑错误处理、资源释放和性能优化等细节。记住,正确关闭流和文件系统连接是避免资源泄漏的关键。 在学习和实践中...
通过学习并掌握以上知识点,开发者可以有效地在Java应用程序中执行各种文件操作,无论是简单的文本文件处理还是复杂的文件系统操作,都能游刃有余。实践中,结合具体需求,灵活运用这些工具和技巧,将使你的代码更加...
以上就是关于HDFSJava操作类HDFSUtil以及JUnit测试的主要内容,它涵盖了HDFS的基础操作和高可用环境的配置,对于在Java应用中集成HDFS操作非常实用。在实际项目中,还需要根据具体需求进行调整和扩展,例如添加数据...
- **文件系统链接(FileSystem Links)**:允许Java程序创建软链接和硬链接,类似于Unix系统中的操作,方便在文件系统中进行操作。 - **增强的JShell(JShell增强)**:Java内置的REPL(Read-Eval-Print Loop)...
在给定的“java 源码.rar”压缩包中,包含了几个核心的Java源代码文件,它们分别展示了基础的文件操作、简单的文本编辑器实现以及对CMD命令行的模拟。接下来,我们将深入探讨这些知识点。 1. **基础文件操作**: ...
`java.nio.file`包提供了新的API,如`Files`, `Paths`, 和`FileSystem`,使得文件操作更加灵活且易于使用。 2. **类型推断(Type Inference for Generic Instance Creation)**: 使用`<>`操作符,开发者可以在创建...
本篇文章将深入讲解如何使用HDFS Java API进行文件的上传、下载、查看以及集群环境的相关操作。 首先,我们要了解HDFS API的基本概念。HDFS API是Hadoop的核心组件之一,它提供了一组Java类和接口,允许用户在HDFS...
通过学习这本书,读者可以深入了解如何在Java应用程序中高效地进行文件I/O操作。 #### 二、Path类概述 Path类是NIO.2中最常用的类之一,它为文件系统路径的操作提供了一种高级抽象。Path对象表示一个特定于文件...
以下是一个简单的Java代码示例,展示如何上传和下载文件至HDFS: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public ...