原数据科学的容器革命

概述

随着容器化技术的兴起,数据科学现在最大的一场运动已经不是由一个新的算法或者统计方法发起的了,而是来自Dockr的容器化技术。通常,数据科学被认为研究成果立即应用到生产环境都是比较缓慢的一个过程。本文将介绍利用容器技术如何加速数据科学在生产环境中的实际应用。

瓶颈1.环境部署一致性

保持数据科学环境一致性通常都是一件异常痛苦的事情,在不同的机器之间同时部署即使是用Python的Conda和Virtualnv或者R的CRAN和packrat的包依赖虚拟化技术,也会遇到不同操作系统(比如CntOS、Ubuntu、MacOS、Windows)的底层c库缺失等问题。(国内的现状是很多公司逼迫DataScintist变成DvOps,美其名曰:全栈。。)

2.服务弹性与性能

由于数据科学套件一般比较复杂,从底层的Hadoop分布式架构、到顶层的ShinySrvr,这一系列服务的智能运维部署都是一个问题。尤其是ShinySrvr的开源版本现在默认是只支持单机单线程的处理(其实就是nodjs内核),通常每次请求处理只是在几毫秒之间。这对于一个小应用一般并不会出现太问题,不过更常见的场景是我们需要在生产环境上部署高性能的shinysrvr,此时shinysrvr的单机性能就成了一个问题。

解决方案

事实上,容器同时为加速数据科学的应用提供了一揽子解决方案:

将复杂的环境依赖化繁为简简化集群配置与管理的复杂度标准交付、研究结果可重复、便于成果分享快速部署、快速扩展明确运维、开发职责为什么使用容器可重复研究

一方面,容器就像一个轻量级的虚拟机,当我们启动虚拟机的时候通常都要花几分钟,但是Dockr容器通常只要几毫秒就启动了。因此,你跑容器和跑本地应用从速度上来讲基本没什么差。每次我们跑容器,容器的环境都是标准化的,这也意味着它为我们带来了可重复性研究的机会。这些容器可以一致部署在Mac、Windows、Linux上,因此协同共享变得非常得简单。

无状态研究

对于个人而言,好处之一就是减少了R、Python生态组件安装时带来的痛苦。如果你在容器中使用Python或R,之前所有的环境一致性问题就都灰飞烟灭了。如果我们使用容器技术,就可以在容器中肆无忌惮地使用新包,因为即使出现意外导致容器不可用了,我们只需要重跑一个容器就可以了。

弹性高可用

另一方面,对于整个数据科学套件而言,在架构上越来越流行微服务对原来SOA的架构进行进一步解耦,以便于每一个模块可以独立迭代,小步快跑。而容器技术基于轻量级的进程,使得我们可以快速扩展计算资源实现分布式计算并且轻松管理。

以Shiny-Srvr为例,吐槽Shiny-Srvr的单机能力其实没什么意义,这就好像你在吐槽tornado和nodjs的性能不行?但是明明这两个Wb框架就是根据Epoll的IO复用,故意设计成异步单线程的模型来应对高并发业务场景的,正确的使用姿势其实是搭配Nignx反向代理+Suprvisor+多个服务器实例。如果是Tornado、Nodjs跑单个服务也跪了,那Python和JS又得躺枪。Dockr化之后,这些都可以一起用dockr-







































北京中医医院看白癜风
北京看白癜风医院地址



转载请注明:http://www.guyukameng.com/aspnet/2017-02-14/3646.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了