HDFS的JAVA API操作

原创 2013年12月04日 10:41:48
package hdfs;

import java.io.IOException;
import java.net.URI;
import java.util.Arrays;

import org.apache.hadoop.conf.Configuration;
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 org.apache.hadoop.hdfs.server.datanode.DataNode;

public class TestHdfs {
	public static void main(String[] args) throws IOException {
		//上传本地文件到HDFS
		Configuration conf = new Configuration();
		conf.set("mapred.job.tracker", "172.30.1.245:9001");
		/*
		String dstFileRemotSrc = "hdfs://172.30.1.245:9000/user/dir1/";
		FileSystem hdfs = FileSystem.get(URI.create(dstFileRemotSrc), conf);

		Path src = new Path("D:\\out");
		Path dst = new Path(dstFileRemotSrc);
		hdfs.copyFromLocalFile(src, dst);
		System.out.println("Upload to " + conf.get("fd.default.name") );

		FileStatus files[] = hdfs.listStatus(dst);
		for (FileStatus fileStatus : files) {
			System.out.println(fileStatus.getPath());
		}
		*/
		
		//创建HDFS文件
		/*
		FileSystem hdfs = FileSystem.get(URI.create("hdfs://172.30.1.245:9000/user/dir1/"), conf);
		Path dst = new Path("hdfs://172.30.1.245:9000/user/dir1/test");
		FSDataOutputStream  outputStream = null;
		byte[] buff  = "Hello Hadoop World!".getBytes();
		try {
			outputStream = hdfs.create(dst);
			outputStream.write(buff, 0, buff.length);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(outputStream != null){
				outputStream.close();
			}
		}
		
		FileStatus files[] = hdfs.listStatus(dst);
		for (FileStatus fileStatus : files) {
			System.out.println(fileStatus.getPath());
		}
		*/
		
		//重命名HDFS文件
		/*
		String srcFile = "hdfs://172.30.1.245:9000/user/dir1/test";
		FileSystem hdfs = FileSystem.get(URI.create(srcFile), conf);
		String dstFile = "hdfs://172.30.1.245:9000/user/dir1/test1";
		Path src = new Path(srcFile);
		Path dst = new Path(dstFile);
		boolean isRename = hdfs.rename(src, dst);
		String result = isRename ? "成功" : "失败";
		System.out.println(result);
		
		FileStatus files[] = hdfs.listStatus(dst);
		for (FileStatus fileStatus : files) {
			System.out.println(fileStatus.getPath());
		}
		*/
		
		//刪除HDFS文件
		/*
		String src = "hdfs://172.30.1.245:9000/user/dir1/test1";
		FileSystem hdfs = FileSystem.get(URI.create(src), conf);
		Path delPath = new Path(src);
		boolean isDeleted = hdfs.delete(delPath, false);
		System.out.println(isDeleted ? "成功" : "失败");
		
		Path dst = new Path("hdfs://172.30.1.245:9000/user/dir1/");
		FileStatus files[] = hdfs.listStatus(dst);
	    for(FileStatus file : files){
	             System.out.println(file.getPath());
	    }
		 */
		
	    //查看HDFS文件的最后修改时间
		/*
	    FileSystem hdfs = FileSystem.get(URI.create("hdfs://172.30.1.245:9000/user/dir1/"), conf);
	    Path dst = new Path("hdfs://172.30.1.245:9000/user/dir1/");
	    FileStatus files[] = hdfs.listStatus(dst);
	    for (FileStatus fileStatus : files) {
			System.out.println(fileStatus.getPath() + " " + fileStatus.getModificationTime());
		}
	    */
	    
	    //查看HDFS文件是否存在
		/*
	    FileSystem hdfs  = FileSystem.get(URI.create("hdfs://172.30.1.245:9000/user/dir1/"), conf);
	    Path dst = new Path("hdfs://172.30.1.245:9000/user/dir1/");
	    boolean isExist = hdfs.exists(dst);
	    System.out.println(isExist ? "存在":"不存在");
	    */
		
		//查看某个文件在HDFS集群的位置
		/*
		FileSystem hdfs = FileSystem.get(URI.create("hdfs://172.30.1.245:9000/user/dir1/"), conf);
		Path dst = new Path("hdfs://172.30.1.245:9000/user/dir1/out");
		FileStatus fileStatus = hdfs.getFileStatus(dst);
		BlockLocation[] blockLocations = hdfs.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());
		for (BlockLocation blockLocation : blockLocations) {
			System.out.println(Arrays.toString(blockLocation.getHosts()) + "\t" + Arrays.toString(blockLocation.getTopologyPaths()) + " \t" + 
					Arrays.toString(blockLocation.getNames()));
		}
		*/
		
		//获取HDFS集群上所有节点名称
		DistributedFileSystem hdfs = (DistributedFileSystem) FileSystem.get(URI.create("hdfs://172.30.1.245:9000/user/dir1/"), conf);
		DatanodeInfo[] dataNodeStatus = hdfs.getDataNodeStats();
		for (DatanodeInfo datanodeInfo : dataNodeStatus) {
			System.out.println(datanodeInfo.getHostName() +  "\t" + datanodeInfo.getName());
		}
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

HDFS的Java API操作本地环境搭建

HDFS的Java API操作本地环境搭建     1、创建一个Java project 项目:   2、导入jar包: 把Hadoop根目录下的 JAR包和lib下的JAR包导进去:...
  • baolibin528
  • baolibin528
  • 2015年02月17日 21:46
  • 1000

Hadoop读书笔记(三)Java API操作HDFS

Hadoop读书笔记(三)Java API操作HDFS 多种方法诠释,注释清晰,史上最全咯!
  • caicongyang
  • caicongyang
  • 2014年11月19日 22:25
  • 3135

HDFS常用的Java Api详解

一、使用Hadoop URL读取数据 package hadoop; import java.io.InputStream; import java.net.URL; import or...
  • Michaelwubo
  • Michaelwubo
  • 2016年03月13日 20:20
  • 5851

java调用API操作HDFS

java调用API操作HDFS package mongodb; import java.io.BufferedReader; import java.io.IOException; im...
  • linger2012liu
  • linger2012liu
  • 2015年01月31日 15:38
  • 2137

hadoop学习笔记--5.HDFS的java api接口访问

hadoop学习笔记--5.HDFS的java api接口访问 一:几个常用类介绍    (1):configuration类:此类封装了客户端或服务器的配置,通过配置文件来读取类路径实现(一...
  • liuzebin9
  • liuzebin9
  • 2017年04月14日 20:53
  • 977

JAVA API操作HDFS文件系统

一个通过JAVA API操作HDFS文件系统的例子,本例子使用的是hadoop0.20的版本,在windows的eclipse下运行的时候,需要将core-site.xml和hdfs-site.xml...
  • kkdelta
  • kkdelta
  • 2014年02月25日 13:55
  • 11816

HDFS全面解析涉及基础、命令、API

1、HDFS简介   HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件...
  • woaidapaopao
  • woaidapaopao
  • 2016年07月23日 21:23
  • 2530

hadoop学习之HDFS(2.8):hdfs的javaAPI使用及示例

安装好hadoop后,可以在命令行启动客户端,通过命令行来操作hdfs,如: $ bin/hadoop fs -ls / //查看根目录下的内容$ bin/hadoop fs -mkdir...
  • qq_32166627
  • qq_32166627
  • 2016年11月23日 11:48
  • 1582

HDFS中JAVA API的使用(hadoop的文件上传和下载)

HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件、删除文件、读取文件内容等操作。下面记录一下使用JAVA API对HDFS中的文件进行操作的过程。   对分H...
  • z714303584
  • z714303584
  • 2014年10月13日 22:46
  • 5899

Hadoop基础教程-第4章 HDFS的Java API(4.1 Maven入门)

第4章 Eclipse+Hadoop4.1 Maven入门参考文章:https://my.oschina.net/huangyong/blog/1945834.1.1 Maven简介Apache Ma...
  • chengyuqiang
  • chengyuqiang
  • 2017年05月14日 21:51
  • 1176
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDFS的JAVA API操作
举报原因:
原因补充:

(最多只允许输入30个字)