当前位置: 首页 > article >正文

Windows 10上Hadoop 3.3.6环境搭建避坑全记录:从winutils到IDEA Maven项目实战

Windows 10上Hadoop 3.3.6环境搭建避坑全记录从winutils到IDEA Maven项目实战在Windows系统上搭建Hadoop开发环境对于想要学习大数据技术却又没有Linux服务器的开发者来说是一个极具实用价值的技能。不同于Linux环境下的一键式安装Windows平台上的Hadoop环境搭建往往会遇到各种坑从winutils缺失到路径权限问题再到Maven依赖配置每一步都可能让初学者望而却步。本文将带你完整走一遍Windows 10上Hadoop 3.3.6环境搭建的全过程重点解决那些官方文档中没有明确说明的Windows特有问题。1. 环境准备与Hadoop安装1.1 系统与软件版本选择在开始之前我们需要确保系统环境和软件版本的兼容性。以下是经过验证的稳定组合操作系统Windows 10 64位版本1903或更高Java版本JDK 8u291或JDK 11.0.12不推荐使用最新版JDK 17可能存在兼容性问题Hadoop版本3.3.6当前稳定版Maven版本3.9.4注意虽然Hadoop 3.x理论上支持JDK 11但在Windows环境下JDK 8仍然是兼容性最好的选择。1.2 Hadoop安装包获取与解压从Apache官网下载Hadoop二进制包https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz解压到不含中文和空格的路径例如D:\BigData\hadoop-3.3.61.3 winutils补丁安装winutils是Hadoop在Windows上运行的必要工具集官方发布的Hadoop包中不包含Windows版本需要单独下载下载对应版本的winutilshttps://github.com/cdarlint/winutils/tree/master/hadoop-3.3.6/bin将下载的所有文件复制到Hadoop的bin目录下覆盖原有文件2. 环境变量配置与验证2.1 关键环境变量设置在系统环境变量中添加以下配置变量名示例值说明HADOOP_HOMED:\BigData\hadoop-3.3.6Hadoop安装目录PATH%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin添加Hadoop命令到系统路径2.2 常见问题排查运行hadoop version命令时可能会遇到以下错误及解决方案错误1缺少MSVCR120.dll解决方案安装Visual C 2013 Redistributable下载地址微软官方运行库错误2java.io.IOException: Could not locate executable null\bin\winutils.exe解决方案确认HADOOP_HOME环境变量设置正确且winutils文件已正确放置3. Maven环境配置与优化3.1 Maven安装与基础配置下载Maven二进制包并解压https://archive.apache.org/dist/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.zip配置本地仓库路径修改conf/settings.xmllocalRepositoryD:\BigData\maven_repo/localRepository3.2 镜像源优化配置为提高依赖下载速度替换为阿里云镜像mirror idaliyunmaven/id name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url mirrorOfcentral/mirrorOf /mirror4. IDEA中Hadoop项目实战4.1 创建Maven项目在IDEA中新建Maven项目选择maven-archetype-quickstart配置项目基本信息GroupId: com.hadoop.exampleArtifactId: hdfs-demoVersion: 1.0-SNAPSHOT4.2 添加Hadoop依赖在pom.xml中添加以下依赖dependencies !-- Hadoop Client -- dependency groupIdorg.apache.hadoop/groupId artifactIdhadoop-client/artifactId version3.3.6/version /dependency !-- 日志相关 -- dependency groupIdorg.slf4j/groupId artifactIdslf4j-log4j12/artifactId version1.7.36/version /dependency /dependencies4.3 日志配置在src/main/resources下创建log4j.properties文件log4j.rootLoggerINFO, stdout log4j.appender.stdoutorg.apache.log4j.ConsoleAppender log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern%d %p [%c] - %m%n5. HDFS Java API实战与避坑指南5.1 基础HDFS操作示例创建HDFS客户端工具类HdfsUtils.javapublic class HdfsUtils { private FileSystem fs; // 初始化HDFS连接 public void init() throws Exception { Configuration conf new Configuration(); // 解决Windows权限问题 System.setProperty(HADOOP_USER_NAME, root); // HDFS地址 URI uri new URI(hdfs://localhost:9000); fs FileSystem.get(uri, conf); } // 创建目录 public void mkdir(String path) throws Exception { fs.mkdirs(new Path(path)); System.out.println(目录创建成功: path); } // 关闭连接 public void close() throws IOException { if(fs ! null) { fs.close(); } } }5.2 Windows平台特有问题的解决方案权限问题方案一在代码中设置用户身份System.setProperty(HADOOP_USER_NAME, root);方案二修改HDFS的权限检查配置不推荐生产环境使用路径问题Windows路径需要使用正斜杠(/)或双反斜杠(\)推荐使用Hadoop的Path类来处理路径相关问题端口冲突问题确保HDFS的默认端口9000未被占用可以通过修改etc/hadoop/core-site.xml来更改默认端口6. 项目结构与代码优化6.1 推荐的项目结构hdfs-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── hadoop/ │ │ │ ├── utils/ │ │ │ │ └── HdfsUtils.java │ │ │ └── App.java │ │ └── resources/ │ │ ├── log4j.properties │ │ └── core-site.xml ├── pom.xml6.2 工具类增强优化后的HdfsUtils工具类可以支持更多操作public class HdfsUtils { // ... 初始化代码同上 ... // 上传文件 public void upload(String localPath, String hdfsPath) throws Exception { fs.copyFromLocalFile(new Path(localPath), new Path(hdfsPath)); } // 下载文件 public void download(String hdfsPath, String localPath) throws Exception { fs.copyToLocalFile(new Path(hdfsPath), new Path(localPath)); } // 文件列表 public void listFiles(String hdfsPath) throws Exception { FileStatus[] statuses fs.listStatus(new Path(hdfsPath)); for(FileStatus status : statuses) { System.out.println(status.getPath().getName()); } } }7. 调试与性能优化技巧7.1 常见错误排查连接拒绝检查HDFS服务是否启动端口是否正确权限不足确认代码中设置了正确的用户身份类找不到检查Maven依赖是否正确下载7.2 性能优化建议配置优化Configuration conf new Configuration(); conf.set(dfs.replication, 1); // 降低副本数用于开发环境资源释放try(FileSystem fs FileSystem.get(conf)) { // 操作HDFS } // 自动关闭连接批量操作减少频繁的小文件操作尽量使用批量处理在实际开发中我发现Windows平台下的Hadoop环境虽然可以满足学习和开发需求但在处理大规模数据时性能明显不如Linux环境。建议在掌握基础操作后尽快迁移到Linux环境下进行更深入的学习和开发。

