大数据平台Docker应用之路

随着大数据平台型产品方向的深入应用实践和Docker开源社区的逐渐成熟,业界有不少的大数据研发团队开始拥抱Docker。简单来说,Docker会让Hadoop平台部署更加简单快捷、让研发和测试团队集成交付更加敏捷高效、让产线环境的运维更加有质量保障,而这背后的业务场景和具体的实践方法有哪些?在Docker容器服务逐步走向完善的过程中,大数据平台产品Docker模式的应用又是如何解决的?正是本文所着重阐述的。

实践中发现问题

场景一

在大数据平台型产品的开发过程中,经常要跟许多模块打交道,包括Hadoop、HBase、Hive、Spark、Sqoop、Solr、Zookeeper……等多达几十个开源组件,为了不影响团队成员间的工作任务协同,开发人员其实非常需要自己有一套独立的集群环境,以便反复测试自己负责的模块,可真实的企业开发环境往往只有一两个大的虚拟集群,这可怎么办?难道要给每个开发人员都配几台独立的物理机器?

场景二

针对每一次新版本的发布,产品测试组都需要反复的重装整个平台以便发现问题,而正如本文前面所阐述的那样,大数据平台所依赖的组件繁多,不同组件模块依赖的底层库也不尽相同,经常会出现各种依赖冲突问题,而一旦安装完成,就很难再让Linux系统恢复到一个非常干净的状态,通过Remove、UnInstall、rpm -e等手动方式卸载,往往需要花费很长的时间,那如何才能快速地恢复大数据平台集群的系统环境?

场景三

当测试人员在测试大数据平台过程中发现了一个Bug,需要保存现场,这里面包括相关的大数据组件配置、进程状态、运行日志、还有一些中间数据,可是,平台集群服务器节点数量很多,针对每个进程的配置目录和日志文件,都相对较独立,一般都需要专业的开发工程师或者运维工程师进入相关服务器节点,按照不同组件的个性化配置信息,手工方式收集所需的各个条目信息,然后打包汇集到日志中心服务器进行统一分析,而目前业界并没有一款能够自动分布式收集故障相关的日志系统,但测试工作还要继续,怎么办?

场景四

如何把一个部署好的大数据平台快速地迁移到其它地方?

你得注意以下几点:

  1. 如果是关键业务系统,数据不能丢;
  2. 如果是迁移物理机,机器可能会坏;
  3. 如果是不间断实时在线业务,要保证快速平稳切换。

传统解决方案的缺陷

想要解决这些问题,第一个想到的方案当然是用虚拟机,而笔者经历的团队,之前也确实用的就是虚拟机,但这种方式并不能完美的解决以上问题,比如:

  1. 虽然虚拟机也可以完成系统环境的迁移,但这并不是它所擅长的,不够灵活,很笨重。
  2. 虚拟机的快照可以保存当前的状态,但要恢复回去,就得把当前正在运行的虚拟机关闭,所以并不适合频繁保存当前状态的业务场景。
  3. 虽然可以给每个人都分配几个虚拟机用,但它是一个完整的系统,本身需要较多的资源,底层物理机的资源很快就被用完了,所以我们需要寻找其它方式来弥补这些不足。

Docker技术的引入

Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案,换句话说,它可以让我们把一台物理机虚拟成多台来使用,而且它还可以保存修改、完整迁移到其它地方、性能损耗小等等好处,能够很好解决我们之前遇到的问题。

那为什么不用虚拟机方案?

简单来说,因为它比虚拟机更轻便,启动一个Docker容器只要几秒种的时间,在一台物理机上可以创建几百上千个容器,而虚拟机做不到。

下面是虚拟机与Docker两种方案的实现原理:

VM设计图

虚拟机实现资源隔离的方法是利用独立的OS,并利用Hypervisor虚拟化CPU、内存、IO设备等实现的。例如,为了虚拟CPU,Hypervisor会为每个虚拟的CPU创建一个数据结构,模拟CPU的全部寄存器的值,在适当的时候跟踪并修改这些值。需要指出的是在大多数情况下,虚拟机软件代码是直接跑在硬件上的,而不需要Hypervisor介入。只有在一些权限高的请求下,Guest OS需要运行内核态修改CPU的寄存器数据,Hypervisor会介入,修改并维护虚拟的CPU状态。

