`
p_3er
  • 浏览: 58170 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

HDFS API的简单使用(1)

 
阅读更多
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 Java API进行文件的上传、下载、查看以及集群环境的相关操作。 首先,我们要了解HDFS API的基本概念。HDFS API是Hadoop的核心组件之一,它提供了一组Java类和接口,允许用户在HDFS...

    HDFS FS API

    1. 获取HDFS实例或对象: 在Hadoop中,我们通常通过`FileSystem`类的静态方法`get(URI uri, Configuration conf)`来获取一个指向HDFS的实例。这里的`uri`参数通常是`hdfs://namenode_address:port`,`conf`参数是一...

    java操作Hadoop源码之HDFS Java API操作-上传文件

    本篇文章将详细探讨如何使用HDFS Java API来实现文件上传的功能。 首先,我们需要引入Hadoop相关的jar包。在描述中提到,附件包含了所有必要的jar包,这通常包括`hadoop-common`、`hadoop-hdfs`等核心组件的库文件...

    实验二、HDFS shell操作及HDFS Java API编程

    适合刚接触hadoop的学生或小白,内容包括HDFS shell操作及HDFS Java API编程 有图片有代码

    大数据技术基础实验报告-调用Java API实现HDFS操作.doc

    【大数据技术基础实验报告-调用Java API实现HDFS操作】 本实验主要涵盖了大数据技术的基础,特别是如何在Linux环境下利用Java API对Hadoop分布式文件系统(HDFS)进行操作。实验涉及的主要步骤包括Eclipse的安装、...

    熟练掌握HDFS的Java API接口访问

    ### 知识点详解:熟练掌握HDFS的Java API接口访问 #### 一、HDFS简介及Java API接口概述 HDFS(Hadoop Distributed File System)是Apache Hadoop项目的核心组成部分之一,它是一种分布式文件系统,专为处理大规模...

    HDFS-API文件上传、创建、删除、重命名

    在分布式存储领域,Hadoop HDFS(Hadoop Distributed File System)是广泛使用的系统,它提供了高容错性和高吞吐量的数据访问。本教程将详细讲解如何利用HDFS API进行文件的上传、创建、删除以及重命名等基本操作。...

    HDFS Java api 简单程序.zip

    HDFS Java api 简单程序.zip

    HDFS的JAVA接口API操作实例

    在分布式存储领域,Hadoop Distributed...总之,HDFS的JAVA接口API为Java开发者提供了强大的工具,使得在分布式环境中处理大量数据变得简单高效。无论是基本的文件操作还是复杂的集群管理,都可以通过这些API轻松实现。

    星环大数据平台HDFS

    HDFS采用了简单的一致性模型,支持文件的一次写入和多次读取,允许追加写入但不支持文件的随机修改。HDFS特别适合于流式数据访问模式,关注的是数据吞吐量而不是访问延迟,典型应用场景包括存储大型文件(GB~TB级别...

    HDFS架构介绍及JAVA的API使用.pdf

    HDFS Java API的使用简化了对HDFS的操作,使得开发者能够在应用程序中轻松地读取、写入和管理HDFS上的大数据。然而,为了保证高可用性和数据安全性,还需要考虑如HA(High Availability)配置,以防止NameNode单点...

    使用springboot基于hdfs和HBase实现的一个海量的对象存储服务.zip

    在本项目中,"使用springboot基于hdfs和HBase实现的一个海量的对象存储服务.zip",我们探讨的是如何利用SpringBoot框架与Hadoop生态系统中的HDFS(Hadoop Distributed File System)以及NoSQL数据库HBase来构建一个...

    基于spring-boot和hdfs的网盘.zip

    这个子模块可能包含了Java类,这些类使用Spring Data Hadoop的API来实现文件上传、下载等操作,或者包含了配置文件,定义了与HDFS集群的连接参数。 总的来说,这个“基于spring-boot和hdfs的网盘”应用结合了现代...

    HDFS存取实例(java)

    本教程将详细讲解如何使用Java API进行HDFS上的文件存取操作,包括文件上传和下载,以及客户端的基本使用。 一、HDFS简介 HDFS是Apache Hadoop项目的核心部分,设计用于处理海量数据,通过在廉价硬件上实现数据的...

    hdfs-over-ftp-hadoop-0.20.0.rar_ftp_ftpoverhdfs_hdfs文件传入ftp_java

    1. **源代码**:实现了FTP与HDFS交互的Java类和库,可能包括FTP服务器的扩展,以及与Hadoop HDFS API的接口。 2. **配置文件**:用于设置FTP服务器和HDFS连接的参数,例如服务器端口、认证信息、HDFS集群配置等。 3....

    hdfs使用方法.rar

    2. **HDFS API**:Java API提供了对HDFS的全面操作,包括文件创建、读写、删除等,常用于开发MapReduce程序。 3. **WebUI监控**:NameNode提供了一个Web界面,用户可以查看HDFS的状态,包括文件系统树、数据块分布...

    分布式文件系统HDFS(1).pptx

    HDFS的编程实践是指使用HDFS API编写程序来访问和操作HDFS文件系统,包括文件的读写、文件的创建和删除、文件的重命名等操作。HDFS API提供了多种编程语言的支持,如Java、Python、C++等,使得开发者可以轻松地使用...

    上传文件到HDFS

    总之,使用Hadoop的Java API上传文件到HDFS是一个相对简单的过程,主要涉及配置、文件系统的获取、目录检查以及数据的读写操作。理解这些概念和步骤对于任何处理Hadoop相关任务的开发人员都至关重要。

    Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作

    这个模块提供了一个简单易用的API来执行读写操作。以下是如何使用`pyhdfs`进行文件操作的示例: 1. **文件读取**: - 首先,需要导入`HdfsClient`,指定HDFS的地址和端口,例如:`client = HdfsClient(hosts='ghym...

Global site tag (gtag.js) - Google Analytics