相关文章:

Windows 10上Hadoop 3.3.6环境搭建避坑全记录:从winutils到IDEA Maven项目实战

Windows 10上Hadoop 3.3.6环境搭建避坑全记录:从winutils到IDEA Maven项目实战 在Windows系统上搭建Hadoop开发环境,对于想要学习大数据技术却又没有Linux服务器的开发者来说,是一个极具实用价值的技能。不同于Linux环境下的"一键式&quo…...

上市公司-绿色新闻、环保新闻数据库(2007-2023年)

01、数据介绍上市公司绿色新闻报道的内容确实涵盖了多个关键方面,旨在向投资者、消费者、监管机构及广大公众传达企业在环境保护、可持续发展和社会责任方面的实践与成效。上市公司绿色新闻报道不仅是企业向外界传递其绿色发展成果和承诺的窗口,也是促进…...

如何用PX4神经网络控制技术彻底革新你的无人机飞行体验

如何用PX4神经网络控制技术彻底革新你的无人机飞行体验 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 你是否曾为无人机在复杂环境中的控制问题而烦恼?当传统PID控制器面对动态风场、负…...

如何快速掌握火灾模拟:Fire Dynamics Simulator 完全指南

如何快速掌握火灾模拟:Fire Dynamics Simulator 完全指南 【免费下载链接】fds Fire Dynamics Simulator 项目地址: https://gitcode.com/gh_mirrors/fd/fds Fire Dynamics Simulator(FDS)是由美国国家标准与技术研究院(NI…...

打造专属方块世界:PCL启动器全方位配置与优化指南

打造专属方块世界:PCL启动器全方位配置与优化指南 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL Plain Craft Launcher(简称PCL)是一款…...

嵌入式C如何扛住300KB模型推理负载?:ARM Cortex-M7上量化+算子裁剪实战全链路拆解

更多请点击: https://intelliparadigm.com 第一章:嵌入式C与轻量级大模型适配的底层挑战全景 在资源受限的MCU(如ARM Cortex-M4/M7、ESP32)上部署轻量级大模型(如TinyLlama、Phi-3-mini、Qwen2-0.5B量化版&#xff0…...

