当前位置: 首页 > 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.jsqmd.com/news/36338/

相关文章:

  • 用JMeter查询天气
  • 2025年比较好的高邮大虾仁厂家最新实力排行
  • isilon存储OneFS 9.5以上版本修改密码方法 - yi
  • 2025年11月刑辩律所排行榜:十强推荐与权威对比报告
  • 2025年11月暖气片厂家推荐:十大实力品牌合集与高性价比选型攻略
  • pt2edi.pl
  • 读书笔记:OpenPBR 规范(5)
  • 2025年玻璃钢雕塑生产厂家权威推荐榜单:玻璃钢人物雕塑/玻璃钢景观雕塑/定制玻璃钢雕塑源头厂家精选
  • 2025年孕慈安权威解析:美国PURE POLAR十一年品牌深度推荐盘点
  • 2025年新能源重卡权威解析推荐榜:盘点厂家实力与口碑前五强
  • Luogu P1121 环状最大两段子段和 题解 [ 绿 ] [ 分类讨论 ] [ 线性 DP ]
  • Archery + LDAP 一体化部署
  • 2025年热门的高尔夫观光车厂家最新权威实力榜
  • 2025年11月上海财税公司十大推荐:靠谱机构汇总与高性价比选课技巧
  • 2025.11.10
  • C++设计模式之行为型模式:迭代器模式(Iterator) - 详解
  • 2025年评价高的金钻绒厂家实力及用户口碑排行榜
  • springboot mybaits 连接多数据源
  • 写博客怕内容被偷?SSR 实现安全加密的原理讲解
  • 数据库变量使用
  • 2025年11月上海财税公司十大推荐:主流机构排行榜与高性价比选择指南
  • 2025 运维监控厂商选型全指南:选对监控工具筑牢运维根基,助力企业数字化转型
  • 逆向基础--C++ 作用域、常量、修饰符类型 (03)
  • 2025年石棉橡胶板厂家联系电话推荐:精选老牌企业速查指南
  • 2025年石棉橡胶板厂家联系电话推荐:源头工厂直联通道
  • 2025年石棉橡胶板厂家联系电话推荐:五强厂家速查指南
  • 2025年评价高的真丝绒热门厂家推荐榜单
  • 2025年比较好的镭射激光灯厂家推荐及选购参考榜
  • 2025年杭州刑事律师权威推荐榜单:劳动纠纷律师/刑事律师/离婚律师团队精选
  • 2025年11月geo优化公司推荐:知名机构排行榜与口碑评价对比指南