Hypervisor虚拟化内存的方法是创建一个shadow page table。正常的情况下,一个page table可以用来实现从虚拟内存到物理内存的翻译。在虚拟化的情况下,由于所谓的物理内存仍然是虚拟的,因此shadow page table就要做到:虚拟内存->虚拟的物理内存->真正的物理内存。

Docker设计图

对比虚拟机实现资源和环境隔离的方案,docker就显得简练很多。docker Engine可以简单看成对Linux的NameSpace、Cgroup、镜像管理文件系统操作的封装。docker并没有和虚拟机一样利用一个完全独立的Guest OS实现环境隔离,它利用的是目前Linux内核本身支持的容器方式实现资源和环境隔离。简单的说,docker利用namespace实现系统环境的隔离;利用Cgroup实现资源限制;利用镜像实现根目录环境的隔离。

当新建一个容器时,docker不需要和虚拟机一样重新加载操作系统内核。我们知道,引导、加载操作系统内核是一个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了这个过程,因此新建一个docker容器只需要几秒钟。另外,现代操作系统是复杂的系统,在一台物理机上新增加一个操作系统的资源开销是比较大的,因此,docker对比虚拟机在资源消耗上也占有比较大的优势。事实上,在一台物理机上我们可以很容易建立成百上千的容器,而只能建立几个虚拟机。

可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。当然,一些容器核心模块依赖于高版本内核,存在部分版本兼容问题。

如何基于Docker实现大数据平台的敏捷部署与运维?

第一步:搭建基础的Docker环境

在实践过程中,部署一套可用的大数据平台Docker环境,必需做好以下前提工作:

  1. 搭建私有镜像仓库,用来统一存放构建好的镜像文件
  2. 搭建一个安装包仓库,用来存放我们发布的各种版本的大数据组件安装包
  3. 配置多个物理机上的Dcoker容器可以相互通信,可参考官方给出的方案

第二步:为大数据平台定制基础镜像

1.既然要在Docker容器内安装我们的大数据平台,那就需要一个统一的Linux系统做为我们的Dcoker容器,像Ubuntu、CentOS等发行商都会发布自己的Docker基础镜像到Docker Hub上,如果Docker Hub上恰好没有你需要的镜像,也可以自己制作。

2.比如用CentOS6.8做为我们的基础镜像,那么请先把它pull下来

3.然后我们用这个镜像创建一个容器,并在里面配置一些我们大数据平台依赖的参数,比如ntpd、httpd服务等等,最终生成我们平台专属的基础镜像。

4.这是很关键的一步,有了它以后,所有人员可以随时创建一个自己需要的Linux环境出来,以便在其内进行产品的研究和实验,且每个人的环境互不相干,当容器内的环境被破坏后,可以删掉再创建,这样一来,场景一和场景二所遇到的问题也就迎刃而解。

第三步:将已经部署好的集群做成镜像

我们可以把已经部署了集群的容器保存成多种镜像,如:只包含了Hadoop的集群、同时包含Hadoop、Zookeeper、Hbase的集群,或安装了所有组件的集群等等,然后上传到私有仓库,其它人需要的时候,直接启动自已需要的集群就可以了,因为免去了部暑与配置等步骤,因而大幅度提高了工作效率,也提高了产品迭代速度。

上图是已经做好的镜像,图中共三种类型的镜像:

  • 第一个箭头指基础镜像
  • 第二个箭头指的是已经安装了大数据平台的镜像,因为是分布式,所以有五个
  • 第三个是单节点版的大数据集群,所以只有一个镜像

第四步:镜像的修改与保存

Docker提供了commit功能可以将一个正在运行的容器保存起来,假如在测试过程中遇到一个Bug并且需要先保存下来,执行一条简单的命令即可,如:


  1. # docker commit container_name image:v2 

在以后需要复现的时候用这个镜像创建容器即可,像下面这样


  1. # docker run -tid –name c1 image:v2 bash 

