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. mybatis 一次执行多条SQL MySql+Mybatis+Druid之SqlException:sql injection violation, multi-statement not allow

    如果用JDBC jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=utf8 ...

  2. linux之shell常用命令介绍

    一.cd    切换目录 cd /etc  切换到/etc目录下              cd ~       切换到主目录下 cd  ..      返回上级目录                  ...

  3. [Spring MVC]学习笔记--@Controller

    在讲解@Controller之前,先说明一下Spring MVC的官方文档在哪. 可能会有人和我一样,在刚接触Spring MVC时,发现在Spring的网站上找不到Spring MVC这个项目. 这 ...

  4. [Spring Data Repositories]学习笔记--为repository添加通用的方法

    如果想把一个方法加到所有的repository中,用前一篇提到的方法就不合适了. 英文原版,请看 http://docs.spring.io/spring-data/data-mongo/docs/1 ...

  5. 学生成绩管理系统【c】

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #d ...

  6. 1202 子序列个数(DP)

    1202 子序列个数 题目来源: 福州大学 OJ 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 子序列的定义:对于一个序列a=a[1],a[2],......a[ ...

  7. Java中Solr集群的测试

    import org.apache.solr.client.solrj.impl.CloudSolrServer; import org.apache.solr.common.SolrInputDoc ...

  8. error C1853: “Debug\BigBuffer.pch”预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

    <pre id="best-content-1299104064" mb-10"="" style="font-size: 14px; ...

  9. MySQL中的索引提示Index Hint

    MySQL数据库支持索引提示(INDEX HINT)显式的高速优化器使用了哪个索引.以下是可能需要用到INDEX HINT的情况 a)MySQL数据库的优化器错误的选择了某个索引,导致SQL运行很慢. ...

  10. java ReentrantLock可重入锁的使用场景

    摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些. 场景1:如果发现该操作已经在执行中则不再执行(有状态执行) a.用在定时任务时,如果任务执行时间可能超过下次 ...