Hadoop HDFS JAVA API 实战

Hadoop 3.1.3 HDFS Java API 实战:10个核心文件操作与Shell命令对照实现 本文详细介绍了Hadoop 3.1.3中HDFS Java API的10个核心文件操作,并与Shell命令进行对照实现。内容涵盖文件上传、下载、重命名、元数据获取、目录管理、文件移动等操作,帮助开发者高效处理HDFS文件系统。通过Java API与Shell命令的对比,提升大数据处理能力。 阅读详情

JAVA API 远程调用Hadoop

通过java Api远程调用Hadoop,实现上传文件,下载文件,删除文件等功能。

第一步 在pom.xml文件上添加依赖

  <dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-common</artifactId>
		<version>2.7.6</version>
		<exclusions>
			<exclusion>
				<artifactId>slf4j-log4j12</artifactId>
				<groupId>org.slf4j</groupId>
			</exclusion>
		</exclusions>
		<!-- <scope>provided</scope> -->
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-archives -->
	<dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-archives</artifactId>
		<version>2.7.6</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-auth -->
	<dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-auth</artifactId>
		<version>2.7.6</version>
		<exclusions>
			<exclusion>
				<artifactId>slf4j-log4j12</artifactId>
				<groupId>org.slf4j</groupId>
			</exclusion>
		</exclusions>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-datajoin -->
	<dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-datajoin</artifactId>
		<version>2.7.6</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-distcp -->
	<dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-distcp</artifactId>
		<version>2.7.6</version>
	</dependency>

	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
	<dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-hdfs</artifactId>
		<version>2.7.6</version>
		<exclusions>
			<exclusion>
				<artifactId>netty-all</artifactId>
				<groupId>io.netty</groupId>
			</exclusion>
		</exclusions>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-annotations -->
	<dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-annotations</artifactId>
		<version>2.7.6</version>
		<exclusions>
			<exclusion>
				<groupId>jdk.tools</groupId>
				<artifactId>jdk.tools</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
	<dependency>
		<groupId>org.apache.hadoop</groupId>
		<artifactId>hadoop-client</artifactId>
		<version>2.7.6</version>
		<exclusions>
			<exclusion>
				<artifactId>slf4j-log4j12</artifactId>
				<groupId>org.slf4j</groupId>
			</exclusion>
		</exclusions>
	</dependency>

第二步 创建测试类FileSystemCat

package com.example.wfhadoop.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * @author wufei
 * @create 2018-10-30 11:05
 **/
public class FileSystemCat {

