【问题标题】:Automated Spark testing environment自动化 Spark 测试环境
【发布时间】:2018-02-21 10:38:29
【问题描述】:

我的问题:我正在开发一个 Spark 扩展,我想在公开更改之前大规模执行测试和性能。目前这样的测试有点过于手动:我编译和打包我的库,将 jar 文件复制到我有私有 Spark 部署的集群,重新启动 Spark,然后手动启动测试和基准测试。每次测试后,我都会手动检查日志和控制台输出。

有更多经验的人能否提供有关如何使其更加自动化的提示?我特别感兴趣:

  • 能够与 Github 和 Jenkins 集成。理想情况下,我只需要将提交推送到 GitHub 存储库,然后 Jenkins 会自动拉取和构建,将新库添加到 Spark 环境,启动 Spark 并触发测试和基准测试,最后收集并提供输出文件。

  • 如何运行和管理 Spark 集群。我看到了许多选项:

    a) 继续安装单个 Spark:测试框架将更新我的 jar 文件,重新启动 Spark,以便拾取新库,然后运行测试/基准测试。这样做的好处是我只需要设置一次 Spark(也许还有用于共享数据和应用程序二进制文件的 HDFS,作为资源管理器的 YARN 等)。

    b) 在容器中运行 Spark:我的集群将运行容器管理系统(如 Kubernetes)。测试框架将创建/更新 Spark 容器映像,启动并配置多个容器以启动 Spark,提交测试/基准并收集结果。这样做的最大优势是多个开发人员可以并行运行测试,并且我可以测试各种版本的 Spark 和 Hadoop。

【问题讨论】:

    标签: apache-spark docker jenkins automated-tests automated-deploy


    【解决方案1】:

    创建一个 Docker 容器,其中包含您的整个解决方案(包括测试),将其推送到 GitHub 并让 DroneCi 或 Travis CI 构建它并监听更新。这对我很有效。 ?

    GitHub 或 Docker hub 上有很多 Spark docker 镜像,我用这个:

    https://github.com/jupyter/docker-stacks/tree/master/all-spark-notebook

    【讨论】:

    • 这是一个很好的答案。你介意分享你的 Dockerfile 和 travis.yml 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2020-05-29
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多