热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

HDFS中JAVAAPI的使用

HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件、删除文件、读取文件内容等操作。下面记录一下使用JAVAAPI对HDFS中的文件进行操作的过程

HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件、删除文件、读取文件内容等操作。下面记录一下使用JAVA API对HDFS中的文件进行操作的过程。

对分HDFS中的文件操作主要涉及一下几个类:

Configuration类:该类的对象封转了客户端或者服务器的配置。

FileSystem类:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作。FileSystem fs = FileSystem.get(conf);通过FileSystem的静态方法get获得该对象。

FSDataInputStream和FSDataOutputStream:这两个类是HDFS中的输入输出流。分别通过FileSystem的open方法和create方法获得。

具体如何对文件操作清下下面例子:

package com.hdfs;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.hadoop.conf.Configuration;
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.io.IOUtils;

public class HdfsTest {
  
  //创建新文件
  public static void createFile(String dst , byte[] contents) throws IOException{
    Configuration cOnf= new Configuration();
    FileSystem fs = FileSystem.get(conf);
    Path dstPath = new Path(dst); //目标路径
    //打开一个输出流
    FSDataOutputStream outputStream = fs.create(dstPath);
    outputStream.write(contents);
    outputStream.close();
    fs.close();
    System.out.println("文件创建成功!");
  }
  
  //上传本地文件
  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();
  }
  
  //文件重命名
  public static void rename(String oldName,String newName) throws IOException{
    Configuration cOnf= new Configuration();
    FileSystem fs = FileSystem.get(conf);
    Path oldPath = new Path(oldName);
    Path newPath = new Path(newName);
    boolean isok = fs.rename(oldPath, newPath);
    if(isok){
      System.out.println("rename ok!");
    }else{
      System.out.println("rename failure");
    }
    fs.close();
  }
  //删除文件
  public static void delete(String filePath) throws IOException{
    Configuration cOnf= new Configuration();
    FileSystem fs = FileSystem.get(conf);
    Path path = new Path(filePath);
    boolean isok = fs.deleteOnExit(path);
    if(isok){
      System.out.println("delete ok!");
    }else{
      System.out.println("delete failure");
    }
    fs.close();
  }
  
  //创建目录
  public static void mkdir(String path) throws IOException{
    Configuration cOnf= new Configuration();
    FileSystem fs = FileSystem.get(conf);
    Path srcPath = new Path(path);
    boolean isok = fs.mkdirs(srcPath);
    if(isok){
      System.out.println("create dir ok!");
    }else{
      System.out.println("create dir failure");
    }
    fs.close();
  }
  
  //读取文件的内容
  public static void readFile(String filePath) throws IOException{
    Configuration cOnf= new Configuration();
    FileSystem fs = FileSystem.get(conf);
    Path srcPath = new Path(filePath);
    InputStream in = null;
    try {
      in = fs.open(srcPath);
      IOUtils.copyBytes(in, System.out, 4096, false); //复制到标准输出流
    } finally {
      IOUtils.closeStream(in);
    }
  }
  
  
  public static void main(String[] args) throws IOException {
    //测试上传文件
    //uploadFile("D:\\c.txt", "/user/hadoop/test/");
    //测试创建文件
    /*byte[] cOntents= "hello world 世界你好\n".getBytes();
    createFile("/user/hadoop/test1/d.txt",contents);*/
    //测试重命名
    //rename("/user/hadoop/test/d.txt", "/user/hadoop/test/dd.txt");
    //测试删除文件
    //delete("test/dd.txt"); //使用相对路径
    //delete("test1");  //删除目录
    //测试新建目录
    //mkdir("test1");
    //测试读取文件
    readFile("test1/d.txt");
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 深入解析:主流开源分布式文件系统综述
    本文详细探讨了几款主流的开源分布式文件系统,包括HDFS、MooseFS、Lustre、GlusterFS和CephFS,重点分析了它们的元数据管理和数据一致性机制,旨在为读者提供深入的技术见解。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文探讨了2012年4月期间,淘宝在技术架构上的关键数据和发展历程。涵盖了从早期PHP到Java的转型,以及在分布式计算、存储和网络流量管理方面的创新。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 从码农到创业者:我的职业转型之路
    在观察了众多同行的职业发展后,我决定分享自己的故事。本文探讨了为什么大多数程序员难以成为架构师,并阐述了我从一家外企离职后投身创业的心路历程。 ... [详细]
  • 本文详细介绍如何使用 Apache Spark 执行基本任务,包括启动 Spark Shell、运行示例程序以及编写简单的 WordCount 程序。同时提供了参数配置的注意事项和优化建议。 ... [详细]
  • 本文深入探讨了分布式文件系统的核心概念及其在现代数据存储解决方案中的应用,特别是针对大规模数据处理的需求。文章不仅介绍了多种流行的分布式文件系统和NoSQL数据库,还提供了选择合适系统的指导原则。 ... [详细]
  • 本文介绍了在解决Hive表中复杂数据结构平铺化问题后,如何通过创建视图来准确计算广告日志的曝光PV,特别是针对用户对应多个标签的情况。同时,详细探讨了UDF的使用方法及其在实际项目中的应用。 ... [详细]
author-avatar
嗳灬到此为止_769_836
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有