HDFS javaAPI-windows的IDEA中java文件在linux中的hadoop平台运行

作者:chde2Wang日期:2026/7/1

目录

运行前提

一、在IDEA的Maven项目中创建MkDirDemo类

(1)先确认目录结构(Maven 标准目录,必须按这个来)

(2)hdfs java操作代码输入

(3)验证pom.xml文件中hadoop依赖是否和linux中hadoop版本一致

(4)确认 HDFS RPC 地址(关键)

二、Windows 本地配置 Hadoop 运行环境(必做,否则报 winutils 缺失)

(1)下载 Windows 适配 hadoop 二进制包Hadoop3.x 下载对应 win 工具包,解压到无中文路径,例:D:\hadoop-3.x-win

(2)新建系统变量:HADOOP_HOME=D:\hadoop-3.x-win

(3)Path 新增:%HADOOP_HOME%\bin

(4)重启 IDEA(环境变量生效)

三、虚拟机 Linux 网络 & 防火墙配置

(1)虚拟机网络设置VMware/VirtualBox 网卡改为桥接模式,重启虚拟机,IP 固定为 192.168.17.128

(2) Linux 放行端口bash运行


运行前提

1、windows能ping通虚拟机IP地址【虚拟机网络改为桥接模式,改为固定IP】

2、Linux开放端口:9000,9870,8088【使用windows的 PowerShell,执行:Test-NetConnection IP地址 -Port 9000,需要修改linux中hadoop配置文件hdfs-site.xml和core-site.xml】

3、windows配置Hadoop本地依赖

4、Maven中pom.xml文件中引入和linux中hadoop集群版本一致的hadoop依赖

5、hdfs的RPC地址为:hdfs:ip地址:9000,不用9870网页端口

一、在IDEA的Maven项目中创建MkDirDemo类

(1)先确认目录结构(Maven 标准目录,必须按这个来)

项目根目录

└── src

├── main

│ └── java // 业务代码存放位置(创建Java文件在这里)

└── test

└── java // 单元测试代码存放位置

关键前提

main/java 文件夹必须是蓝色源码根目录,否则右键不会出现 Java Class 选项。

(2)hdfs java操作代码输入

1import org.apache.hadoop.conf.Configuration;
2import org.apache.hadoop.fs.FileStatus;
3import org.apache.hadoop.fs.FileSystem;
4
5import org.apache.hadoop.fs.Path;
6import java.io.IOException;
7import java.net.URI;
8import java.net.URISyntaxException;
9
10public class MkdirDemo {
11    public static FileSystem getFileSystem() throws IOException, URISyntaxException, InterruptedException {
12        Configuration conf=new Configuration();
13        URI url=new URI("hdfs://192.168.17.128:9000");
14        final FileSystem fileSystem=FileSystem.get(url,conf,"root");
15        return fileSystem;
16    }
17
18    public static  void list(String dir) throws Exception{
19        FileSystem fileSystem=getFileSystem();
20        FileStatus[] listStatus=fileSystem.listStatus(new Path(dir));
21        for(FileStatus fileStatus : listStatus){
22            boolean isDir=fileStatus.isDirectory();
23            String name=fileStatus.getPath().toString();
24            System.out.println(isDir+" "+name);
25        }
26    }
27
28    public static void mkdir(String path) throws Exception{
29        final FileSystem fileSystem=getFileSystem();
30        fileSystem.mkdirs(new Path(path));
31        //遍历文件夹下的内容
32        list("/");
33    }
34
35    public static void create(String path) throws Exception{
36        final FileSystem fileSystem=getFileSystem();
37        fileSystem.create(new Path(path));
38        //遍历文件夹下的内容
39        list("/");
40    }
41
42    public static void delete(String path) throws Exception{
43        final FileSystem fileSystem=getFileSystem();
44        fileSystem.delete(new Path(path),true);
45        //遍历文件夹下的内容
46        list("/");
47    }
48
49    public static void main(String[] args) throws Exception{
50        mkdir("/bigdata");
51
52//        delete("bigdata");
53
54//        create("demo.txt");
55
56    }
57}

(3)验证pom.xml文件中hadoop依赖是否和linux中hadoop版本一致

在linux中查看hadoop版本

hadoop version

修改Maven项目中pom.xml中的hadoop依赖版本与其一致,并更新Maven

(4)确认 HDFS RPC 地址(关键)

Linux 执行查看代码连接地址:

hdfs getconf -confKey fs.defaultFS

# 输出应为 hdfs://192.168.17.128:9000

二、Windows 本地配置 Hadoop 运行环境(必做,否则报 winutils 缺失)

(1)下载 Windows 适配 hadoop 二进制包Hadoop3.x 下载对应 win 工具包,解压到无中文路径,例:D:\hadoop-3.x-win

内部 bin 文件夹包含 winutils.exe、hadoop.dll2.2 Windows 系统环境变量配置