    static Configuration conf = new Configuration();
    static FileSystem hdfs;
    static {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://hdn1:9000");
        try {
            try {
                hdfs = FileSystem.get(URI.create("hdfs://hdn1:9000"),conf,"hadoop");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        try {
            String dir = "/Hadoop/wftest";
            String src = "E:\\hadoofile\\ok1.txt";
            //显示文件目录
            //listFiles("hdfs://hdn1:9000/Hadoop/Input/");
            //创建文件目录
              createDir(dir);
            //上传文件
            //uploadFile(src,dir);
            //下载文件
            //down(src,"hdfs://hdn1:9000/Hadoop/Input/ok1.txt");
            //删除文件
            //deleteFile("/Hadoop/Input/ok.txt");
        }catch (Exception e){
            e.printStackTrace();
        }
    }



    /**
     * 下载文件
     * @param localSrc  E:\hadoofile\ok1.txt
     * @param hdfsDst  hdfs://hdn1:9000/Hadoop/Input/ok1.txt
     */
    public static void down(String localSrc, String hdfsDst){
        FSDataInputStream   in = null;
        try {
            in = hdfs.open(new Path(hdfsDst));
            OutputStream out = new FileOutputStream(localSrc);
            IOUtils.copyBytes(in, out, 4096, true);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(in != null){
                IOUtils.closeStream(in);
            }
        }
    }

    public static void createDir(String dir) throws Exception {
        Path path = new Path(dir);
        if (hdfs.exists(path)) {
            return;
        }
        hdfs.mkdirs(path);   
         }
        /**
         * 文件列表
         * @param dirName 文件目录
         * @throws IOException
         */
    public static void listFiles(String dirName) throws IOException {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://hdn1:9000");
        FileSystem hdfs = null;
        FSDataInputStream in = null;
        hdfs = FileSystem.get(conf);
        Path path = new Path(dirName);
        FileStatus[] status = hdfs.listStatus(path);
        System.out.println(dirName + " has all files:");
        for (int i = 0; i < status.length; i++) {
            System.out.println(status[i].getPath().toString());
        }
    }

    /**
     * 文件上传
     * @param localSrc
     * @param hdfsDst
     * @throws IOException
     */
    public static void uploadFile(String localSrc, String hdfsDst) throws IOException {
        Path src = new Path(localSrc);
        Path dst = new Path(hdfsDst);
        if (!(new File(localSrc)).exists()) {
            return;
        }
        if (!hdfs.exists(dst)) {
            return;
        }
        String dstPath = dst.toUri() + "/" + src.getName();
        if (hdfs.exists(new Path(dstPath))) {
        }
        hdfs.copyFromLocalFile(src, dst);
        FileStatus files [] = hdfs.listStatus(dst);
        for (FileStatus file : files) {
            System.out.println(file.getPath());
        }
    }

    /**
     * 删除文件
     * @param fileName
     * @throws IOException
     */
    public static void deleteFile(String fileName) throws IOException {
        Path f = new Path(fileName);
        boolean isExists = hdfs.exists(f);
        if (isExists) { // if exists, delete
            boolean isDel = hdfs.delete(f, true);
        } else {
            System.out.println(fileName + "  exist? \t" + isExists);
        }
    }
}

第三步 测试

 1.执行上传文件
   查看文件是否上传成功
  [hadoop@hdn1 ~]$ hadoop fs -ls /Hadoop/Input
	Found 2 items
	-rw-r--r--   3 hadoop supergroup         17 2018-10-31 09:39 /Hadoop/Input/ok1.txt
	-rw-r--r--   2 hadoop supergroup         34 2018-10-30 09:39 /Hadoop/Input/wordcount.txt
大数据技术之HDFS实战 HDFS(Hadoop Distuibuted File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。HDFS的使用场景:适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。 阅读详情

相关推荐

大数据Hadoop实战篇

大数据Hadoop实战,10分钟带你入门Hadoop,手把手教你搭建分布式集群系统

需要远程指导仿真实验、代码有问题的,请后台私信或者关注公众号 9101

Hadoop——HDFS文件系统的Java API操作

小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!希望能够帮助到大家,减轻大家的负担和节省时间。

2401_83816970的博客 1234

十一、《大数据项目实战之用户行为分析》Hadoop HDFS Java API操作

使用HDFS Java API可以远程对HDFS系统中的文件进行新建、删除、读取等操作。本节主要介绍如何在Eclipse中使用HDFS Java API与HDFS文件系统进行交互。在使用Java API之前,首先需要新建一个Hadoop项目。Hadoop项目的结构与普通的Java项目一样,只是所需依赖包不同。

分享人工智能领域原创文章 1027

HDFS实战

HDFS实战,加上环境搭建eclipse

junsuyiji的博客 1299

Matlab子图排版终极指南:从tight_subplot到tiledlayout的实战对比

本文深入对比Matlab中两大子图排版工具:社区经典函数tight_subplot与官方现代布局管理器tiledlayout。针对默认subplot产生的子图间距与边缘距离问题,详细解析两者的设计哲学、参数控制与实战应用,帮助用户根据版本与需求选择最佳方案,实现高效、精确且美观的多子图排版。

weixin_29048309的博客 360

ESP32语音交互实战:离线唤醒与DeepSeek大模型集成

本文详细介绍了如何将ESP32-S3开发板与天问ASRPRO语音模块结合,实现离线语音唤醒并集成DeepSeek大模型的智能交互系统。通过串口通信与API调用,系统可处理本地指令及复杂语义请求,适用于低成本、高隐私保护的AIoT语音交互场景。

rust6ferris的博客 872

大数据实战——基于Hadoop的Mapreduce编程实践案例的设计与实现

通过充分利用分布式计算,Hadoop实现了对大规模数据的高效处理,使得复杂的数据分析任务变得可管理和高效。通过这一实践案例,我们可以深入了解Hadoop的MapReduce编程模型,以及如何在实际应用中利用其优势来处理和分析海量数据。

ZShiJ的博客 1万+

【ISAR成像定标方法(1)—转台目标的RD成像算法MATLAB仿真】

ISAR成像定标方法的研究具有重要意义,但是与之相关的学习资料以及仿真对于小白来说很难找或者很杂乱,本人作为小白之一在研究过程中苦不堪言,现在自己所要研究的定标内容已经完成,以后还学不学雷达也不一定,因为后面的路更难,现在打算把一些相关推导和仿真结果列出来,以供小白交流学习使用,希望能有点帮助。(PS:由于公式和符号的原因,采用图片形式说明)

此木旧年的博客 6419

hadoop hdfs java api操作实战

hadoop java api操作实战: 创建目录:

2181

告别手动拖拽!PyQt5/PyQt6 QTableView列宽自适应窗口的三种实战方案(附性能对比)

本文详细介绍了PyQt5/PyQt6中QTableView列宽自适应窗口的三种实战方案,包括Stretch模式、resizeEvent手动计算和ResizeToContents模式,并附有性能对比。帮助开发者解决窗口大小变化时列宽不变的常见问题,提升用户体验和开发效率。

weixin_42538752的博客 236

实测对比:DeepSeek、豆包、千问三大AI模型生成测试用例谁更强?(附完整代码)

本文通过实测对比了DeepSeek、豆包、千问三大AI模型在生成测试用例方面的表现。文章提供了完整的Python代码实现,详细分析了各模型在用例完整性、准确性、边界覆盖及幻觉控制等维度的差异,并分享了工程化集成与多模型融合等优化策略,旨在帮助测试团队选择合适工具以提升工作效率。

ik6789012的博客 958

Hadoop HDFS操作指南:Shell、Web UI、Java API实战

本文介绍了Hadoop HDFS的三种操作方式:Shell命令行、Web界面和Java API。Shell命令行提供了批量操作和进程管理功能,包括集群启停、文件传输等核心操作。Web界面通过9870端口访问,提供可视化文件管理功能。Java API适用于开发集成,需配置本地Hadoop环境和IDEA插件。三种方式各有优势,实际应用中可根据需求结合使用:Shell适合自动化运维,Web界面便于监控,Java API支持复杂业务逻辑开发。

2301_80737483的博客 1569

自研半导体Fab缺陷分析系统:从Klarf解析到Defect Map可视化的实战替代方案

本文分享了自研半导体Fab缺陷分析系统的实战经验,重点解析了Klarf文件格式与坐标系转换的核心技术,并详细介绍了从数据解析到Defect Map可视化的完整实现路径。该系统旨在为成本敏感或追求技术自主的团队提供一套功能完备的Klarity Defect平替方案,有效降低对昂贵商业软件的依赖,实现缺陷数据的自主分析与可视化。

y7z8a的博客 717

Hadoop分布式文件系统HDFS的JAVA-API实战

Hadoop分布式文件系统HDFS的实战 HDFS JAVA API 搭建Linux下Eclipse开发环境 将eclipse-jee-juno-SR2-linux-gtk-x86_64.tar.gz和hadoop-eclipse-plugin-2.7.1.jar上传/usr/local目录下解压 [root@hadoop0 local]# tar -xvf eclipse-jee-juno-SR2-linux-gtk-x86_64.tar.gz 为Eclipse安装Hadoop插件 图片15

weixin_44325370的博客 489

RTX4090上跑CenterNet训练

参考实现 url=https://github.com/xingyizhou/CenterNet.git commit_id=5b1a490a52da57d3580e80b8bb4bbead9ef2af96

遗失的神庙 1623

《Ventoy 制作系统安装 U 盘的具体步骤》

然后您可以在电脑的磁盘管理中对 U 盘进行快速格式化,选择 FAT32 或 NTFS 文件系统。至此,Ventoy 系统安装 U 盘就制作完成了。您可以在需要安装系统的电脑上,从 U 盘启动,然后选择相应的系统镜像进行安装。安装完成后,将您需要的操作系统镜像文件(如 Windows、Linux 等的 ISO 格式镜像)复制到 U 盘的根目录。在安装程序中,选择您插入的 U 盘设备,确保选择正确,以免误操作。2. 确认选择的 U 盘盘符正确,防止误操作导致其他磁盘数据丢失。点击“安装”按钮,等待安装完成。

jiyiwangluokeji的博客 2675

Hadoop Java API实战:从HDFS文件操作到MapReduce作业提交

在大数据技术栈中,分布式文件系统(如HDFS)和分布式计算框架(如MapReduce)是处理海量数据的核心基础设施。其底层原理基于将数据分块存储在多台机器上,并通过并行计算模型实现高效处理。对于Java开发者而言,掌握Hadoop Java API具有重要技术价值,它允许开发者直接通过编程方式与Hadoop集群交互,将分布式存储与计算能力无缝集成到现有Java应用中,避免了依赖Shell脚本的局限。这一能力在构建实时数据管道、ETL工具或自定义数据处理框架等应用场景中尤为关键。本文聚焦于HDFS Java

weixin_29038303的博客 301

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Hadoop 入门:HDFS Shell 命令 + Java API 完整实战

本文基于 Hadoop 伪分布式环境,实操演示 HDFS 常用 Shell 命令,同时提供完整 Java API 代码,实现文件上传、目录创建、文件删除等分布式文件系统操作。包含 Maven 依赖、工具封装类、运行案例,整理 Windows 开发常见报错解决方案,零基础可复现,适合大数据入门学习 HDFS 读写原理。

2401_84634167的博客 211

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)

【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)

showswoller的博客 1113

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

别再死记硬背了!用Hadoop HDFS Java API实战文件操作,5个例子搞定期末大作业

本文通过5个实战案例详细讲解如何使用Hadoop HDFS Java API进行文件操作,帮助开发者快速掌握大数据处理的核心技能。从环境配置到文件存在性检测、多文件合并、按行读取分析,再到完整文件操作流程,每个案例都配有详细代码和解析,助力轻松应对期末大作业挑战。

weixin_30872499的博客 342

《Hadoop MapReduce实战手册》一2.8 使用HDFS的Java API

本节书摘来异步社区《Hadoop MapReduce实战手册》一书中的第2章,第2.8节,作者: 【美】Srinath Perera , Thilina Gunarathne 译者: 杨卓荦 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.8 使用HDFS的Java API Hadoop MapReduce实战手册HDFS Ja...

weixin_34150503的博客 114

别再只会用hadoop fs命令了!HDFS Java API实战:从文件读写到进度监控

本文深入探讨HDFS Java API的实战应用,从文件读写到进度监控,帮助开发者超越基础命令行操作。通过详细代码示例和性能优化技巧,揭示Hadoop分布式文件系统的核心原理,提升大数据处理效率。特别适合需要深度集成HDFS的云计算和大数据开发者。

weixin_30326515的博客 413

Hadoop 3.3.1实战:用Java API搞定HDFS文件读写,附Eclipse完整项目配置与常见报错解决

本文详细介绍了如何使用Hadoop 3.3.1的Java API进行HDFS文件读写操作,包括Eclipse项目配置、核心API实战以及12类常见报错的解决方案。内容涵盖环境准备、文件系统连接配置、文件读写实现及生产环境优化实践,帮助开发者高效处理大数据存储任务。

weixin_30765505的博客 502

Hadoop 3.1.3 HDFS Shell 命令实战:10个核心操作与Java API 代码对照

本文详细介绍了Hadoop 3.1.3中HDFS的Shell命令与Java API操作对比,涵盖文件上传、下载、查看、目录操作等10个核心场景。通过实战代码示例展示两种操作方式的差异与适用场景,帮助开发者高效处理大数据存储任务,提升HDFS操作技能。特别针对Java API开发提供了性能优化和安全模式处理等高级技巧。

weixin_28718345的博客 263

Hadoop 3.x(HDFS)----【HDFS 的 API 操作】

参数优先级排序:1.客户端代码中设置的值 > 2.ClassPath 下的用户定义配置文件 > 3.然后是服务器的自定义配置(xxx.site.xml) > 4.服务器的默认配置(xxx-default.xml)说明缺少微软运行库(正版系统往往会有这个问题,但是不是说,没有出现错误,系统就是盗版的了 …在 IDEA 中创建一个 Maven 工程 HdfsClientDemo,并导入相应的依赖坐标 + 日志添加。文件到非中文路径(如:Z:\hadoop-3.1.0)目录下,新建一个文件,命名为。

是微风,是晚霞,是无可替代 971

Hadoop 3.1.3 HDFS文件操作实战:Shell命令与Java API对照手册(附完整代码)

本文详细对比了Hadoop 3.1.3中HDFS文件操作的Shell命令与Java API实现方式,涵盖文件上传、下载、内容查看等核心操作。通过实战代码示例和性能优化建议,帮助开发者高效掌握分布式文件系统操作技巧,提升Hadoop开发效率。

weixin_30606461的博客 398
下一篇: redis和zk分布式锁实现
wflovejava
博客等级 码龄11年 23粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值