构建海量数据平台-云梯生态系统

来源:互联网 发布:常用的下载软件的端口 编辑:程序博客网 时间:2024/06/02 09:42

转自 http://fengshenwu.com/blog/2014/02/16/build_cdo_yunti_ecosystem/


《大数据时代》一书说:技术终究会过去,分析的模型也将定型,未来的制高点在于是否拥有数据。其实目前的数据技术正在蓬勃发展,也不知道维克托•迈尔•舍恩伯格说的啥时候到来。

云梯系统为阿里已经服务了将近5年了,其上存储着数十PB的数据,每日运行数十万的job,节点数已经逼近10000台了。借助于社区的开源hadoop技术也只是云梯生态圈的一部分。本文将简要讲述云梯生态圈的各个组件。笔者认为构建数据平台的四要素:数据存储、数据传输、数据计算、计算调度。当然还要方便用户使用。

云梯平台生态圈基本可以用以下的图表示:

yunti

我大致分了8层,每层都有各层特别的事项及对应的开源软件。虽然虚拟技术室云计算的基础,但对于内部构件海量数据平台并不需要虚拟主机。虚拟主机毕竟有一定的性能损耗。对于目前存在的虚拟hadoop技术的目标是让用户在云端自建hadoop集群。

基础设施层
主要包括主机、网络、机房、供电等基础设施。这些基本是硬件投入,是云计算的基础部分,也可以认为是数据中心。由于国内独特的网络环境,很多企业的服务器都是托管在一些电信机房内,笔者了解所自建机房的企业很少。在国外,微软、IBM、google、facebook等公司都在全球建立了大小的数据中心,其中以google的最为先进,PUC最接近1的公司。越来越多的数据中心也开始用绿色能源。说白了,云计算、云主机等服务都是为用户节约自购硬件的成本。对于hadoop来讲,最关注的是主机,主机一般关注的是网络带宽、CPU的主频及个数、硬盘的转速及个数(有的实时计算干脆直接用了SSD甚至fusionIo)、内存大小。对于超大型的hadoop集群,会考虑master节点,搭配的是ssd的磁盘及高频的cpu。内存价格的便宜繁荣了类似spark的内存框架。

基础软件层
此主要是运行在主机上的软件,路由器及交换机在购置时厂商一般会配置好相关的软件。主机最上直接运行的就是操作系统,hadoop就是用linux,最近微软开发了相当多的patch以支持win。不过还是建议用linux。JDK/JVM是也十分基础。对于如阿里这些都是专门的团队维护的,如:linux内核团队、jvm团队。在一些特别的场景下,如:namenode的超大内存需要特别的hack jvm。在阿里,基础软件层及基础设施层都是已经做好了。

存储层
数据不可丢失是最起码的要求。数据放置3个副本在目前情况下基本是可靠的。阿里的存储层已经在业内分享了许多次了,包括了namenode\datanode\crossnode三个最主要的的组件。crossnode是阿里自己开发的协调多机房副本分配的组件,数据可以看是否需要直接在另一个机房生成相关的副本以实现计算的本地化。

计算层
计算是比较丰富的。目前来讲,有离线计算、准实时计算、实时流式计算、实时计算。计算模型有mr模型、DAG模型等。对应的框架是相当多,就目前发展来看,MR是基本的也是离线计算的代表。准实时计算目前是以spark为代表。impala、stinger目前是支持sql查询较快框架。实时流式计算则以storm为代表的。这些框架可以通过YARN调度框架实现在同一个集群上运行,最大限度地错峰节约资源。目前阿里云梯正在探索中。

数据交换
数据需要交换,如:从应用系统同步日志到hdfs中,从mysql同步数据到hdfs中。其实可以把消息系统也算数据交换的,如:Kafka。有的数据交换系统直接可以嫁接到hadoop的计算层上,如:数据交换,数据分布式从mysql中拖出,再写到hdfs中,这样还节约网络。社区有Chukwa、Flume、Scribe等相关的日志数据库同步工具,不过一般的公司都按照自己的需求重写了。如:阿里的TT就是支持业务日志的同步。datax支持多源之间的不同数据格式的转化同步。

调度层
当用户的job非常多时,每个job之间还有一定的依赖关系。此时不能通过crontab来实现调度需求了。社区有一个Oozie,不过大部分的公司应该是自己编写相关的调度层,很多时候跟内部的一些系统还是有一定关系的。阿里有一个名为天网和宙斯的调度系统。

用户视图层
用户视图,此可大可小可没有。主要看数据平台的成熟度。很多公司直接让用户在网页端编写hive脚本,发布脚本的流程管理、权限申请等。简单地讲,此用户工作平台主要是方便用户使用数据数据平台的。

应用BI
这层就是用户具体应用了,比如:阿里巴巴的数据魔方、淘宝指数等。

在图中还有很多的竖条的线条:

  • 云梯医生:主要是对云梯上的job进行分析的,这些数据需要经过二次多维度的分析,不能直接在ganglia上看出的。
  • 生命周期:其实简单地讲就是一份数据在系统中的生命状态,产生消亡。
  • 摩萨德:是内部对业务线度量的一个分析系统,当系统异常时可以报警。
  • 冷数据中心:主要是备份云梯冷数据到磁带上。
  • 监控ganglia:直接可以看出一维度的信息,可以长时间保留。目前对于日常的问题查询用得最多的监控系统。
  • 授权系统:当认证完成后,可以对用户提供字段级别的授权功能,支持数据多级别权限的访问。

以上简单地描述了整个云梯生态圈组件。也是自己在1年多时间对数据平台的全貌认识的一个总结。后续,笔者将详细思述各层的具体的技术。


0 0
原创粉丝点击