但注意,并不是所有状态都能被保存下来,它只保存文件层面的状态,不能保存内存中的状态,所以再次启动容器的时候,容器内的所有服务都已经变成了停止状态,需要再手动启动一次,这样就导致有些类型的Bug不能复现。

不过欣慰的是,Docker官方打算在后面的版本中加入checkpiont功能,它可以保存容器中的所有状态,这样就可以完整地复现Bug,这个新功能的用法就像下面这样:

这个功能对很多人来说,绝对是个好消息!

第五步:脚本化部署、监视、删除

当然了,每个人都不应该把过多的精力放在怎么使用Docker的问题上,这样会为团队带来额外的工作量,最简单的办法当然是把所有重复性的工作脚本化,向每个人提供最简便的使用接口,只需要一条简单的命令就可以创建自己想要的集群环境,当不需要的时候一条命令即可删除,这样即降低了学习成本又解决了容器管理问题。

根据笔者的实践经验,脚本化的实现应该着重考虑几个方面:

  1. 多种类型集群的创建
  2. 记录每个集群的所属者,容器所属的物理机,创建时间等等
  3. 可实时查看所有容器的运行状态,物理机资源使用情况
  4. 删除指定的集群

结语

现在已经有很多开源的Docker容器管理框架,但需求总是复杂多变的,并不能适用所有的场景。比如笔者所负责的大数据平台就需要为每个容器做端口映射、内含大数据组件的镜像在启动后还需做Hostname与IP映射等,总之,目前开源容器框架的易用性还有很大的改进空间,都存在一些手动配置的工作。

关于容器服务,在具体的实践过程中,一定还会遇到很多问题,比如服务发现和编排。当下在应用层面虽还算不上特别的成熟,但已经使原本部署与配置很复杂的大数据平台变得简单快速,让一部分研发团队的产品迭代得到加速。当然,不管是大数据平台产品,还是Docker开源社区本身,都还在不断的完善中。

本文作者:佚名

来源:51CTO

时间: 2024-10-06 09:33:06

大数据平台Docker应用之路的相关文章

DockOne微信分享(九十九):海航生态科技舆情大数据平台容器化改造

本文讲的是DockOne微信分享(九十九):海航生态科技舆情大数据平台容器化改造[编者的话]海航舆情监控系统能够为海航集团内部提供监控网络舆情信息,对负面信息.重大舆情及时预警,研判具体舆情或者某一舆情专题事件的发展变化趋势,生成图标报告和各种统计数据,提高舆情工作效率和辅助领导决策.然而,随着项目的持续运行,许多问题逐渐暴露出来,为了解决这些难题,对整个项目重新规划设计,迁移到Hadoop.Spark大数据平台,引进持续化Docker容器部署和发布,开发和运营效率得到显著提升. 一. 舆情平台

为什么选择这样的大数据平台架构?

当前BAT基本公开了其大数据平台架构,从网上也能查询到一些资料,关于大数据平台的各类技术介绍也不少,但在那个机制.那个环境.那个人才.那个薪酬体系下,对于传统企业,可借鉴的东西也是有限的. 技术最终为业务服务,没必要一定要追求先进性,各个企业应根据自己的实际情况去选择自己的技术路径. 与传统的更多从技术的角度来看待大数据平台架构的方式不同,笔者这次,更多的从业务的视角来谈谈关于大数据架构的理解,即更多的会问为什么要采用这个架构,到底能给业务带来多大价值,实践的最终结果是什么. 它不一定具有通用性

支撑EB级规模的大数据平台深度揭秘

编者按: 4月20日,云栖大会走进深圳,由阿里云高级数据仓库专家陈鹏宇(花名:不老)分享的环节内容量巨大,引发现场用户关注.他分享的议题主要围绕阿里云数加平台,这一发布不久的大数据平台对很多人来说还比较陌生,但是这个平台的历史和其上所服务的众多业务,却是耳熟能详的,几个数字,瞬间抓住眼球:   双十一狂欢节,水立方实时直播,万亿级数据计算,3秒钟出结果 蚂蚁小贷利用大数据实现普惠金融,1秒钟放贷,全程自动化决策 菜鸟智能物流骨干网,货.人.车.仓智能调度,目标实现全国24小时送达 阿里集团99.