告别“白板”DSP:手把手教你用Visual DSP++ 5.1.2为BF533目标板克隆固件(从仿真器连接到HEX文件保存)

嵌入式工程师必备:Visual DSP 5.1.2固件克隆全流程实战指南 在嵌入式系统维护和小批量生产中,经常会遇到需要从已编程的DSP芯片中提取固件的情况。无论是为了维修替换、版本归档还是生产测试,掌握可靠的固件克隆技术都至关重要。本文将手把手…...

HNU-计算机系统-实验三:逆向拆弹实战——从汇编迷雾到通关密钥

1. 逆向拆弹初体验:当代码侦探的第一天 第一次打开bomb可执行文件时,那种感觉就像拿到一个密封的黑匣子。终端里冷冰冰的"Welcome to my fiendish little bomb..."提示语,配合着闪烁的光标,简直就是在挑衅。我记得当时盯…...

MATLAB等高线图进阶:从基础绘制到高级定制化

1. 等高线图基础绘制与核心参数解析 第一次接触MATLAB等高线图时,我被它展现三维数据的能力惊艳到了。记得当时处理一组地质勘探数据,需要可视化地下矿藏分布,contour函数只用三行代码就解决了问题: [X,Y] meshgrid(-3:0.1:3); Z…...

Free Texture Packer完全指南:颠覆性精灵表制作工具的革命性应用

Free Texture Packer完全指南:颠覆性精灵表制作工具的革命性应用 【免费下载链接】free-tex-packer Free texture packer 项目地址: https://gitcode.com/gh_mirrors/fr/free-tex-packer 你是否曾在游戏开发中被数百个零散图片拖慢加载速度而苦恼&#xff1f…...

从智能音箱到车载语音:拆解非线性回声消除(AEC)在IoT设备里的实战与选型

从智能音箱到车载语音:非线性回声消除(AEC)在IoT设备中的工程实践 当你在智能音箱前喊出"播放周杰伦的歌"时,设备需要在0.5秒内完成声学回声消除、语音唤醒和指令识别这一系列复杂操作。而在时速80公里的汽车里&#xf…...

如何快速实现MASA模组界面本地化:终极中文汉化实战指南

如何快速实现MASA模组界面本地化:终极中文汉化实战指南 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Masa Mods复杂的英文界面而烦恼吗?这个专为中文玩家…...

终极NCM解密指南:3分钟解锁网易云音乐加密文件,实现跨设备自由播放

终极NCM解密指南:3分钟解锁网易云音乐加密文件,实现跨设备自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他设备播放而烦恼吗?ncmdump解密工具…...

如何快速掌握RPA文件提取:专业级游戏资源提取工具完全指南

如何快速掌握RPA文件提取:专业级游戏资源提取工具完全指南 【免费下载链接】unrpa A program to extract files from the RPA archive format. 项目地址: https://gitcode.com/gh_mirrors/un/unrpa 你是否曾因无法打开RenPy引擎打包的RPA文件而束手无策&…...

如何设计 Agent 的权限系统与业务系统解耦?

网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…...

DoL-Lyra整合包构建系统:一键生成50+游戏版本的终极自动化方案

DoL-Lyra整合包构建系统:一键生成50游戏版本的终极自动化方案 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 还在为Degrees of Lewdity游戏的各种MOD组合配置而烦恼吗?DoL-L…...

GoWxDump:如何在5分钟内完成微信取证分析的终极指南

GoWxDump:如何在5分钟内完成微信取证分析的终极指南 【免费下载链接】GoWxDump 删库 项目地址: https://gitcode.com/gh_mirrors/go/GoWxDump 在数字取证领域,微信聊天记录分析一直是一个技术挑战。GoWxDump作为一款专业的微信客户端取证工具&…...

解密Materials Project API:从数据迷宫到科学洞察的桥梁

解密Materials Project API:从数据迷宫到科学洞察的桥梁 【免费下载链接】mapidoc Public repo for Materials API documentation 项目地址: https://gitcode.com/gh_mirrors/ma/mapidoc 当材料科学家面对海量的计算数据时,常常陷入一个困境&…...

从零部署垂起固定翼:Gazebo仿真与QGC地图点任务实战

