spark批处理正在暂停spark流作业

x9ybnkn6  于 2021-06-09  发布在  Hbase
关注(0)|答案(0)|浏览(225)

我有一个独立的spark在我的计算机上的虚拟机上运行。spark streaming从kafka获取数据,将其保存到hbase表中,然后对其进行处理并将结果保存到另一个表中。
spark batch查询处理结果表中的最新条目,并使用其中的数据确定要从未处理的数据表中查询的数据。批处理作业有一个无限while循环,使批处理在完成后重新启动。它和流作业都将调度程序设置为“公平”。
我有一个客户端应用程序,它以正确的顺序运行所有这些东西,首先将生成的信息流到kafka中,然后为流层启动一个单独的线程,然后在一定的延迟之后为批处理启动一个线程。
我的问题是,流式处理使用提供的3个内核中的2个运行并且没有抱怨,但是当批处理作业启动时,流表示它正在运行,但是hbase表清楚地显示,当批处理作业正在写入表时,流式处理作业不会写入任何内容。此外,当这一切发生时,流日志会暂停。
我设置要运行的线程的方式如下:

Runnable batch = new Runnable() {

        @Override
        public void run() {
            try {
                Lambda.startBatch(lowBoundary, highBoundary);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };

    Thread batchThread = new Thread(batch);
    batchThread.start();

批处理和流式处理的开始是通过processbuilder完成的,如下所示:

public static void startBatch(String low, String high) throws Exception {
    // Specify executable path
    String sparkSubmit = "/home/lambda/Spark/bin/spark-submit";

    // Describe the process to be run
    ProcessBuilder batch = new ProcessBuilder(sparkSubmit,
            "--class", "batch.Batch", "--master",
            "spark://dissertation:7077",
            "/home/lambda/Downloads/Lambda/target/lambda-1.0-jar-with-dependencies.jar",
            low, high);

    // Start the batch layer
    batch.start();

}

有人知道为什么会这样吗?我怀疑只是spark没有像我希望的那样管理任务,但不知道该怎么办。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题