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

【在 Windows 上运行 Apache Hadoop 或 Spark/GeoTrellis 涉及 HDFS 】

在 Windows 上运行 Apache Hadoop 或 Spark/GeoTrellis 涉及 HDFS 或文件系统操作时的经典问题
您遇到的错误是 在 Windows 上运行 Apache Hadoop 或 Spark/GeoTrellis 涉及 HDFS 或文件系统操作时的经典问题

错误信息 java.io.FileNotFoundException: Could not locate Hadoop executable: C:\Users\Patch\AppData\Local\Temp\bin\winutils.exe 非常明确地指出了问题所在。

这是因为您的 GeoTrellis/Spark 代码在执行 FileSystem.get(sc.hadoopConfiguration).mkdirs(outputDir) 等操作时,底层调用了 Hadoop 的文件系统 API。在 Windows 环境下,Hadoop 需要一个名为 winutils.exe 的特殊工具来模拟 Linux 的文件权限和操作,但它无法在您的临时目录中找到该文件。


解决方案:配置 winutils.exe

解决此问题的标准且最简单的方法是下载正确的 Hadoop Windows 二进制文件,并配置您的系统或 Spark 应用程序指向它们。

步骤 1: 下载 winutils.exe

您需要下载与您使用的 Hadoop 版本兼容的 winutils.exe 和相关二进制文件。

  1. 确定 Hadoop 版本: 检查您的 Spark 或 GeoTrellis 依赖中使用的 Hadoop 版本(例如,通常是 Hadoop 2.7.x 或 3.x)。
  2. 下载二进制文件: 搜索并下载对应版本的 Hadoop Windows 二进制文件包。
    • 一个常用的资源是 steveloughran/winutils 的 GitHub 仓库,其中包含了常见版本的编译好的二进制文件。

步骤 2: 创建本地 Hadoop 目录

在您的本地文件系统上创建一个专用的目录来存放这些文件。

  1. 创建一个目录,例如:C:\hadoop\bin
  2. 将下载的 winutils.exehadoop.dll(如果存在)放到 C:\hadoop\bin 目录下。

步骤 3: 配置 Spark/Hadoop 环境变量

您可以通过两种方式告诉 Spark/Hadoop 您的 winutils.exe 在哪里:

选项 A (推荐): 设置系统环境变量

这是最彻底的解决方案,对所有 Spark 应用都有效。

  1. 设置 HADOOP_HOME 环境变量:

    • 变量名: HADOOP_HOME
    • 变量值: C:\hadoop (指向您创建的根目录,不是 bin 目录)
  2. 更新 Path 环境变量:

    • %HADOOP_HOME%\bin 添加到您的系统 Path 环境变量中。
选项 B: 运行时配置 SparkContext

如果您无法修改系统环境变量,可以在代码中配置 Spark 运行时。您需要在创建 SparkContext 之前设置 Hadoop 配置。

在您的测试代码或初始化 SparkContext 的地方(例如 SparkTestBase 或您的 main 函数),添加以下代码:

// 导入 Hadoop Configuration
import org.apache.hadoop.conf.Configuration// 在创建 SparkContext 之前执行此操作
val hadoopHomeDir = "C:\\hadoop" // 替换为您 winutils.exe 所在的根目录System.setProperty("hadoop.home.dir", hadoopHomeDir)// (如果您的程序已经创建了 SparkContext,则可以直接配置)
// val conf = new Configuration()
// conf.set("fs.file.impl", classOf[org.apache.hadoop.fs.LocalFileSystem].getName)
// conf.set("fs.hdfs.impl", classOf[org.apache.hadoop.hdfs.DistributedFileSystem].getName)// ... 正常创建 SparkContext
// implicit val sc: SparkContext = new SparkContext(...)

总结和快速检查

完成设置后,请重启您的 IDE (IntelliJ IDEA, Eclipse 等),以便新的环境变量生效。

检查项值/路径目的
HADOOP_HOMEC:\hadoop指向 Hadoop 根目录
%HADOOP_HOME%\binC:\hadoop\bin包含 winutils.exe
winutils.exe位于 C:\hadoop\bin允许 Hadoop 在 Windows 上执行文件权限操作

解决这个 winutils.exe 缺失的问题后,您的 Spark/GeoTrellis 代码就应该能够成功创建本地文件系统中的目录(如 test/png_pyramid_test/png_test_layer)并继续执行后续的瓦片生成和保存操作了。

http://www.dtcms.com/a/486020.html

相关文章:

  • Linux操作系统-命令行参数及环境变量
  • 系统架构设计师备考第40天——软件可靠性基础
  • RAG 问题处理系统架构解析:企业级智能问答QuestionsProcessor.py的工程实现
  • LlamaIndex多模态RAG开发实现详解
  • springboot实现微信小程序支付(服务商和普通商户模式)
  • 石景山网站建设好的公司有特色的企业网站
  • 个人建网站怎么赚钱网站一般用什么数据库
  • 【机器学习03】学习率与特征工程、多项式回归、逻辑回归
  • PyTorch解析使用张量与动态计算图实现深度学习模型的高效训练
  • 大二java学习笔记:二维数组
  • 缓存行Cache Line
  • 10-机器学习与大模型开发数学教程-第1章 1-2 O(n) 表示法与时间复杂度
  • toLua[六] Examples 05_LuaCoroutine分析
  • keil5使用STlink下载程序到stm32后不自动运行的解决办法
  • stm32大项目阶段20251015
  • 机器学习四范式(有监督、无监督、强化学习、半监督学习)
  • 源码分析 golang bigcache 高性能无 GC 开销的缓存设计实现
  • 网站开发的工资开发者应用
  • 东莞网站建设优化企业太平洋保险网站
  • transformer-注意力评分函数
  • 破解 Shuffle 阻塞:Spark RDD 宽窄依赖在实时特征工程中的实战与未来
  • TypeScript入门学习
  • 西固网站建设平台12306网站花多少钱做的
  • Linux运维实战:云原生设计与实施DockerK8S(视频教程)
  • Chroma 开源的 AI 应用搜索与检索数据库(即向量数据库)
  • 楼宇自控 DDC 系统 + IBMS 智能化集成系统:构建建筑智慧运营双核心
  • 《深度学习框架核心之争:PyTorch动态图与早期TensorFlow静态图的底层逻辑与实战对比》
  • 固件下printf函数分析
  • 做外贸都得有网站吗秦皇岛网站排名公司
  • AI-Native 能力反思(三):Prompt Engineering 自我提升神器