Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用Kafka在Spark Streaming上运行应用程序的功能测试_Apache Spark_Apache Kafka_Spark Streaming_Functional Testing - Fatal编程技术网

Apache spark 使用Kafka在Spark Streaming上运行应用程序的功能测试

Apache spark 使用Kafka在Spark Streaming上运行应用程序的功能测试,apache-spark,apache-kafka,spark-streaming,functional-testing,Apache Spark,Apache Kafka,Spark Streaming,Functional Testing,我正在为运行Spark Streaming和Kafka的应用程序设置功能测试。需要完成的步骤如下: 启动zookeeper服务器 启动卡夫卡服务器 启动消息生成器以向kafka提供必要的数据 启动Spark流媒体应用程序 等5分钟 停止消息生成器 停止火花流应用程序 停止卡夫卡服务器 停止zookeeper服务器 验证输出 除了简单的bash脚本之外,还有什么专业的方法可以做到这一点 我认为这是一个相当普遍的问题,与Spark Streaming和卡夫卡没有严格的关系。可能有一些测试框架支持设置

我正在为运行Spark Streaming和Kafka的应用程序设置功能测试。需要完成的步骤如下:

  • 启动zookeeper服务器
  • 启动卡夫卡服务器
  • 启动消息生成器以向kafka提供必要的数据
  • 启动Spark流媒体应用程序
  • 等5分钟
  • 停止消息生成器
  • 停止火花流应用程序
  • 停止卡夫卡服务器
  • 停止zookeeper服务器
  • 验证输出
  • 除了简单的bash脚本之外,还有什么专业的方法可以做到这一点

    我认为这是一个相当普遍的问题,与Spark Streaming和卡夫卡没有严格的关系。可能有一些测试框架支持设置环境、并行运行多个进程以及数据验证/断言

    可能有一些测试框架支持设置环境、并行运行多个进程以及数据验证/断言

    不幸的是,目前还没有一体化的框架

    一行回答是:使用docker compose和您选择的最简单的单元测试或基于小黄瓜的框架

    将上述步骤视为:

  • 启动env

  • 生成卡夫卡消息/验证

  • 关闭env

  • 将是步骤1和步骤3的最佳选择

    撰写文件的思想是,您可以通过一个命令启动环境:

    docker编写

    而且环境设置在开发人员机器和构建服务器之间的可移植性非常好

    对于步骤2,任何测试框架都可以

    该场景看起来像:

    • 启动环境/确保其已启动
    • 开始生成消息
    • 使断言/睡眠成为我的甜线
    • 关闭env
    谈论框架:

    • 斯卡拉:。在那里,您可以拥有一系列良好的异步断言和并行处理

    • Python:(注意多处理)或单元测试框架,例如

    不要让命名“单元测试框架”迷惑你。 只有测试环境才能定义测试是否成为单元、模块、系统或集成,而不是工具

    如果一个人使用单元测试框架并在那里编写
    MyZookeeperConnect(“192.168.99.100:2181”)
    它不再是一个单元测试,甚至单元测试框架也帮不上忙:)

    要将步骤#1、#2、#3粘合在一起,我可以选择简单的bash

    可能有一些测试框架支持设置环境、并行运行多个进程以及数据验证/断言

    不幸的是,目前还没有一体化的框架

    一行回答是:使用docker compose和您选择的最简单的单元测试或基于小黄瓜的框架

    将上述步骤视为:

  • 启动env

  • 生成卡夫卡消息/验证

  • 关闭env

  • 将是步骤1和步骤3的最佳选择

    撰写文件的思想是,您可以通过一个命令启动环境:

    docker编写

    而且环境设置在开发人员机器和构建服务器之间的可移植性非常好

    对于步骤2,任何测试框架都可以

    该场景看起来像:

    • 启动环境/确保其已启动
    • 开始生成消息
    • 使断言/睡眠成为我的甜线
    • 关闭env
    谈论框架:

    • 斯卡拉:。在那里,您可以拥有一系列良好的异步断言和并行处理

    • Python:(注意多处理)或单元测试框架,例如

    不要让命名“单元测试框架”迷惑你。 只有测试环境才能定义测试是否成为单元、模块、系统或集成,而不是工具

    如果一个人使用单元测试框架并在那里编写
    MyZookeeperConnect(“192.168.99.100:2181”)
    它不再是一个单元测试,甚至单元测试框架也帮不上忙:)

    要将步骤#1、#2和#3粘合在一起,我会选择简单的bash。

    考虑使用柑橘()测试框架,它可能是您的一体式测试框架

    • Zookeeper访问:检查
    • Docker集成:检查
    • 通过ApacheCamel进行Kafka集成:检查
    • 等待x时间段:检查
    • 验证结果:检查

    还考虑使用Cuff8 Doker-Maven插件()来在同一个构建运行中执行柑橘测试之前设置DOCKER测试环境。 下面是两个工具一起工作进行自动化集成测试的示例:

    考虑使用Citrus()测试框架,它可能是您的一体式测试框架

    • Zookeeper访问:检查
    • Docker集成:检查
    • 通过ApacheCamel进行Kafka集成:检查
    • 等待x时间段:检查
    • 验证结果:检查

    还考虑使用Cuff8 Doker-Maven插件()来在同一个构建运行中执行柑橘测试之前设置DOCKER测试环境。 以下是两种工具一起进行自动化集成测试的示例:

    version: '2'
    services:
      kafka:
        # this container already has zookeeper built in
        image: spotify/kafka
        ports:
          - 2181:2181
          - 9092:9092   
      # its just some mock-spark container, you'll have to replace it with 
      # docker container that can host your spark-app
      spark: 
        image: epahomov/docker-spark:lightweighted
        depends_on:
          - kafka