(2)新建系统变量:HADOOP_HOME=D:\hadoop-3.x-win

(3)Path 新增:%HADOOP_HOME%\bin

(4)重启 IDEA(环境变量生效)

三、虚拟机 Linux 网络 & 防火墙配置

(1)虚拟机网络设置VMware/VirtualBox 网卡改为桥接模式,重启虚拟机,IP 固定为 192.168.17.128

linux中查看虚拟IP:

ip addr

Windows CMD 测试连通:ping 192.168.17.128

(2) Linux 放行端口bash运行

(1) 永久开放RPC 9000、网页9870、YARN8088

firewall-cmd --add-port=9000/tcp --permanent

firewall-cmd --add-port=9870/tcp --permanent

firewall-cmd --add-port=8088/tcp --permanent

firewall-cmd --reload

# 查看开放端口

firewall-cmd --list-ports

测试时:可以直接关闭防火墙systemctl stop firewalld

(2)修复hadoop配置【可以解决windows中ping通虚拟机IP地址访问9000端口】

进入 hadoop 配置目录

cd $HADOOP_HOME/etc/hadoop

修改配置一:vim hdfs-site.xml,添加下面配置,让 NameNode 监听全部网卡

<property>

<name>dfs.namenode.rpc-bind-host</name>

<value>0.0.0.0</value>

</property>

修改配置二: core-site.xml

错误写法(仅本地访问):

<value>hdfs://localhost:9000</value>

正确写法(绑定虚拟机实际 IP):

<property>

<name>fs.defaultFS</name>

<value>hdfs://192.168.17.128:9000</value>

</property>

第三步:重启 Hadoop 集群生效

第四步:启动完再次执行 netstat -tlnp | grep 9000,确认 Local Address 变为 0.0.0.0:9000。

tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 1234/java【正确】

0.0.0.0:9000 = 监听所有网卡,Windows 可以连接。

tcp 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1234/java【错误】

127.0.0.1:9000 = 仅本机 Linux 内部能访问,Windows 远程直接拒绝连接。

最后验证端口是否通:

windows中 PowerShell 端口检测工具(比 curl 更直观)

Win+X 打开 PowerShell,执行:

Test-NetConnection 192.168.17.128 -Port 9000

返回 TcpTestSucceeded: False = 端口被拒绝;True = 端口正常

四、执行

执行结果如下图所示:


HDFS javaAPI-windows的IDEA中java文件在linux中的hadoop平台运行》 是转载文章,点击查看原文


相关推荐


Obsidian - 使用 Share Note 分享笔记并自部署
LinXunFeng2026/6/22

欢迎关注微信公众号:FSA全栈行动 👋 一、前言 最近在整理 Obsidian 笔记时,经常会遇到一个小需求:想把某一篇笔记快速分享给别人,但又不想为了它单独搭建博客、导出 PDF 或复制到其它平台。 如果只是分享纯文本,复制粘贴当然可以。但 Obsidian 笔记里往往会有这些内容: 图片附件 代码块 Callout 提示块 标签、任务列表 Dataview 查询结果 当前主题样式和自定义 CSS 笔记之间的内部链接 这时候手动搬运就有点麻烦了,格式容易丢,图片也要重新处理。这里介绍一


RabbitMQ 从入门到精通:Spring Boot 实战三部曲(一)—— 基础核心与快速上手
绝知此事2026/6/14

RabbitMQ 从入门到精通:Spring Boot 实战三部曲(一)—— 基础核心与快速上手 专题导读:本系列共三篇,从基础到高级,带你系统掌握 RabbitMQ 在 Spring Boot 项目中的实战应用。 第一篇:基础核心与快速上手(本文)第二篇:进阶特性与可靠性保障第三篇:高级应用与性能优化 📖 前言 在当今的分布式系统中,消息队列已成为不可或缺的基础设施。RabbitMQ 作为最流行的消息中间件之一,以其可靠性、灵活性和易用性著称。 本文将从 RabbitMQ 的基础概念出


iOS、Android、Flutter 2026 流行框架对比
王若风2026/6/7

参考文章:iOS、Android、Flutter 流行框架对比(原始链接) 我把我 2 年前的一篇博客文章进行了一次“重写”,于是有了这篇。 原文的选题很实用,结构也很清晰:按布局、网络请求、图片加载三个维度,把 iOS、Android、Flutter 常见框架放在一起横向看。 帮助移动端开发洞察各端核心框架的流行趋势,提供洞察和选项参考。 但原文的数据,放到 2026 年 6 月再看,已经有点过期了。 比如 Jetpack Compose 已经不是“新趋势”,而是 Android 新项目的


数据采集卡技术全解:从硬件架构到行业应用
zlinear数据采集卡2026/5/31

