为什么我们选择Docker来构建Crayon的数据处理平台

简介: 本文讲的是为什么我们选择Docker来构建Crayon的数据处理平台,【编者的话】随着Hadoop成为大数据的事实标准,Hadoop的生态也在不断完善,环境搭建的复杂性,给开发和测试带来了不便。如何用Docker来降低Hadoop开发中的复杂性,本文中Crayon带来了他们的方案。
本文讲的是为什么我们选择Docker来构建Crayon的数据处理平台 【编者的话】随着Hadoop成为大数据的事实标准,Hadoop的生态也在不断完善,环境搭建的复杂性,给开发和测试带来了不便。如何用Docker来降低Hadoop开发中的复杂性,本文中Crayon带来了他们的方案。

之前,企业软件厂商都会尽可能多的控制客户的基础安装环境,因为如果安装环境出错,就可能引起很多不必要的麻烦,甚至大灾难。

最初,公司提供一个包含定制的 操作系统镜像 的应用,操作系统镜像作为软件安装的其中一份子,它给予了厂商从硬件到操作系统的对环境的完全的控制力。但即便是这样也很难解决问题。企业软件供应商不得不与其它公司形成合作关系,并且依赖这些公司,来为他们分发硬件平台。他们必须寻找多个合作伙伴关系,以避免被锁定在一个合作伙伴。

服务器虚拟化

服务器虚拟化用来解决多供应商的硬件平台和环境问题。它帮助企业软件供应商有效的发布他们的软件,通过在部分 虚拟机管理程序 之上进行测试和认证。它提供了一个良好的顶层抽象,企业软件应用能够在其中部署和测试。在我早先工作的组织中,我们使用生成的 ova 镜像,用来在虚拟机管理程序上创建 虚拟机 实例,对于一个完全封闭的应用,这有助于创建相同结果,更便于管理。
image1.png

这个模式有几个问题无法解决。首先,构建ova镜像,你需要有大量的系统级的技能。其次是管理分布式环境。当一个软件要求分布式的安装在多节点上,仍然有大量的手工操作包括启动这些虚拟机。随着企业开始使用云作为他们的基础设施,不考虑应用的种类(即使当应用运行在一个节点中),管理一个分布式环境变得更重要。

Docker

Docker  的问世正好解决了这两个问题。Docker允许任何人很简单的快速创建、执行和测试Docker容器。有大量的框架,用于分布式Docker的管理,比如Google 的 Kubernetes CoreOS Docker编排三剑客 等等,这些都很容易和Docker结合。

除了这些,相比于虚拟机,Docker是非常轻量级的。如下图所示,它避免了虚拟机管理程序的附加层,运行一个轻量级的 Docker引擎 。它支持Windows 和 Boot2Docker

虚拟机和Docker的区别

image2.png

我们如何选择我们的数据处理堆栈

虽然Docker试图解决很多问题,但是我们选择了“构建一致的环境便于去复制”这一方面。

最初在Crayon,在我们的开发周期中,为了测试很少的代码,我们不得不改变我们的 MapReduce 程序。我们需要将我们的程序放到 AWS  环境中的生产集群中,这主要是为了解决配置本地用于测试的 Hadoop  环境的时间和精力。当一个 POC  仅需要Hadoop生态系统中的一些组件来完成工作时,反复的配置系统是没有效率的,尤其当 Hadoop生态系统 的组件一直在增加时。

我们使用 SequenceIQ 提供的工具来开始我们的自动化Hadoop集群之旅,几分钟之内我们就能够启动一个多节点的Hadoop集群。有趣的是,他们采用blueprints 的格式来抽象化集群的配置,通过Docker的帮助来自动化集群的配置和启动。 Hortonworks收购SequenceIQ  表明了SequenceIQ所做的自动化Hadoop集群开发这类工作的重要性。

SequenceIQ启发了我们采用Docker。我们通过定制和调整SequenceIQ的Docker镜像取得了一些进展。我们为数据处理构建了一个完全的Docker化平台。

对于我们所有使用Hadoop组件的poc,我们创建了一致的,易于复制的Docker实例,取代了之前人们试着去在本地安装Hadoop生态系统的每个组件,对于开发和测试环境的需要,我们只需要创建一次,便能在任何时间和地点使用它。

这就是我们达到一致的开发,测试,集成和部署的方式之旅,是无缝的。 我们期待让Docker成为我们默认的神器,直到部署阶段。 虽然在企业环境中可能存在一些挑战,我们希望会有一个行业广泛采用Docker。 请继续翻看我们关于我们目前所作的尝试和成就的详细内容。

原文链接:Why we chose Docker to build Crayon’s data processing platform(翻译:覃璐)

原文发布时间为: 2016-01-31
本文作者:qinlu1988
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:为什么我们选择Docker来构建Crayon的数据处理平台
目录
相关文章
|
2月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
282 1
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
2月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
290 100
|
2月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
252 99
|
2月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
2月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
7月前
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
1418 32
|
2月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
135 8
|
7月前
|
监控 Java Go
无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测
本文将介绍一种基于 Docker 多阶段构建的无侵入 Golang 应用观测方法,通过此方法用户无需对 Golang 应用源代码或者编译指令做任何改造,即可零成本为 Golang 应用注入可观测能力。
370 85
|
7月前
|
NoSQL Redis 数据库
Docker平台上的Redis镜像运行
这就是如何在Docker平台上运行Redis镜像的全部过程。走进Docker和Redis的世界,探索更多可能!
419 10

热门文章

最新文章