【问题标题】:Must the Scala-Spark developer install Spark and Hadoop on his computer?Scala-Spark 开发人员是否必须在他的计算机上安装 Spark 和 Hadoop?
【发布时间】:2021-02-10 18:11:55
【问题描述】:

我已经在服务器上安装了 Hadoop + Spark 集群。 在主服务器上的 spark-shell 中编写 scala 代码可以正常工作。

我将 Spark 库(jar 文件)放入我的项目中,我正在通过 Intellij 在我的计算机上编写我的第一个 Scala 代码。

当我运行一个简单的代码来创建一个 SparkContext 对象以通过 hdfs 协议从 HDFS 读取文件时,它会输出错误消息。

测试功能:

import org.apache.spark.SparkContext

class SpcDemoProgram {

  def demoPrint(): Unit ={
    println("class spe demoPrint")
    test()
  }

  def test(){

    var spark = new SparkContext();
  }
}

消息是:

20/11/02 12:36:26 信息 SparkContext:运行 Spark 版本 3.0.0 20/11/02 12:36:26 WARN Shell:未找到 winutils.exe:{} java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME 和 hadoop.home.dir 未设置。 -看 https://wiki.apache.org/hadoop/WindowsProblems 在 org.apache.hadoop.util.Shell.fileNotFoundException(Shell.java:548) 在 org.apache.hadoop.util.Shell.getHadoopHomeDir(Shell.java:569) 在 org.apache.hadoop.util.Shell.getQualifiedBin(Shell.java:592) 在 org.apache.hadoop.util.Shell.(Shell.java:689) 在 org.apache.hadoop.util.StringUtils.(StringUtils.java:78) 在 org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1664) 在 org.apache.hadoop.security.SecurityUtil.setConfigurationInternal(SecurityUtil.java:104) 在 org.apache.hadoop.security.SecurityUtil.(SecurityUtil.java:88) 在 org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:316) 在 org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:304) 在 org.apache.hadoop.security.UserGroupInformation.doSubjectLogin(UserGroupInformation.java:1828) 在 org.apache.hadoop.security.UserGroupInformation.createLoginUser(UserGroupInformation.java:710) 在 org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:660) 在 org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:571) 在 org.apache.spark.util.Utils$.$anonfun$getCurrentUserName$1(Utils.scala:2412) 在 scala.Option.getOrElse(Option.scala:189) 在 org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2412) 在 org.apache.spark.SparkContext.(SparkContext.scala:303) 在 org.apache.spark.SparkContext.(SparkContext.scala:120) 在 scala.spc.demo.SpcDemoProgram.test(SpcDemoProgram.scala:14) 在 scala.spc.demo.SpcDemoProgram.demoPrint(SpcDemoProgram.scala:9) 在 scala.spc.demo.SpcDemoProgram$.main(SpcDemoProgram.scala:50) 在 scala.spc.demo.SpcDemoProgram.main(SpcDemoProgram.scala) 原因: java.io.FileNotFoundException: HADOOP_HOME 和 hadoop.home.dir 是 未设置。在 org.apache.hadoop.util.Shell.checkHadoopHomeInner(Shell.java:468) 在 org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:439) 在 org.apache.hadoop.util.Shell.(Shell.java:516) ... 19 更多 20/11/02 12:36:26 WARN NativeCodeLoader: 无法加载 native-hadoop 适合您平台的库...使用内置 java 类,其中 适用 20/11/02 12:36:27 错误 SparkContext:初始化错误 火花上下文。 org.apache.spark.SparkException:主 URL 必须是 在您的配置中设置 org.apache.spark.SparkContext.(SparkContext.scala:380) 在 org.apache.spark.SparkContext.(SparkContext.scala:120) 在 scala.spc.demo.SpcDemoProgram.test(SpcDemoProgram.scala:14) 在 scala.spc.demo.SpcDemoProgram.demoPrint(SpcDemoProgram.scala:9) 在 scala.spc.demo.SpcDemoProgram$.main(SpcDemoProgram.scala:50) 在 scala.spc.demo.SpcDemoProgram.main(SpcDemoProgram.scala) 20/11/02 12:36:27 INFO SparkContext:成功停止 SparkContext 线程“主”org.apache.spark.SparkException 中的异常:主 URL 必须在您的配置中设置为 org.apache.spark.SparkContext.(SparkContext.scala:380) 在 org.apache.spark.SparkContext.(SparkContext.scala:120) 在 scala.spc.demo.SpcDemoProgram.test(SpcDemoProgram.scala:14) 在 scala.spc.demo.SpcDemoProgram.demoPrint(SpcDemoProgram.scala:9) 在 scala.spc.demo.SpcDemoProgram$.main(SpcDemoProgram.scala:50) 在 scala.spc.demo.SpcDemoProgram.main(SpcDemoProgram.scala)

该错误消息是否暗示必须在我的计算机上安装 Hadoop 和 Spark?

我需要做什么配置?

【问题讨论】:

  • 您好!为了帮助您,您能否提供显示给您的所有错误消息?还是您提到您使用的 Scala 编写的程序?还是您正在运行的系统上的环境变量?
  • 你好@Coursal 谢谢你的回复。我已经编辑了帖子以显示代码和错误消息。我没有在我的电脑上安装 Hadoop,所以我没有在我的电脑上放置任何关于 Hadoop 的环境变量或配置文件。
  • 如果您需要将此程序运行到现有的一组服务器上,您需要从 那里 访问并运行它(可能使用ssh 或任何您的工具首选)已经安装了 Spark 和 Hadoop/HDFS 的位置。

标签: scala apache-spark hadoop


【解决方案1】:

我假设,您正在尝试读取路径为hdfs://<FILE_PATH> 的文件,那么是的,如果它只是一个本地目录,则您需要安装 Hadoop,您可以尝试在文件路径中不使用“hdfs://”。

【讨论】:

  • 感谢@Hasif Subair!是的。我想从我的笔记本电脑访问远程 Hadoop HDFS 文件。根据您的回答,我需要在我的笔记本电脑上安装 Hadoop,我的笔记本电脑上的 Hadoop 是否需要加入远程服务器中的 Hadoop 集群?配置文件是否与远程服务器上Hadoop集群的NameNode相同?
  • 嗨@Ryan Chen 你在Windows 上运行吗?如果是这样,您将需要 winutils.exe。您可以按照此处的说明进行操作phoenixnap.com/kb/install-spark-on-windows-10
猜你喜欢
  • 2021-10-11
  • 2020-04-03
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 2018-04-19
  • 2011-06-11
  • 1970-01-01
相关资源
最近更新 更多