摩拜AI大数据平台“魔方”发布黄金周骑行预测,加州开发 AI 智能公寓

AI大数据平台"魔方"发布黄金周骑行预测 8天长假前,摩拜通过大数据人工智能平台"魔方",对假期全国各地的骑行特征与趋势做了一次预判. 据"魔方"预测,由于海量休闲观光需求的释放,预计"十一"期间的日均骑行量将增长25%:相应地,人均骑行距离将从平均不足2公里增加至近3公里:骑行速度将降低15%,每公里骑行将多花1分钟时间.与工作日的明显早晚双高峰不同,小长假期间的骑行将呈现午前小高峰.下午2点到5点大高峰.晚间8-9点第二小

农行赵维平:农业银行自主可控的大数据平台建设

4月27日,中国大数据峰会上,农总行赵处的讲演,引得台下掌声雷动."大数据建设只有起点,没有终点,我们一直在路上.在国产化的道路上,希望民族工业无比强大,在国际市场上挺起腰杆!" 500-333文章照片-大数据推动金融创新- 赵维平 中国农业银行软件开发中心的专家赵维平 农总行赵处的讲演的数据着实令国人振奋!农业银行以国产数据库GBase 8a为基础的国内最大的金融大数据平台采用混搭融合架构.双活数据仓库.超大规模数据库集群这些先进技术全部应用其中.56是生产环境,现在实现了56环境的

大数据创新的慈溪之路

"敢为天下人先"的慈溪,又做了一回"第一个吃螃蟹的人".昨天,全国首个特许经营的大数据云基地---宁波大数据云基地项目在慈溪完成签约.项目计划前5年总投资20亿元,在三年内建成一个国内领先的大数据云计算平台,促进云计算.大数据技术在政务.经济.民生等领域的广泛应用,形成以大数据云基地为基础设施和创新要素的产业发展新业态,探索出一条互联网基础设施建设和大数据创新的慈溪之路. 大数据和云计算,被称为继互联网之后IT行业的两大颠覆性技术革命.云计算主要为数据资产提供了保管

石家庄统计大数据平台月内上线

9月18日至19日,市统计局召开评审会,对即将上线的石家庄统计大数据平台进行推介,展示出平台强大的数据采集处理能力.丰富的数据多维展现形式,以及便捷的数据检索查询功能. 统计.工商.国税.地税.质监等多部门数据在线共享,各项经济指标完成情况"月清季明",规下.限下单位数据实现全面采集,社情民意调查一键发布--9月18日至19日,市统计局召开评审会,对即将上线的石家庄统计大数据平台进行推介,展示出平台强大的数据采集处理能力.丰富的数据多维展现形式,以及便捷的数据检索查询功能. 2014年

建立大数据平台管控互联网金融风险

中欧陆家嘴国际金融研究院.英凡研究院联合发布<互联网金融专题报告>(以下简称<报告>).<报告>认为,对于非法集资行为,应该给予坚决打击,并通过建立互联网金融门槛,鼓励合规经营.具有良好技术能力.风控能力.合理的商业模式和价值贡献的互联网金融企业的发展. 2015年,P2P网贷市场高速增长.据第三方网贷资讯平台网贷之家数据,P2P交易规模达到了9823.04亿元,比2014年增长近288%.与此同时,P2P行业也成为互联网金融风险爆发的主要领域--截至2015年年底,3

海航生态科技舆情大数据平台容器化改造

文章介绍了海航生态科技舆情大数据平台的容器化改造经验,包括初期技术架构.应用容器化.架构迁移.持续发布与部署. 海航舆情监控系统能够为海航集团内部提供监控网络舆情信息,对负面信息.重大舆情及时预警,研判具体舆情或者某一舆情专题事件的发展变化趋势,生成图标报告和各种统计数据,提高舆情工作效率和辅助领导决策.然而,随着项目的持续运行,许多问题逐渐暴露出来,为了解决这些难题,对整个项目重新规划设计,迁移到Hadoop.Spark大数据平台,引进持续化Docker容器部署和发布,开发和运营效率得到显著提