IntelliJ IDEA实现Hadoop读写HDFS文件(非Maven、离线版)

简介: IntelliJ IDEA实现Hadoop读写HDFS文件(非Maven、离线版)

0x00 教程内容


  1. 新建Java项目
  2. 编写HDFS读写代码
  3. 打包到服务器执行

实验前提:


a. 安装好了JDK


0x01 新建Java项目



1. 新建Java项目

a. 新建一个Java项目,配置好Project SDK,然后NextNext,起个有意义的项目名hadoop-project


image.png


b. 如果有提示,可以随便选一个


image.png


2. 项目配置

a. 右击src,建一个包,比如:com.shaonaiyi


image.png


b. 然后编辑项目结构,确保我们的SDKS已经配置上了我们的JDK(找到我们win本地的JDK主目录即可):


image.png


导入之后点击OK

c. 导入我们的HDFS依赖的jar包,一个是公共包,一个是HDFS的依赖包(然后OK):


image.png


0x02 编写HDFS代码


1. 编写写HDFS代码

a. 新建一个WriteFile

b. 编写WriteFile类代码:


package com.shaonaiyi;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.net.URI;
public class WriteFile {
    public static void main(String[] args) throws IOException {
        String content = "Hello,shaonaiyi!\n";
        String dest = "hdfs://master:9999/test.txt";
        Configuration configuration = new Configuration();
        FileSystem fileSystem = FileSystem.get(URI.create(dest), configuration);
        FSDataOutputStream out = fileSystem.create(new Path(dest));
        out.write(content.getBytes("UTF-8"));
        out.close();
    }
}


2. 编写读HDFS代码

a. 新建一个ReadFile

b. 编写ReadFile类代码:

package com.shaonaiyi;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.*;
import java.net.URI;
public class ReadFile {
    public static void main(String[] args) throws IOException {
        String dest = "hdfs://master:9999/test.txt";
        Configuration configuration = new Configuration();
        FileSystem fileSystem = FileSystem.get(URI.create(dest), configuration);
        FSDataInputStream in = fileSystem.open(new Path(dest));
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
        String line = null;
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        in.close();
    }
}


0x03 打包到服务器执行


1. 设置打包工程

a. 选择一种类型的包


image.png


b. 因为我们有几个main方法,所以我们可以不选择main方法,直接点击OK


image.png


c. 排除我们服务器上有的包,即服务器已经有的jar包就不用也把他们打包上去了。


image.png


然后一直ok,执行完,稍等一会可以看到src同级目录下多了个out文件夹。

2. 打包操作

a. 打包


image.png


b. 执行完可以看到out目录有jar包了


image.png


3. 上传服务器并执行

a. 使用XFtp等工具上传jar包和项目下的即可(此处直接上传到~路径)

hadoop-project.jar

~路径下

b. 启动hdfs

$HADOOP_HOME/sbin/start-dfs.sh


0x04 执行结果展示


c. 执行(在jar包当前路径下):

先执行写HDFS的代码(如HDFS上已有/test.txt文件会报错,请先删除或者换名字):

hadoop jar hadoop-project.jar com.shaonaiyi.WriteFile

查看是否写内容进去:

hadoop fs -cat /test.txt


image.png


执行读HDFS的代码:

hadoop jar hadoop-project.jar com.shaonaiyi.ReadFile

可以看到展示的效果:


image.png


0xFF 总结


本教程不用联网也可以执行HDFS的读写操作,此外,一样也可以执行Spark、机器学习等案例。

本教程非常关键,因为网络不好或者是简单的项目,这种传统的方式也是非常简单方便的。

关于HDFS的其他相关操作(Maven版本),请查看教程:Java API实现HDFS的相关操作


相关文章
|
3月前
|
XML 存储 分布式计算
【赵渝强老师】史上最详细:Hadoop HDFS的体系架构
HDFS(Hadoop分布式文件系统)由三个核心组件构成:NameNode、DataNode和SecondaryNameNode。NameNode负责管理文件系统的命名空间和客户端请求,维护元数据文件fsimage和edits;DataNode存储实际的数据块,默认大小为128MB;SecondaryNameNode定期合并edits日志到fsimage中,但不作为NameNode的热备份。通过这些组件的协同工作,HDFS实现了高效、可靠的大规模数据存储与管理。
293 70
|
8月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
366 6
|
7月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
7月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
598 8
|
8月前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
487 1
|
8月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
230 0
|
8月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
103 0
|
8月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
148 0
|
8月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
143 3
|
8月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
186 5

热门文章

最新文章

相关实验场景

更多

推荐镜像

更多