【问题标题】:Apache Spark: Streaming without HDFS checkpointApache Spark:没有 HDFS 检查点的流式传输
【发布时间】:2015-06-16 01:34:25
【问题描述】:

我正在实现一个使用 reduceByKeyAndWindow 的 Spark 作业,因此我需要添加检查点。

从 Spark 的网站我看到:

可以通过在容错、可靠的文件系统(例如 HDFS、S3 等)中设置目录来启用检查点信息,以保存检查点信息。

我的应用程序仅用于学术目的,因此我不想为检查点设置 HDFS,而只想设置一个本地文件。在 MacOS 中这样做可以正常工作(将临时目录设置为检查点目录),在 Windows 中这样做时会出现问题,这会引发权限异常。

我已经尝试以管理员身份启动 eclipse 并手动创建目录,将 setWritablesetReadablesetExecutable 设置为 true。有关如何克服 Windows 中的问题的任何提示?

谢谢!

更新这是我的代码和异常。再次澄清一下,它在 Mac 中可以正常工作,但在 Windows 中却不行。

SparkConf conf = new SparkConf().setAppName("testApp").setMaster("local[2]");
JavaSparkContext ctx = new JavaSparkContext(conf);
JavaStreamingContext jsc = new JavaStreamingContext(ctx, new Duration(1000));
jsc.checkpoint(Files.createTempDir().getAbsolutePath());

例外:

Exception in thread "pool-7-thread-3" java.lang.NullPointerException
at java.lang.ProcessBuilder.start(Unknown Source)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:404)
at org.apache.hadoop.util.Shell.run(Shell.java:379)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:589)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:678)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:661)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:639)
at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:468)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:456)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:424)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:905)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:886)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:783)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:772)
at org.apache.spark.streaming.CheckpointWriter$CheckpointWriteHandler.run(Checkpoint.scala:135)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

【问题讨论】:

  • 你到底得到了什么异常?你能告诉我们你的代码吗?
  • 更新了代码+异常堆栈跟踪
  • 为什么要启用检查点?
  • reduceByKeyAndWindow等有状态操作需要它
  • 嗨@sergi123,我目前遇到了同样的错误。我正在使用 Mac 和独立版本的 spark。如果您能帮助我解决此错误或指出我可以使用的一些资源,我会很高兴。谢谢!

标签: apache-spark hdfs spark-streaming


【解决方案1】:

通过将最新的 Hadoop 库添加到我的项目来解决。

如果使用 Maven,以下一组依赖项可以解决问题。

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.3.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming_2.10</artifactId>
        <version>1.2.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming-twitter_2.11</artifactId>
        <version>1.3.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>1.2.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs</artifactId>
        <version>2.6.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>2.6.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.6.0</version>
    </dependency>

【讨论】:

    【解决方案2】:

    在 Windows 上,您可以通过以下方式解决此问题

    • 下载winutils.exe 到一个文件夹,比如MY_UTILS/bin
    • 创建环境变量 HADOOP_HOME 并将其指向 MY_UTILS

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 2019-01-20
      • 2015-12-12
      • 2023-02-09
      • 2020-10-09
      • 2023-04-09
      • 2018-05-27
      • 2017-06-19
      • 2016-04-05
      相关资源
      最近更新 更多