Java 可以通过API访问HDFS, 主要用到几个类

下面是代码

package com.shidai.hadoop.hdfs01;import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.commons.logging.Log;
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.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.apache.hadoop.hdfs.protocol.DatanodeInfo;
import org.apache.hadoop.hdfs.server.datanode.DataNode;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import org.json.JSONArray;
import org.slf4j.*;import com.shidai.hadoop.utils.Constant;
import com.shidai.hadoop.utils.DateUtil;public class HDFSTest {private static String url = Constant.url;private static Configuration conf = new Configuration();public static void getAllDataNode() {try {FileSystem fs = FileSystem.get(conf);DistributedFileSystem distributedfs = (DistributedFileSystem) fs;DatanodeInfo[] datanodeInfos = distributedfs.getDataNodeStats();for (int i = 0; i < datanodeInfos.length; i++) {System.out.println("第" + i + "个datanode:" + datanodeInfos[i].getHostName());}} catch (IOException e) {e.printStackTrace();}}/*** 创建文件,并写入内容* * @param dst* @param contents* @throws IOException*/public static void createFile(String dst, byte[] contents) throws IOException {FileSystem fs = FileSystem.get(URI.create(url), conf);Path path = new Path(dst);FSDataOutputStream out = fs.create(path);out.write(contents);out.close();fs.close();System.out.println("创建文件成功");}/*** 读取文件* * @param dst* @throws JSONException* @throws ParseException*/public static void readFile(String dst) throws JSONException, ParseException {FileSystem fs;FSDataInputStream in;try {fs = FileSystem.get(URI.create(url), conf);in = fs.open(new Path(dst));byte[] ioBuffer = new byte[1024];StringBuffer sf = new StringBuffer();int len = -1;while ((len = in.read(ioBuffer)) != -1) {// System.out.write(ioBuffer,0,len);;String string = new String(ioBuffer, 0, len);sf.append(string);len = in.read(ioBuffer);}in.close();fs.close();System.out.println(sf.toString());JSONObject json = new JSONObject(sf.toString());Long time = json.getLong("last_time");String sd = DateUtil.getDate(time * 1000);System.out.println("上传时间:" + sd);} catch (IOException e) {e.printStackTrace();}}/*** 遍历文件* * @param dst*/public static void listFiles(String dst) {FileSystem fs = null;try {fs = FileSystem.get(URI.create(url), conf);RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(new Path(dst), false);while (iterator.hasNext()) {LocatedFileStatus locatedFileStatus = iterator.next();if (locatedFileStatus.isFile()) {String path = locatedFileStatus.getPath().toString();System.out.println(path);if (!path.endsWith("tmp")) {readFile(path);}}}} catch (Exception e) {e.printStackTrace();}}/*** 上传文件* * @param src* @param dst*/public static void upload(String src, String dst) {FileSystem fs = null;try {fs = FileSystem.get(URI.create(url), conf);Path srcPath = new Path(src);Path dstPath = new Path(dst);fs.copyFromLocalFile(false, srcPath, dstPath);// 打印文件路径System.out.println("list files");FileStatus[] fileStatus = fs.listStatus(dstPath);for (FileStatus fstatus : fileStatus) {System.out.println(fstatus.getPath());}} catch (IOException e) {e.printStackTrace();} finally {if (fs != null) {try {fs.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 删除文件* * @param args* @throws JSONException* @throws ParseException*/public static void delete(String dst) {FileSystem fs = null;try {fs = FileSystem.get(URI.create(url), conf);Boolean flag = fs.delete(new Path(dst), false);if (flag) {System.out.println("删除成功");} else {System.out.println("删除失败");}} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) throws JSONException, ParseException {System.setProperty("hadoop.home.dir", "C:/Users/root/.m2/repository/org/apache/hadoop/hadoop-common/2.5.2");byte[] contents = "明月几时有...\n".getBytes();/** try{ // createFile("/user/hadoop/test/hdfs01.txt", contents);* }catch(IOException e){ e.printStackTrace(); }*/// getAllDataNode();// upload("F:/yun/svn/1.txt", "/user/root/");// 读文件// readFile("/flume/data/FlumeData.1469543705102");// 遍历文件// listFiles("/flume/");// 删除文件delete("/user/root/test");}}

用的是Hadoop.2.5.2的版本,Maven构建工程

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.shidai.hadoop</groupId><artifactId>hdfs01</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>hdfs01</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.5.2</version></dependency><dependency><groupId>commons-cli</groupId><artifactId>commons-cli</artifactId><version>1.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.5.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.5.2</version></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20090211</version></dependency></dependencies>
</project>

Java 访问 HDFS操作相关推荐

  1. hadoop java访问_Hadoop(五)搭建Hadoop客户端与Java访问HDFS集群

    上一篇详细介绍了HDFS集群,还有操作HDFS集群的一些命令,常用的命令: hdfs dfs -ls xxx hdfs dfs -mkdir -p /xxx/xxx hdfs dfs -cat xxx ...

  2. java hdfs文件_使用Java访问HDFS中的文件

    我试图使用Java API访问HDFS中的文件,但每次我都找不到文件.我用来访问的代码是: – Configuration conf = new Configuration(); conf.addRe ...

  3. JAVA访问HDFS(满满干货!基础操作入门)

    下面的入门源码里面都说明了功能,不多说(跑之前别忘了开启Hadoop) import java.net.URI;import org.apache.hadoop.conf.Configuration; ...

  4. Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统

    阅读目录(Content) 一.HDFS中数据块概述 1.1.HDFS集群中数据块存放位置 1.2.数据块(data block)简介 1.3.对分布式文件系统中的块进行抽象会带来很多好处 二.Jav ...

  5. JAVA API实现HDFS操作(二)操作函数

    说明:在IDEA集成环境中利用JAVA API实现目录的创建.文件的创建.文件的上传和下载.文件的查看.文件删除.文件的编辑等操作.以下代码均创建在my.dfs包下 创建文件夹 在hdfs系统的根目录 ...

  6. 用Java API实现HDFS操作(三)问题汇总

    说明:整理博主用Java API实现HDFS操作时遇到的问题 问题 为搭建分布式操作环境–在ubuntu16中安装IDEA2021.tomcat9.0.hadoop2.7,建议分配磁盘空间30G及以上 ...

  7. Java API访问HDFS集群(HA)

    title: Java API访问HDFS集群(HA) date: 2021-06-23 17:06:11 tags: HDFS hadoopV2版本及以后都是HA架构,active namenode ...

  8. 大数据学习笔记08:Java程序访问HDFS

    文章目录 一.HDFS常用Java API 1.org.apache.hadoop.fs.FileSystem 2.org.apache.hadoop.fs.FileStatus 3.org.apac ...

  9. java访问domino数据库_关于Java与Domino数据库之间的操作

    关于Java与Domino数据库之间的操作 如果想使用Domino作为开发的DB,必须在Domino服务器端手动配置以下信息. 首先,我们需要使用DIIOP(具体是什么还不太清楚,暂时可以理解成用于运 ...

最新文章

  1. Winform中使用FastReport的PictureObject时通过代码设置图片源并使Image图片旋转90度
  2. python实现快排算法_Python实现快速排序算法
  3. [机器学习笔记]Note11--聚类
  4. C++函数编译原理和成员函数的实现
  5. c语言计算N升纯净水的分子数,C语言编程题
  6. 接口测试基础一--HTTP请求
  7. Bootstrap3 带悬停效果的表格样式
  8. 浏览器同源与跨域问题总结
  9. 75道常见AI面试题,看看你的知识盲点在哪?(附解析,包括机器学习、深度学习、苹果Google面试等)...
  10. 这一晚注定属于C罗!回归首秀梅开二度,现场超过7万球迷见证这场胜利
  11. 大连计算机类书店小结
  12. 谷歌地球Google Earth打不开的解决办法
  13. windows11没有ie浏览器解决办法
  14. Cocos2d-x 3.x游戏开发之旅
  15. Word公式转LaTex神器
  16. Linux 多线程编程实验知识整理
  17. GIGABYTE 技嘉主板进不了 BIOS 的解决方案
  18. 离散数学复习:命题逻辑的推理理论
  19. android如何监听应用进入后台,回到前台时做相应逻辑
  20. Android onClick 按钮单击事件 四种常用写法

热门文章

  1. 音乐翻唱软件测试初学者,音乐APP听歌识曲大评测,QQ音乐独家“翻唱识别”领跑...
  2. 扒一扒那些叫欧拉的定理们(三)——简单多面体欧拉定理的抽象形式
  3. jQuery详解(二) 函数和事件
  4. php file_put_contents 根目录权限,关于php:file_put_contents权限被拒绝
  5. Docker——Docker 容器数据卷(Volumes)
  6. 【论文翻译】The Quantum Internet: Networking Challenges in Distributed Quantum Computing
  7. 基于beego的高并发开源论坛框架Casnode
  8. 在滴滴云 DC2 云服务器上搭建 ELK 日志采集系统
  9. 天嵌E9开发板tftp烧录eMMC教程(Android)
  10. 一本通5.4练习1:涂抹果酱