package com.duking.util;

import java.io.IOException;
import java.util.Date; 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; public class HDFSUtil { /**
* 创建一个文件
* path:路径 txt:文件类容
* */
public void CreateFile(String path,String txt) throws IOException
{
Configuration conf=new Configuration(); FileSystem hdfs=FileSystem.get(conf); byte[] buff=txt.getBytes(); Path dfs=new Path(path); FSDataOutputStream outputStream=hdfs.create(dfs); outputStream.write(buff,0,buff.length); outputStream.close(); hdfs.close(); System.out.println("Runing CreateFile over!!");
}
      //上传本地文件
public static void uploadFile(String src,String dst) throws IOException{
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
      Path srcPath = new Path(src); //原路径
Path dstPath = new Path(dst); //目标路径
//调用文件系统的文件复制函数,前面参数是指是否删除原文件,true为删除,默认为false
fs.copyFromLocalFile(false,srcPath, dstPath); //打印文件路径
System.out.println("Upload to "+conf.get("fs.default.name"));
System.out.println("------------list files------------"+"\n");
FileStatus [] fileStatus = fs.listStatus(dstPath);
for (FileStatus file : fileStatus)
{
System.out.println(file.getPath());
}
fs.close();
}
 /** * 创建文件夹 * @param path * @throws IOException */ public void CreateDir(String path) throws IOException { Configuration conf = new Configuration(); FileSystem hdfs=FileSystem.get(conf); Path dfs=new Path(path); hdfs.mkdirs(dfs); hdfs.close(); } /** * 从命名文件 * @param oldpath * @param newpath * @throws IOException */ public void RenameFile(String oldpath,String newpath) throws IOException { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf); Path frpaht=new Path(oldpath); //旧的文件名 Path topath=new Path(newpath); //新的文件名 boolean isRename=hdfs.rename(frpaht, topath); String result=isRename?"成功":"失败"; System.out.println("文件重命名结果为:"+result); hdfs.close(); } /** * 删除文件 或者目录 * @param path * @throws IOException */ public void DeleteFile(String path) throws IOException { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf); hdfs.delete(new Path(path), true); hdfs.close(); } /** * 判断文件或目录是否存在 * @param path * @throws IOException */ public void CheckFile(String path) throws IOException { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf); Path findf=new Path(path); boolean isExists=hdfs.exists(findf); System.out.println("Exist?"+isExists); hdfs.close(); } /** * 查看HDFS文件的最后修改时间 * @param path * @throws IOException */ public void GetLTime(String path) throws IOException { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf); Path fpath =new Path(path); FileStatus fileStatus=hdfs.getFileStatus(fpath); long modiTime=fileStatus.getModificationTime(); Date date = new Date(modiTime); System.out.println("file1.txt change time is"+date); hdfs.close(); } /** * 获取文件信息 * @param path * @throws IOException */ public void GetFileInfo(String path) throws IOException { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf); Path fpath =new Path(path); FileStatus fileStatus=hdfs.getFileStatus(fpath); System.out.println("文件路径:"+fileStatus.getPath()); System.out.println("块的大小:"+fileStatus.getBlockSize()); System.out.println("文件所有者:"+fileStatus.getOwner()+":"+fileStatus.getGroup()); System.out.println("文件权限:"+fileStatus.getPermission()); System.out.println("文件长度:"+fileStatus.getLen()); System.out.println("备份数:"+fileStatus.getReplication()); System.out.println("修改时间:"+fileStatus.getModificationTime()); hdfs.close(); } /** * 获取目录下的所有文件 * @param path * @throws IOException */ public void GetAllFile(String path) throws IOException { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf); Path fpath =new Path(path); FileStatus stats[]=hdfs.listStatus(fpath); for(int i = 0; i < stats.length; ++i) { System.out.println(stats[i].getPath().toString()); } hdfs.close(); } /** * 查看文件所在集群的位置 * @param path * @throws IOException */ public void FindFilePost(String path) throws IOException { Configuration conf = new Configuration(); FileSystem hdfs = FileSystem.get(conf); Path fpath =new Path(path); 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[0]); } hdfs.close(); } }

  

package com.duking.test;

import java.io.IOException;

import com.duking.util.HDFSUtil;

public class HDFSTest {

	public static void main(String[] args) throws IOException {

		HDFSUtil Hdfs = new HDFSUtil();

		//Hdfs.CreateFile("/user/duking/testfile2.txt","hello,world");

		//Hdfs.CreateDir("/user/test");

		//Hdfs.RenameFile("/user/duking/testfile.txt", "/user/duking/test.txt");

		//Hdfs.DeleteFile("/user/duking/test.txt");

		//Hdfs.CheckFile("/user/hadoop/input/protocols");

		//Hdfs.GetLTime("/user/hadoop/input/protocols");

		//Hdfs.GetFileInfo("/user/hadoop/input/protocols");

		//Hdfs.GetAllFile("/user/hadoop/input/");

		Hdfs.FindFilePost("/user/hadoop/input/protocols");

		System.out.println("Runing is over!!");
}
}

  更多HDFS的操作请查看HDFS JAVA API

    http://hadoop.apache.org/docs/stable/api/index.html

  

HDFS Users Guide

http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html

hadoop hdfs java api操作的更多相关文章

  1. HDFS Java API 常用操作

    package com.luogankun.hadoop.hdfs.api; import java.io.BufferedInputStream; import java.io.File; impo ...

  2. Hadoop之HDFS(三)HDFS的JAVA API操作

    HDFS的JAVA API操作 HDFS 在生产应用中主要是客户端的开发,其核心步骤是从 HDFS 提供的 api中构造一个 HDFS 的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS ...

  3. 使用Java API操作HDFS文件系统

    使用Junit封装HFDS import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org ...

  4. HDFS shell操作及HDFS Java API编程

    HDFS shell操作及HDFS Java API编程 1.熟悉Hadoop文件结构. 2.进行HDFS shell操作. 3.掌握通过Hadoop Java API对HDFS操作. 4.了解Had ...

  5. Hadoop 学习之路(七)—— HDFS Java API

    一. 简介 想要使用HDFS API,需要导入依赖hadoop-client.如果是CDH版本的Hadoop,还需要额外指明其仓库地址: <?xml version="1.0" ...

  6. Hadoop 系列(七)—— HDFS Java API

    一. 简介 想要使用 HDFS API,需要导入依赖 hadoop-client.如果是 CDH 版本的 Hadoop,还需要额外指明其仓库地址: <?xml version="1.0 ...

  7. 【Hadoop离线基础总结】HDFS的API操作

    HDFS的API操作 创建maven工程并导入jar包 注意 由于cdh版本的所有的软件涉及版权的问题,所以并没有将所有的jar包托管到maven仓库当中去,而是托管在了CDH自己的服务器上面,所以我 ...

  8. HDFS 05 - HDFS 常用的 Java API 操作

    目录 0 - 配置 Hadoop 环境(Windows系统) 1 - 导入 Maven 依赖 2 - 常用类介绍 3 - 常见 API 操作 3.1 获取文件系统(重要) 3.2 创建目录.写入文件 ...

  9. 【Hadoop】HA 场景下访问 HDFS JAVA API Client

    客户端需要指定ns名称,节点配置,ConfiguredFailoverProxyProvider等信息. 代码示例: package cn.itacst.hadoop.hdfs; import jav ...

随机推荐

  1. #1560 : H国的身份证号码II(dp+矩阵快速幂)

    #1560 : H国的身份证号码II 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整 ...

  2. iOS CGAffineTransform你了解多少?

    CGAffineTransform介绍 概述 CGAffineTransform是一个用于处理形变的类,其可以改变控件的平移.缩放.旋转等,其坐标系统采用的是二维坐标系,即向右为x轴正方向,向下为y轴 ...

  3. iOS 关于多线程的一些基本概念

    一 什么是进程 进程是在系统中正在运行的应用程序!普通的应用程序并不是进程,只有正在运行的应用程序才是一个进程, 在系统中每个进程之间是相互独立的,每个进程均在其专享的且受保护的内存空间内.但是一个应 ...

  4. python函数回顾:next()

    描述 next() 返回迭代器的下一个项目. 语法 next(iterator[, default]) 参数说明: iterator -- 可迭代对象 default -- 可选,用于设置在没有下一个 ...

  5. Python2 和 Python3 区别汇总

    [Python2 和 Python3 的区别汇总,不定期补充] print 在进行程序调试时用得最多的语句可能就是 print,在 Python 2 中,print 是一条语句,而 Python3 中 ...

  6. MariaDB数据库主从复制实现步骤

    一.MariaDB简介 MariaDB数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上. MariaDB数据库支持单向 ...

  7. 我的Android进阶之旅------>Android中Dialog系统样式讲解

    今天在维护公司的一个APP的时候,有如下场景. 弹出一个AlertDialog的时候,在系统语言是中文的时候,如下所示: 弹出一个AlertDialog的时候,在系统语言是English的时候,如下所 ...

  8. ExtJS4 给同一个formpanel不同的url

    formpanel能够这样使用,api上的样例: var panel=Ext.create('Ext.form.Panel', { title: 'Simple Form', bodyPadding: ...

  9. Kafka配置参数说明

    配置文件目录:/usr/local/kafka/config配置文件server.propertis参数说明:broker.id=0每一个broker在集群中的唯一标识,要求是正数,当该服务器的IP地 ...

  10. hadoop学习第四天-Writable和WritableComparable序列化接口的使用&&MapReduce中传递javaBean的简单例子

    一. 为什么javaBean要继承Writable和WritableComparable接口? 1. 如果一个javaBean想要作为MapReduce的key或者value,就一定要实现序列化,因为 ...