就像在火星上种土豆?看看人家怎么在大数据分析中使用Docker

三十年后,当马特·达蒙回忆起自己波澜壮阔的一生,最令他回味的,也许不是参加了诺曼底滩头的迷茫战斗《拯救大兵瑞恩》,不是在失忆的惊惶中流亡天涯《谍影重重》,也不是冰天雪地里30多年的春秋大梦《星际穿越》,而是红色星球上种土豆的日子《火星救援》。

据说,空间站宇航员已经食用过了太空生长的莴苣。NASA一位植物学家也称,人类可以在火星上栽种土豆,而且可种植的不止土豆一种。2014年,荷兰就有一群好奇的科学家,已经在模拟月球土和模拟火星土上,种植了西红柿、胡萝卜、小麦等14种农作物。

所以,那个15岁起就被美国国家实验室聘为软件工程师的『太空宅男』安迪·威尔,即使写小说,也是很靠谱的!

看完『火星救援』,今年值得期待的科幻大片就剩『星战7』了。

据说『星战7』在北美的预售票房就超过了5000万美元,70%都是18-49岁的男粉丝,平均年龄在34岁,67%的人都会在上映一周之内就去一睹为快……

以上这些数据都是由一家叫Movio的公司发布的,Movio是干嘛的呢?

Movio主要有两个产品,Movio Cinema和Movio Media,Movio Cinema主要和各大影院合作(已经覆盖了北美52%的荧幕,全球24.5%),通过大数据分析为影院的顾客提供个性化的服务;Movio Media则主要服务于电影的制造商和发行商,利用Movio Cinema上收集到的数据,为制片商和发行商提供有效建议。总之就是一家立志用大数据分析和互联网改变电影产业的公司。

而Movio正是Docker的重度用户。Movio为了使其代码能在日益复杂的同时,保持弹性扩展,开始采用微服务架构和Docker。以下内容来自Movio的技术博客,主要讲述了其如何在开发环境中使用Docker。

Docker将应用封装在一个『完全的』OS环境中,并运行在一个容器里。容器和虚拟机很类似,但是更像物理机:比如,内存并不是提前分配给容器的,需要容器向主机动态申请。


使用容器意味着库依赖(Library dependencies)可以独立于主机系统,被提前安装好。其它的依赖,比如配置文件也可以被提前配置好默认值,并放在合适的位置。有了Docker就相当于每个应用,不管在任何操作系统中,都能有一套标准的环境以相同的方式运行起来。主机操作系统中安装的库(Library)和软件包(package)不会影响到应用,因为这些应用是相互独立的。

Docker在Movio的开发过程中主要是这么用的:

Run anywhere

程序猿们对OS X和Linux多个发行版可谓各有所爱,由此造成的开发环境不统一问题,是非常痛苦的。而应用运行在容器中,意味着每个人都能依赖于相同的配置。而当你需要一些个性化配置时,也可以在启动容器时设置参数。

比如,你可以在容器外挂载一个volume,存储容器过程中产生的数据。比如,你有一个数据库容器,你希望这个容器停止或被删除后,其中的数据能够保存下来。

为方便进行相关实践,可在一些容器平台上进行测试。比如灵雀云(www.alauda.cn)也提供了持久化存储服务,将云存储抽象成最直观的存储卷,可以直接挂在容器上,就像本地操作Docker的存储卷一样方便。在存储卷基础上,为了进一步提升数据的持久性,灵雀云还提供“存储卷备份”,可用于抓取存储卷闪照并进行保存。

方便各个组件间的集成

如果你有一个微服务,需要和另外一个小组维护的微服务做集成,运行docker pull就可以将那个微服务下载到在你的环境上,都不用担心环境依赖的问题。

这个过程完全复制了各个服务在生产环境中的交互,这也使得我们相信在测试环境中看到的结果,会被完全地反映到生产环境中。

灵雀云支持多容器发布管理,与docker-compose兼容,可通过YAML文件描述应用的容器组件,以及容器间的依赖,并一键部署完整的多容器应用。

可组合的Docker镜像

基于此,可以简单地复用之前做过的工作,我们有一系列的核心的基础镜像,同时也意味着我们的镜像都基于相同的基础。同时,各个组之间也可以复用镜像。