目录 数据采集卡技术全解:从硬件架构到行业应用 一、数据采集卡基础概念与分类体系 1.1 核心概念:连接物理世界与数字世界的桥梁 1.2 数据采集卡的核心功能构成 1.3 与传统测量仪器的本质区别 1.4 多维度的分类体系 1.4.1 按核心性能(采样率)分类 1.4.2 按总线接口类型分类 1.4.3 按功能与应用分类 章节小结 二、硬件架构深度解析 2.1 整体架构视图:从信号入口到数据出口 2.2 模拟前端:信号的“守门人”与“化妆师” 2.3 数据转换核心:A


技术选型决策树:什么团队、什么项目该选什么框架 | 跨平台框架深度对决(4)
陆业聪2026/5/10

跨平台框架深度对决系列 · 第4/4篇(完结篇) Flutter vs KMP vs KuiKly vs RN,谁是2026年的最优解 第1篇:跨平台框架全景图——Flutter/KMP/KuiKly/RN的2026年格局 第2篇:渲染引擎与性能拆解——自绘vs原生渲染vs Bridge的终极对决 第3篇:架构哲学与工程化——从开发体验到CI/CD的全维度对比 第4篇:技术选型决策树——什么团队、什么项目该选什么框架(本篇 · 完结) 上个月,有三个不同的朋友分别找我聊跨平台选型。 第一个是创业


RAG 系列(二):用 LangChain 搭建你的第一个 RAG Pipeline
冬奇Lab2026/4/30

从 100 行代码到生产级 Pipeline 上一篇我们用手写 Python 搭了一个最小 RAG,100 行代码跑通了核心逻辑。但如果你想把那套代码搬到生产环境,很快就会撞上一堵墙。 要加载 PDF? 你需要 PyPDF2 或 pdfplumber,然后发现表格、页眉页脚的解析是一场噩梦。 要切分文本? 你那个朴素的 text.split("\n\n") 会把句子拦腰截断、破坏代码块,或者切出超长的块直接把 Token 上限撑爆。 想换个向量数据库? 祝你下午愉快——每个数据库的 API 都不


告别 jq 噩梦!这款 JSON 神器 fx 让你在终端体验“丝滑”的数据操作
GetcharZp2026/4/21

还在为复杂的 jq 语法抓狂?antonmedv/fx 带着交互式 TUI 和纯正 JavaScript 语法来了!JSON 调试、过滤、转换,一个工具全搞定。 在程序员的日常摸鱼……哦不,日常开发中,JSON 绝对是出现频率最高的朋友。 不管是调用后端接口、查看 K8s 配置,还是分析爬虫数据,面对满屏密密麻麻、甚至没有缩进的原始 JSON 字符串,我们的第一反应通常是: 打开浏览器,搜索“JSON 在线格式化”。 把数据粘进去,点一下“美化”。 忍受网页弹窗广告,或者担心敏感数据泄露。


实测对比:哪款开源 Kubernetes MySQL Operator 最值得用?(2026 深度评测)
小猿姐2026/4/13

本文基于作者在 AWS EKS 上对四款 MySQL Operator 的真实部署与测试,覆盖集群搭建、高可用切换、弹性扩缩容、动态参数、TLS 等维度,适合正在评估 MySQL Kubernetes 方案的工程师参考。 一、为什么要做这次对比测试? 过去两年,越来越多的团队开始将 MySQL 从虚拟机迁移到 Kubernetes。驱动力很直接:统一的基础设施管控、更快的弹性扩容、以及 GitOps 风格的声明式运维。 但随之而来的问题是:MySQL Operator 怎么选? 我们决定不依赖


Claude Code 的权限系统是如何工作的
candyTong2026/4/5

在 agent runtime 的实现里,权限从来不是外围配置项,而是执行系统的一部分。只要模型开始改文件、跑命令、调用外部工具,系统就必须回答一个核心问题:这一步是否允许执行,以及这个判断应该在执行链路的哪个位置完成。 Claude Code 的权限系统很适合作为分析样本。它不是在工具外面额外包一层确认框,而是把权限判断直接嵌入工具调用链路,让一次工具调用从发起到落地,始终伴随一套可组合、可回写的运行时裁决。 文章从一个常见工作场景切入,分析权限系统实际解决的问题、内部层次划分,以及这些设计对


阿里云服务迁移实战(二)——网关迁移与前后端分离配置
KD2026/3/27

一、背景 由于业务原因,需要把服务器从外部阿里云账号迁移到阿里云账号 原阿里云是在服务器上部署Nginx做网关,迁移后改用阿里云CLB 同时对前后端分离逻辑做梳理,调整为更高效合理的配置 二、Nginx迁移至CLB 1.采用阿里云CLB原因 高可用性:会自动做健康检查,如果服务出现问题,会自动做流量切换 自动化管理:部署后阿里云会处理CLB的监控、更新和运维,无需手动维护 2.迁移前 迁移前Nginx部署在一台ECS服务器上 3.迁移后 迁移后单独部署负载均衡CLB 4.迁移

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读