首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
PowerPC
» 基于 Docker 快速部署多需求 Spark 自动化测试环境-1
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于 Docker 快速部署多需求 Spark 自动化测试环境-1
发短消息
加为好友
look_w
当前离线
UID
1066743
帖子
8283
精华
0
积分
4142
阅读权限
90
在线时间
233 小时
注册时间
2017-6-23
最后登录
2019-5-18
论坛元老
UID
1066743
1
#
打印
字体大小:
t
T
look_w
发表于 2017-12-24 17:09
|
只看该作者
基于 Docker 快速部署多需求 Spark 自动化测试环境-1
引言在进行数据分析时,Spark 越来越广泛的被使用。在测试需求越来越多、测试用例数量越来越大的情况下,能够根据需求快速自动化部署 Spark 环境、快速完成所有测试越来越重要。
本文基于 Docker、Jenkins、Apache Ant、Apache Tomcat、Git、Shell 等技术或工具,根据用户对 Spark 版本、Scala 版本、JDK 版本、测试范围、测试版本等需求的不同,快速完成 Spark Cluster 环境以及相应的 Client 端测试环境的部署,进而实现快速自动化测试、结果呈报,从而提高开发测试效率。
Docker 等相关技术和工具介绍Docker 介绍Docker 是世界领先的开源应用容器引擎,提供了一个可供开发者打包其应用的可移植容器。开发者可以使用 Docker 来消除合作编码时所出现的"我的机器"问题,运营商可以使用 Docker 来运行和管理不同容器中的应用,企业可以使用 Docker 更加快速安全的建立敏捷软件交付管道。Docker 主要包括四部分:Docker Client、Docker Image、Docker Daemon、Docker Container。
Dockerfile 是为了快速构建 Docker Image 设计的,是一个包含了可用来创建镜像命令的脚本。当执行 docker build 命令时,Docker 可以通过从 Dockerfile 中自动读取指令来创建镜像。
Docker Compose 是一个用来定义和运行多容器复杂应用的工具。你可以使用一个 YAML 文件来配置你的应用和服务,然后仅使用一条命令就可以启动已配置的所有服务。
本系统中我们使用 Docker 来快速部署不同 Spark 版本、Scala 版本、JDK 版本的 Spark Cluster Server 和 Test 客户端,通过 Docker Compose 启动所需要的服务。
Spark 介绍Spark 是一种与 Hadoop 相似的专门为大数据处理设计的开源集群计算环境,使用 Scala 语言实现,以通用、易用为目标。Spark 的中间输出结果可以保存在内存中,不必重新读写 HDFS,从而使其具有 Hadoop MapReduce 所没有的优点,更适用于数据挖掘与机器学习等算法。
本系统中我们将不同版本的 Spark 部署在 Docker 中,通过 Dockerfile 控制 Spark 的版本选择,从而快速部署不同版本 Spark Cluster Server。
Jenkins 介绍Jenkins 是一种开源的持续集成工具,提供一个开放易用的平台用于监控持续重复工作,使得我们可以进行持续的软件版本发布和测试。
本系统中我们使用 Jenkins 创建 job 来控制测试的启动与停止,也可以进行周期性任务。
Git 介绍Git 是一个免费开源的分布式版本控制系统,可以高效地处理各种大小项目。Git 易于学习,性能高效,在廉价本地分支、方便的中转区、多工作流等方面都超越了传统的 SCM 工具,如 Subversion,Perforce,CVS,ClearCase 等。
本系统中使用 Git 进行代码的维护及实时更新。
Apache Ant 介绍Apache Ant 是一种用于在 Java 环境下进行软件开发的自动化工具,可以进行编译、测试、部署等步骤,其构建文件默认名为 build.xml,Ant 具有很好的跨平台性且操作简单。
本系统中我们使用 Ant 进行代码的编译、测试以及测试报告的生成。
Apache Tomcat 介绍Apache Tomcat 是一个开源的轻量级 Web 应用软件容器,可以用来响应 HTML 页面的访问请求,在中小型系统和并发用户访问场景中被广泛使用。
本系统中我们使用 Tomcat 来展现测试报告(即测试结果),使得多用户可以并发访问测试报告。
Shell 介绍Shell 脚本是在 Linux/Unix 系统中使用的一种类似于 Windows/Dos 批处理的脚本,功能与.bat 类似。Shell 是一种命令语言,可以互动式的执行用户命令,将各类命令依据逻辑关系放入文件中可以一次性执行,是 Linux 系统下广泛使用的一种脚本。
本文中我们使用的系统是支持 Docker 的 Linux Ubuntu 14.04,依靠 Shell 脚本将各个步骤联系起来组成一个完整的流程。
本文主要从自动化的系统整体构架以及环境部署流程方面进行介绍,扼其重点,以求给读者提供一个部署此类环境或系统的操作思路和流程,对于特别细节、特殊或者过于通用的部分不做详解,如一些软件的安装教程在网络上随处可见,本文不再赘述。下面章节首先介绍整个系统构架,然后对系统构架中各个部分进行具体介绍,最后进行总结。
环境部署测试整体架构本章主要介绍自动化测试系统的整体框架和流程,如图 1 所示。我们通过在 Jenkins Server 上创建 Job 作为整个系统的测试入口,Jenkins 发起测试请求之后,接下来会进行环境部署(即图中 Deploy 阶段)和测试(即图中 Test 阶段)。环境部署包括通过 Docker 部署 Spark Cluster 和 Test Client,即测试所需要的服务器端和客户端。环境部署完毕后便可进行测试,从指定地方获取测试所需要的 Build 和 Code,Code 可以通过 Git 在本机上维护更新,通过对代码进行测试所必须的一些配置,然后便可进行编译、测试,测试执行完毕后对所生成的 xml 文件进行生成报告(HTML 文件生成),此处编译、测试、report 生成均由 Ant 实现,所生成的 report 展示由 Tomcat 实现,最后通过 Linux 系统的邮件功能给指定邮箱发送邮件完成整个测试流程。
图 1. 自动化测试系统整体架构
基于 Docker 的 Spark 环境部署测试本章将根据上一章节中的自动化系统整体架构对流程中所涉及的各部分进行具体介绍,重点介绍自动化系统中基于 Docker 所部署的 Spark Cluster Server 端和 Client 端。
Jenkins 任务测试请求由 Jenkins 发起,安装 Jenkins 并新建 Remote SSH 任务后,在 Script 执行窗口指定配置信息,如图 2 所示,包括 build_num、scope、sparkVersion、javaVersion、model,分别表示要进行测试的 build 版本(以 jar 包的形式存在),测试的范围(Regression、Smoke、MiniSmoke 所定义 case 的范围依次减小),Spark 版本(如 1.6.0、1.6.2、2.0.1、2.1.1 等,scala 版本由 spark 决定),Java 版本(如 openjdk8、ibmjdk8 等),模块(代码中所包含的要测试的模块)。这些配置信息通过位于远程机器上的 Shell 脚本 getPropsFromJenkins.sh 下发到机器上的配置文件中以便进行后续部署和测试流程。机器上的 buildScope.props 和 model.props 文件用于存储从 Jenkins 上获取的信息,后续所有需要这些信息的操作均从这两个文件中读取。需要特别说明的是 model 的各模块间逗号表示串行执行,分号表示并行执行,串行只需要启动一个 Client 端即可,并行需要启动多个 Client 端并发执行,这部分将在后续章节具体介绍。
图 2. Jenkins 任务配置
Spark ClusterDeploy 阶段将根据 Jenkins 下发的配置信息进行 Docker Spark Cluster 和 Client 的部署。
用于创建 Docker Spark Cluster 镜像及启动 Container 的脚本很多,代码内容也过于复杂,本节难以一一完全介绍,依旧依据之前约定对重点部分进行介绍,以为读者提供思路,具体细节可通过网络或者参考资料进一步深入研究。
每个版本的 Spark Docker 脚本我们都放在一个独立文件夹中,按照"spark-$spark_version-$java_version"的方式命名。以 spark-2.1.1-openjdk-8 为例,该文件夹结构如图 3 所示,文件夹中所含 xml 格式文件与实际安装的 Spark 环境对应文件类似,只是在 Docker 中我们使用 namenode 作为 container 的名字,core-site.xml 中要使用"hdfs://namenode:9000"替代实际环境中的"fs.default.name"。yarn-site.xml 中可以使用"yarn.nodemanager.resource.memory-mb"对 YARN 可使用的物理内存总量进行控制,默认 8192M,本系统我们为了并行两个 Client 端同时测试设置为 65536M。
图 3. spark-2.1.1-openjdk-8 文件夹结构
yarn-cluster 文件夹下的 Dockerfile 文件是整个 cluster 的核心,用于创建 Spark Cluster 镜像,内容主要包括配置 SSH 无密码访问、安装 Java 并配置环境变量、下载安装 Hadoop、加载 xml 文件(core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml)、下载安装 Spark、开放 Spark 运行所需端口等。如图 4 所示为 Dockerfile 部分内容。
图 4. Dockerfile 片段
bootstrap.sh 文件主要用于在启动 container 时自动启动对应的 Spark 进程,如 start-dfs.sh、start-yarn.sh。其主要内容如图 5 所示。
图 5. bootstrap.sh 片段
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议