package cn.framelife.hadoop;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
/**
* 上传本地文件到HDFS
* @author 潘广伟
*
*/
public class CopyFile {
public static void main(String[] args) {
Configuration configuration = new Configuration();
//如果是远程集群中的hdfs,我们需要有以下两个配置文件
configuration.addResource(new Path("core-site.xml"));
configuration.addResource(new Path("hdfs-site.xml"));
try {
//根据配置获取到hdfs系统对象
FileSystem hdfs = FileSystem.get(configuration);
//源文件
Path src = new Path("/home/benben/abc");
//hdfs服务器中的路径
Path dst = new Path("/user/");
hdfs.copyFromLocalFile(src, dst);
System.out.println("upload to"+configuration.get("fs.default.name"));
//遍历hdfs下所有的文件
FileStatus[] files = hdfs.listStatus(dst);
for (FileStatus file : files) {
System.out.println(file.getPath());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package cn.framelife.hadoop;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
/**
* 在HDFS中创建一个文件
*
* @author 潘广伟
*
*/
public class CreateFile {
public static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.addResource(new Path("core-site.xml"));
configuration.addResource(new Path("hdfs-site.xml"));
try {
FileSystem hdfs = FileSystem.get(configuration);
byte[] buffer = "Hello Hadoop".getBytes();
Path newPath = new Path("/user/hello1.txt");
FSDataOutputStream outputStream = hdfs.create(newPath);
outputStream.write(buffer, 0, buffer.length);
} catch (IOException e) {
e.printStackTrace();
}
}
}
package cn.framelife.hadoop;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
/**
* 删除HDFS文件
* @author 潘广伟
*
*/
public class DeleteFile {
public static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.addResource(new Path("core-site.xml"));
configuration.addResource(new Path("hdfs-site.xml"));
try {
FileSystem hdfs = FileSystem.get(configuration);
Path pathOfHDFS = new Path("/user/hello1.txt");
//文件是否存在
if(hdfs.exists(pathOfHDFS)){
/*
* if path is a directory and set to true, the directory is deleted else throws an exception.
* In case of a file the recursive can be set to either true or false.
*/
hdfs.delete(pathOfHDFS, false);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package cn.framelife.hadoop;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class Rename {
/**
* 给HDFS中的文件重新命名
* @param 潘广伟
*/
public static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.addResource(new Path("core-site.xml"));
configuration.addResource(new Path("hdfs-site.xml"));
try {
FileSystem hdfs = FileSystem.get(configuration);
Path pathOfHDFS = new Path("/user/abc.txt");
Path newPathName = new Path("/user/abcd.txt");
//成功就返回true
boolean isRename = hdfs.rename(pathOfHDFS, newPathName);
System.out.println(isRename);
} catch (IOException e) {
e.printStackTrace();
}
}
}
package cn.framelife.hadoop;
import java.io.IOException;
import java.util.Arrays;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
/**
* 查看某个文件在HDFS集群的位置
* @author 潘广伟
*
*/
public class WhereIsFile {
public static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.addResource(new Path("core-site.xml"));
configuration.addResource(new Path("hdfs-site.xml"));
try {
FileSystem hdfs = FileSystem.get(configuration);
Path pathOfHDFS = new Path("/user/hello.txt");
FileStatus fileStatus = hdfs.getFileStatus(pathOfHDFS);
BlockLocation[] blockLocations = hdfs.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());
for(BlockLocation block : blockLocations){
System.out.println(Arrays.toString(block.getHosts())+ "\t" + Arrays.toString(block.getNames()));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package cn.framelife.hadoop;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class GetLastTime {
/**
* 获取HDFS文件的最后修改时间
* @param 潘广伟
*/
public static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.addResource(new Path("core-site.xml"));
configuration.addResource(new Path("hdfs-site.xml"));
try {
FileSystem hdfs = FileSystem.get(configuration);
Path pathOfHDFS = new Path("/user/abcd.txt");
FileStatus file = hdfs.getFileStatus(pathOfHDFS);
long time = file.getModificationTime();
System.out.println(time);
} catch (IOException e) {
e.printStackTrace();
}
}
}
package cn.framelife.hadoop;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
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;
/**
* 获取HDFS集群上所有节点名称
*
* @author 潘广伟
*
*/
public class GetDataNodeName {
public static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.addResource(new Path("core-site.xml"));
configuration.addResource(new Path("hdfs-site.xml"));
DistributedFileSystem hdfs;
try {
hdfs = (DistributedFileSystem) FileSystem.get(configuration);
DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats();
for (DatanodeInfo dataNode : dataNodeStats) {
System.out.println(dataNode.getHostName() + "\t" + dataNode.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
本篇文章将深入讲解如何使用HDFS Java API进行文件的上传、下载、查看以及集群环境的相关操作。 首先,我们要了解HDFS API的基本概念。HDFS API是Hadoop的核心组件之一,它提供了一组Java类和接口,允许用户在HDFS...
1. 获取HDFS实例或对象: 在Hadoop中,我们通常通过`FileSystem`类的静态方法`get(URI uri, Configuration conf)`来获取一个指向HDFS的实例。这里的`uri`参数通常是`hdfs://namenode_address:port`,`conf`参数是一...
本篇文章将详细探讨如何使用HDFS Java API来实现文件上传的功能。 首先,我们需要引入Hadoop相关的jar包。在描述中提到,附件包含了所有必要的jar包,这通常包括`hadoop-common`、`hadoop-hdfs`等核心组件的库文件...
适合刚接触hadoop的学生或小白,内容包括HDFS shell操作及HDFS Java API编程 有图片有代码
【大数据技术基础实验报告-调用Java API实现HDFS操作】 本实验主要涵盖了大数据技术的基础,特别是如何在Linux环境下利用Java API对Hadoop分布式文件系统(HDFS)进行操作。实验涉及的主要步骤包括Eclipse的安装、...
### 知识点详解:熟练掌握HDFS的Java API接口访问 #### 一、HDFS简介及Java API接口概述 HDFS(Hadoop Distributed File System)是Apache Hadoop项目的核心组成部分之一,它是一种分布式文件系统,专为处理大规模...
在分布式存储领域,Hadoop HDFS(Hadoop Distributed File System)是广泛使用的系统,它提供了高容错性和高吞吐量的数据访问。本教程将详细讲解如何利用HDFS API进行文件的上传、创建、删除以及重命名等基本操作。...
HDFS Java api 简单程序.zip
在分布式存储领域,Hadoop Distributed...总之,HDFS的JAVA接口API为Java开发者提供了强大的工具,使得在分布式环境中处理大量数据变得简单高效。无论是基本的文件操作还是复杂的集群管理,都可以通过这些API轻松实现。
HDFS采用了简单的一致性模型,支持文件的一次写入和多次读取,允许追加写入但不支持文件的随机修改。HDFS特别适合于流式数据访问模式,关注的是数据吞吐量而不是访问延迟,典型应用场景包括存储大型文件(GB~TB级别...
HDFS Java API的使用简化了对HDFS的操作,使得开发者能够在应用程序中轻松地读取、写入和管理HDFS上的大数据。然而,为了保证高可用性和数据安全性,还需要考虑如HA(High Availability)配置,以防止NameNode单点...
在本项目中,"使用springboot基于hdfs和HBase实现的一个海量的对象存储服务.zip",我们探讨的是如何利用SpringBoot框架与Hadoop生态系统中的HDFS(Hadoop Distributed File System)以及NoSQL数据库HBase来构建一个...
这个子模块可能包含了Java类,这些类使用Spring Data Hadoop的API来实现文件上传、下载等操作,或者包含了配置文件,定义了与HDFS集群的连接参数。 总的来说,这个“基于spring-boot和hdfs的网盘”应用结合了现代...
本教程将详细讲解如何使用Java API进行HDFS上的文件存取操作,包括文件上传和下载,以及客户端的基本使用。 一、HDFS简介 HDFS是Apache Hadoop项目的核心部分,设计用于处理海量数据,通过在廉价硬件上实现数据的...
1. **源代码**:实现了FTP与HDFS交互的Java类和库,可能包括FTP服务器的扩展,以及与Hadoop HDFS API的接口。 2. **配置文件**:用于设置FTP服务器和HDFS连接的参数,例如服务器端口、认证信息、HDFS集群配置等。 3....
2. **HDFS API**:Java API提供了对HDFS的全面操作,包括文件创建、读写、删除等,常用于开发MapReduce程序。 3. **WebUI监控**:NameNode提供了一个Web界面,用户可以查看HDFS的状态,包括文件系统树、数据块分布...
HDFS的编程实践是指使用HDFS API编写程序来访问和操作HDFS文件系统,包括文件的读写、文件的创建和删除、文件的重命名等操作。HDFS API提供了多种编程语言的支持,如Java、Python、C++等,使得开发者可以轻松地使用...
总之,使用Hadoop的Java API上传文件到HDFS是一个相对简单的过程,主要涉及配置、文件系统的获取、目录检查以及数据的读写操作。理解这些概念和步骤对于任何处理Hadoop相关任务的开发人员都至关重要。
这个模块提供了一个简单易用的API来执行读写操作。以下是如何使用`pyhdfs`进行文件操作的示例: 1. **文件读取**: - 首先,需要导入`HdfsClient`,指定HDFS的地址和端口,例如:`client = HdfsClient(hosts='ghym...