Docker镜像是分层管理的,每个部分都被实现为其中一层,并且可以共享base层,带来的好处有2个:减小了Docker库的,缩短了下载新镜像所用的时间。

灵雀云提供高性能本地Registry服务用于创建私有、公有镜像仓库,并提供上传、下载、构建及托管的全方位镜像服务

加强开发、测试和运维的协作

用了Docker后,开发人员会更具有全局思维,他们会有意识地去思考在开发环境之外,运行这个应用还有哪些需要。

而测试环境将是生产环境的复制,并且是标准化的,因为Docker镜像都是标准化的,pull下来就能马上运行起来,不需要再根据文档一步步地配置。

Docker带来的挑战

Docker的实现机制也意味着会有很多的基础镜像依赖。例如,我们有一个Clojure写的微服务,它是基于Clojure镜像构建的,但Clojure镜像又是基于Java镜像构建的,Java镜像又要基于一个通用的基础镜像。一旦这个基础镜像发生了改变,所有的中间镜像都要重新build,这无疑增加了额外的开销。

由于Docker是基于Linux内核的,在OS X系统上就需要在虚拟机中运行一个Linux的操作系统。官方的工具是基于VisualBox的,文件和文件夹要先mount到VM上,再mount到Docker容器,尽管这个工具可以自动做到这些,但是chown和chmod的操作无法工作。

OS X中文件名是不区分大小写的,但是大部分Linux系统都是区分的。如果不正确的命名恰好在挂载路径中出现,就会找不到这个路径。

以上这些挑战是在本地主机环境中使用Docker会遇到的问题,如果使用CaaS服务,比如灵雀云都可以避免以上的问题,将您的精力放到核心业务上,同时享受Docker带来的诸多好处!

总结

在使用Docker的初期,肯定会有一个学习曲线,但是总体来说,Docker确实提高了我们的生产效率。在以往,新员工入职需要数天才能配置好本地环境,并且一直会被环境问题所困扰。有了Docker,生产环境对本地环境的依赖变得很小。随着我们的发展,这种效率的提升变得越来越明显。

时间: 2024-11-03 22:38:55

就像在火星上种土豆?看看人家怎么在大数据分析中使用Docker的相关文章

火星上发生了什么

火星上发生了什么2004-02-21 16:29     在勇气号和机遇号登陆火星并重新卷起一股火星热的时候,我找到这篇去年自己翻译的文章,看看当年的小插曲. From: Mike Jones [email protected]Sunday, December 07, 1997 6:47 PM 翻译:zhou, 2002 自从1997年7月4日抵达火星表面后,火星探路者(The Mars Pathfinder)一直被大肆宣称为“完美的”.它确实包含了很多成功之处,从它那非传统的着陆方式――被巨大

火星上有中国的地盘吗?

前段时间,在一场盛大隆重的讨论会议上,某卫星专家透露,中国准备在2020年发射火星探测器.次年登陆火星,随后新加坡<联合早报>披露了更多的相关细节:中国将在第一次火星任务中就实现进入火星大气.释放探测器以及巡视火星,"绕.落.巡"三大组合任务同时执行,显然有些难度,连美国.苏联.欧洲都没有这么干过  . 中国的计划总是非常宏大,常常超越了正常的科学逻辑,正如大跃进的时候,亩产万斤大炼钢的愚蠢行为,不仅沦为全世界的笑柄,而且严重影响了一代人的发展.现在,中国又提出一个登陆火星

洛谷 P1952 火星上的加法运算_NOI导刊2009提高(3)

P1952 火星上的加法运算_NOI导刊2009提高(3) 题目描述 最近欢欢看到一本有关火星的书籍,其中她被一个加法运算所困惑,由于她的运算水平有限.她想向你求助,作为一位优秀的程序员,你当然不会拒绝. 输入输出格式 输入格式: 第一行先愉入一个运算的进制N(2<=N<=36),接下来两行为需要进行运算的字符,其中每个字符串的长度不超过200位,其为N进制的数.其中包括0-9及a-z(代表10-35). 输出格式: 在N进制下它们的和 输入输出样例 输入样例#1: 复制 20 1234567