1. 环境准备与模型配置 第一次接触垂起固定翼仿真时,我被它既能垂直起降又能高速巡航的特性吸引。这种混合构型无人机在Gazebo中的仿真,需要特别注意模型文件的配置。PX4官方提供的standard_vtol模型已经帮我们做好了气动参数和混控逻辑,我们…...

gRPC与Protobuf:高性能微服务API封装实战

004、gRPC与Protobuf:高性能微服务API封装实战 从一次深夜调试说起 上周三凌晨两点,我被告警短信吵醒:某个核心服务的响应时间从平均15毫秒飙到了800毫秒。登录监控系统一看,CPU和内存都很正常,网络流量也没突增。最后定位到问题出在服务间通信的JSON序列化上——某个业务…...

告别VCS仿真卡顿!手把手教你用Verdi的fsdb+autoflush实现边仿真边看波形

突破传统仿真瓶颈:Verdi实时波形调试技术实战指南 在芯片设计验证领域,工程师们常常陷入"仿真-等待-查看"的循环困境。当面对千万行RTL代码的SoC设计时,传统的波形调试方式就像用望远镜观察星体——必须等待漫长的"光线传播&q…...

MathJax 4.0终极指南:3步让你的网站数学公式渲染速度翻倍

MathJax 4.0终极指南:3步让你的网站数学公式渲染速度翻倍 【免费下载链接】MathJax Beautiful and accessible math in all browsers 项目地址: https://gitcode.com/gh_mirrors/ma/MathJax 你是否遇到过网页上的数学公式加载缓慢、显示模糊,或者…...

别再死记硬背了!用这3个实战项目理解SGD、Adam和梯度消失(附代码)

告别枯燥理论:用3个代码项目彻底掌握SGD、Adam与梯度消失 当你第一次听说"随机梯度下降"时,脑海里浮现的是不是一堆晦涩的数学公式?面对面试官关于优化算法的连环追问,是否曾因缺乏直观理解而支支吾吾?本文将…...

Illustrator脚本大全:5分钟掌握20个免费高效工具,设计效率提升10倍!

Illustrator脚本大全:5分钟掌握20个免费高效工具,设计效率提升10倍! 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Illustrator中的重复操…...

服务注册发现实践

服务注册发现实践:构建高效微服务架构的基石 在微服务架构中,服务注册与发现是确保系统高可用和动态扩展的核心机制。随着服务数量的增加,如何高效管理服务实例的注册、发现与健康状态成为开发者必须面对的挑战。本文将深入探讨服务注册发现…...

从 PWM 到正弦波:在 Proteus 里用 STM32F103 的 DAC 或 PWM+滤波生成波形全记录

从 PWM 到正弦波:STM32F103 波形生成的双路径实战解析 在嵌入式开发中,信号生成是基础却至关重要的技能。许多开发者熟悉基础的PWM输出,但当需求升级到更复杂的模拟信号(如正弦波)时,往往面临选择&#xff…...

避坑指南:STM32F103的PWM+DMA配置,为什么你的波形出不来?

STM32F103 PWMDMA实战:从原理到波形输出的全流程避坑指南 第一次尝试用STM32的PWMDMA功能时,我盯着毫无反应的示波器屏幕整整两小时。明明代码编译通过,寄存器配置看起来也没问题,可就是没有波形输出。这种挫败感想必很多初学者都…...

人类微生物组数据分析的终极指南:curatedMetagenomicData如何让复杂研究变得简单

人类微生物组数据分析的终极指南:curatedMetagenomicData如何让复杂研究变得简单 【免费下载链接】curatedMetagenomicData Curated Metagenomic Data of the Human Microbiome 项目地址: https://gitcode.com/gh_mirrors/cu/curatedMetagenomicData 你是否曾…...

JD-GUI插件开发终极指南:5大扩展点深度解析与实战

JD-GUI插件开发终极指南:5大扩展点深度解析与实战 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui JD-GUI作为一款强大的Java反编译工具,其真正的威力在于其可扩展的插件架构。本…...

FPGA工程师避坑指南:CameraLink接口调试中OSERDES2/ISERDES2原语的时序约束与对齐

FPGA工程师避坑指南:CameraLink接口调试中OSERDES2/ISERDES2原语的时序约束与对齐 当你在Vivado环境中实现CameraLink接口时,是否遇到过这样的场景:明明仿真通过了,但上板后视频出现雪花、错位甚至完全无信号?作为FPGA…...