`

HDFS 文件操作测试

 
阅读更多

 

package com.dj.hadoop;

 

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.net.URI;

 

import org.apache.commons.io.IOUtils;

import org.apache.commons.lang.builder.ToStringBuilder;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FSDataInputStream;

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.util.Progressable;

 

/**

 * @description hdfs文件操作

 * @author dj

 * @date 2012-10-10

 */

public class FileHandlerTest {

 

public static String basePath = "hdfs://192.168.10.166:54310";

public static String fileRootPath = basePath

+ "/home/hadoop/data/hadoopdata";

 

public static void uploadLocalFileToHDFS(File localFile, Path destPath)

throws Exception {

Configuration config = new Configuration();

FileSystem.setDefaultUri(config, new URI(basePath));

FileSystem hdfs = FileSystem.get(config);

// Path dst = new Path(fileRootPath,destPath);

// hdfs.copyFromLocalFile(src, dst);

FSDataOutputStream out = hdfs.create(destPath,new Progressable() {

@Override

public void progress() {

    System.out.println("文件进度");  

}

});

   InputStream in = new BufferedInputStream(new FileInputStream(localFile));  

IOUtils.copy(in, out);

hdfs.close();

}

/**

* 文件下载

* @param destPath

* @param localDir

* @throws Exception 

*/

public static void downloadFileFromHDFS(Path destPath,File localDir) throws Exception {

Configuration config = new Configuration();

FileSystem.setDefaultUri(config, new URI(basePath));

FileSystem hdfs = FileSystem.get(config);

if (hdfs.exists(destPath)) {

FSDataInputStream in = hdfs.open(destPath);

FileStatus stat = hdfs.getFileStatus(destPath);

byte[] buffer = new byte[Integer.parseInt(String.valueOf(stat.getLen()))];

in.readFully(0, buffer);

in.close();

hdfs.close();

IOUtils.write(buffer, new FileOutputStream(localDir+"/"+destPath.getName()));

}

}

 

/**

* 删除文件

* @param destPath

* @throws Exception

*/

public static boolean deleteFile(Path destPath)throws Exception {

Configuration config = new Configuration();

FileSystem.setDefaultUri(config, new URI(basePath));

FileSystem hdfs = FileSystem.get(config);

if (hdfs.exists(destPath)) {

return hdfs.delete(destPath,true);

}

return false;

}

public static void listAll(String dir) throws Exception {

Configuration config = new Configuration();

FileSystem.setDefaultUri(config, new URI(basePath));

FileSystem fs = FileSystem.get(config);

FileStatus[] stats = fs.listStatus(new Path(basePath,dir));

for (int i = 0; stats != null && i < stats.length; ++i) {

// System.out.println(ToStringBuilder.reflectionToString(stats[i]));

if (!stats[i].isDir()) {

// regular file

System.out.println("文件:"+stats[i].getPath().toString()+"===="+stats[i].getGroup());

} else if (stats[i].isDir()) {

// dir

System.out.println("文件夹:"+stats[i].getPath().toString()+"===="+stats[i].getGroup());

}  

}

fs.close();

}

 

public static void createDirectory(String directoryName) throws Exception {

Configuration config = new Configuration();

FileSystem.setDefaultUri(config, new URI(basePath));

FileSystem fs = FileSystem.get(config);

System.out.println(ToStringBuilder.reflectionToString(fs));

fs.mkdirs(new Path(fileRootPath, directoryName));

fs.close();

}

 

public static void deleteDirectory(String directoryName) throws Exception {

Configuration config = new Configuration();

FileSystem.setDefaultUri(config, new URI(basePath));

FileSystem fs = FileSystem.get(config);

fs.delete(new Path(fileRootPath, directoryName),true);

fs.close();

}

 

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

String directoryName = "books";

// 【1】创建文件夹

createDirectory(directoryName);

// 【2】 删除文件夹

// deleteDirectory(directoryName);

//【3】 显示文件

//  listAll("/home/hadoop/data/hadoopdata/");

//【4】 文件上传

File file = new File("G:/apiqianyi/ap2last_tmp.txt");

Path destPath = new Path(fileRootPath,directoryName+"/"+file.getName());

// uploadLocalFileToHDFS(file, destPath);

//【5】文件下载

// downloadFileFromHDFS(destPath, new File("G:/"));

//【6】删除文件

boolean flag = deleteFile(destPath);

System.out.println(flag);

}

 

}


 

分享到:
评论

相关推荐

    HDFS文件系统

    ### HDFS文件系统详解 #### 一、HDFS概述与分布式文件系统概念 Hadoop分布式文件系统(HDFS)作为Hadoop项目的核心组成部分之一,它为海量数据提供了高吞吐量的数据访问,非常适合大规模数据集的处理。HDFS的设计...

    搭建hadoop后hdfs基本操作 ecplisec操作

    通过Eclipse这样的集成开发环境,我们可以编写、调试和测试这些HDFS操作。在实际应用中,可能还需要处理异常、监控性能以及优化代码以适应大规模数据处理。对于更复杂的任务,如MapReduce作业,开发者还可以编写...

    eclipse操作HDFS需要文件

    4. **编写Hadoop程序**:使用Eclipse创建Java项目,导入Hadoop相关的库(这些库通常可以从Hadoop的lib目录下找到),编写读写HDFS文件的代码。 5. **测试HDFS操作**:通过Eclipse内置的HDFS浏览器或者在代码中调用...

    hadoop测试(1)---HDFS文件操作 完整测试代码

    hadoop测试(1)---HDFS文件操作 完整测试代码, 相关文章:http://www.cnblogs.com/yinpengxiang/archive/2011/07/03/2096605.html

    数据存储实验2-熟悉常用的HDFS操作.doc(实验报告)

    * hadoop dfs:用于管理HDFS文件系统的命令,例如查看文件列表、创建目录、删除文件等。 * hdfs dfs:用于管理HDFS文件系统的命令,例如查看文件列表、创建目录、删除文件等。 实验目的 本实验的目的旨在熟悉常用的...

    大数据实验二-HDFS编程实践

    3. **测试验证**:编写测试代码,调用上述方法并检查结果,确保文件操作符合预期。 #### 实验总结及心得体会 1. **深入理解HDFS的作用**:通过本次实验,学生不仅理解了HDFS作为Hadoop数据存储层的重要性,还了解...

    SpringBoot整合Hadoop的案例代码demo,含HDFS文件操作、MapReduce分词操作、案例数据分析,系统推荐等

    本案例代码demo旨在帮助开发者更好地理解和应用这一技术组合,涵盖了HDFS文件操作、MapReduce分词处理以及数据分析和系统推荐等功能。 首先,HDFS(Hadoop Distributed File System)是Hadoop的核心组件之一,提供...

    【HDFS篇04】HDFS客户端操作 --- 文件操作1

    本篇文章主要探讨了HDFS客户端进行文件操作的相关知识点,包括文件上传、下载、删除以及重命名,同时也涉及到了配置参数的优先级规则。 首先,我们要了解的是如何通过客户端设置文件副本数量。在HDFS中,文件的副本...

    Hadoop(HDFS文件系统)命令操作

    ### Hadoop HDFS 文件系统命令操作详解 #### HDFS 概念与组成 **1.1 概念** HDFS,即 Hadoop Distributed File System,是一种分布式文件系统,主要用于存储大规模数据集。它通过目录树结构来组织文件,并且是由...

    02--HDFS Java API操作.docx

    Java API 是 HDFS 的一个编程接口,允许开发者使用 Java 语言来操作 HDFS 中的文件和目录。本文将介绍如何使用 HDFS Java API 实现文件下载和上传操作。 一、HDFS Java API 概述 HDFS Java API 是 Hadoop 中的一...

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

    标签 "ftp ftpoverhdfs hdfs文件传入ftp java_hadoop java_hdfs-over-ftp" 进一步明确了主题。"ftpoverhdfs"可能是指一个特定的模块或工具,它允许FTP通信“覆盖”HDFS,即通过FTP接口操作HDFS。"java_hadoop"和...

    HDFS测试案例v0.3

    输入说明涉及文件大小、数据分布等参数,测试步骤详细描述了如何进行文件写入操作,而测试结论则分析了写入性能和可能影响因素。 - **测试目的2**:在不同的工作负载下,测试HDFS的并发写入性能,例如多用户同时...

    elcipse java hadoop操作hdfs的api

    2. **FileSystem对象**:`FileSystem`是HDFS API的入口点,通过它你可以执行所有文件操作。首先需要实例化一个`FileSystem`对象,通常使用`FileSystem.get(conf)`方法,其中`conf`是`Configuration`对象,配置了...

    HDFS的ssh操作.docx

    ### HDFS与SSH命令操作详解 ...以上命令提供了HDFS中常用的文件操作功能,能够满足大多数数据处理和管理的需求。通过SSH远程执行这些命令,可以更加灵活地管理和操作部署在不同服务器上的HDFS集群。

    c 操作hdfs

    标题“C操作HDFS”指的是使用C语言编程接口与Hadoop分布式文件系统(HDFS)进行交互。HDFS是Apache Hadoop项目的核心组件之一,它为大规模数据存储提供了可扩展的、可靠的分布式文件系统。在C语言环境中操作HDFS,...

    flime安装+配置+测试+案例(采集日志至HDFS)

    在本文中,我们将深入探讨 Flume 的安装、配置、测试以及如何将其应用于实际案例,即从不同节点采集日志并存储到 HDFS。 首先,我们从安装 Flume 开始。Flume 的安装包括解压安装包,重命名 Flume 目录,配置 `...

    java 从hadoop hdfs读取文件 进行groupby并显示为条形图

    10. **项目组织**:`java_project`这个压缩包很可能包含了项目的源代码、配置文件以及可能的测试数据。源代码可能分为多个模块,如数据读取、数据处理、图形界面展示等,每个模块对应一个或多个Java类。 通过以上...

    4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置)

    在本文中,我们将深入探讨如何使用Java操作HDFS(Hadoop分布式文件系统),以及如何配置高可用性(HA)环境。我们将关注以下几个方面: 1. **HDFSUtil类的构建**: HDFSUtil类是Java中用于与HDFS进行交互的工具类...

    HDFS详细讲解 word

    在操作HDFS时,有多种方式可以进行文件交互。通过命令行工具,可以将本地文件系统(Linux)的文件上传到HDFS,反之亦然,进行文件的移动、删除和查看。例如,`hadoop fs -put`命令用于上传文件,`hadoop fs -get`...

Global site tag (gtag.js) - Google Analytics