惊人发现:火星上有水!会有生命吗? 未完

今日导读 从1969年人类首次登月成功到现在,已经过去了半个世纪,在浩渺宇宙中,从月球到火星,人类一步步地进行太空探索,近日一个里程碑式的发现表明,火星地下埋藏着一个液态咸水湖.这意味着什么?这个红色星球上会有生命迹象么? 带着问题听讲解 Q1: 什么是"火星快车"? Q2: "slam dunk" 的本意是什么? Q3: 如果火星掩埋湖真实存在,科研人员可能会干什么? 新闻正文 There's water on Mars! Signs of buried lake

谈谈23种设计模式在Android源码及项目中的应用

本文首发于个人博客:Lam's Blog - 谈谈23种设计模式在Android源码及项目中的应用,文章由MarkDown语法编写,可能不同平台渲染效果不一,如果有存在排版错误图片无法显示等问题,烦请移至个人博客,如果个人博客无法访问可以留言告诉我,转载请声明个人博客出处,谢谢. 前言 本文将结合实际谈谈23种设计模式,每种设计模式涉及 * 定义:抽象化的定义与通俗的描述,尽量说明清楚其含义与应用场景 * 示例:如果项目中有使用过该模式,则会给出项目中的代码,否则会给出尽可能简单好理解的java

两种改进的模拟退火算法求解大值域约束满足问题2.0

2    两种改进的模拟退火算法 模拟退火算法(Simulatedannealing algorithm)是一种通用的概率算法,其思想源于固体退火过程:当固体物质温度很高时,固体内部粒子运动杂乱无序:而当温度逐渐降低时粒子又渐渐趋于有序运动.模拟退火算法往往用来求解优化问题的最小值问题,算法过程中会不断地对变量的当前赋值进行扰动,以产生新的赋值.如果新的赋值使得目标函数值变小,则接受新的赋值为当前赋值.反之,则以概率接受新的赋值,其中T是当前温度,为新赋值目标函数值,为当前赋值目标函数值,重复上

使用概要管理工具创建定制概要文件,并在此节点上 创建集群以及在集群服务器中部署应用

使用概要管理工具创建定制概要文件,并在此节点上 创建集群以及在集群服务器中部署应用 上篇介绍了在Lnux上安装WebsphereV8.5,以及使用概要管理工具创建了Dmgr管理概要文件. Dmgr服务器不能运行应用程序,应用程序需要运行在特定的JavaEE服务器上,Dmgr管理服务器只负责管 理与它联合的节点.可以在新建的profile对应的节点上创建Websphere实例或者集群实例.并把此节点与 Dmgr服务器联合,交由Dmgr管理.此篇介绍使用概要管理工具创建定制概要文件,并在此节点上创建

pdf如何压缩?俩种操作让你菜鸟变大神

pdf如何压缩?俩种操作让你菜鸟变大神日常办公,PDF文件是我们经常使用的一种电子文档,那么主要是因为这种文件较为方便,可以方便阅读不限操作系统.通常这类文件的内存都会比较大,包含文字与图片信息,往往在传输给客户的时候会很慢或者是传输失败导致工作失误的问题,那么最简单的操作就是将PDF进行压缩,那么PDF如何压缩呢?下面的俩种在线操作方法希望对你有用.在线操作1:首先需要进入到在线操作工具中,如下图,我们先选择功能区中的[在线PDF压缩]功能,然后点击下方的[立即使用]进入待压缩操作页面:其次就

内容和图片在从网络上获取到之后都会存入到本地缓存中

内容和图片在从网络上获取到之后都会存入到本地缓存中,因此即使手机在没有网络的情况下依然能够加载出以前浏览过的新闻.而使用的缓存技术不用多说,自然是DiskLruCache了,那么首先第一个问题,这些数据都被缓存在了手机的什么位置呢? 其实DiskLruCache并没有限制数据的缓存位置,可以自由地进行设定,但是通常情况下多数应用程序都会将缓存的位置选择为 /sdcard/Android/data/<application package>/cache 这个路径.选择在这个位置有两点好处:第一,