大数据平台云化的「从 0 到 1」

百家 作者:QingCloud 2017-06-16 11:17:14

大数据的时代已经来临,到底什么是大数据,大数据技术如何和企业运营结合起来?读完本文,你会有新的答案。 


本文为青云QingCloud 大数据平台研发工程师迟连义在 青云QingCloud 实践课堂·南京站中的演讲总结而来,他以《大数据平台的应用化、场景化及服务化实践》为议题,分享了青云QingCloud 大数据平台的整体架构及每个组件的应用场景,大数据产品云化的过程中的经验、青云 AppCenter 2.0 的整体结构和功能特性以及青云QingCloud 大数据平台未来的发展规划。全文 5320 字,建议阅读时间 13 分钟.


青云QingCloud 大数据平台架构


上图详细介绍了青云QingCloud 大数据平台目前的整体架构。分层来看:输入端的数据源,可以是企业的用户浏览记录数据、电商平台的交易数据、视频用户的浏览记录、播放时长记录等数据。这些数据会接入到存储或者计算单元进行分析。


在整个过程中需要有一个缓冲区去缓冲数据。青云QingCloud 提供了主流的 Kafka 分布式消息队列服务来满足这一需求,它的优点是:以订阅和发布模式有效地解耦了输入端与输出端,可以实现即使只有一次输入,输出端也可以多次消费,彼此之间不会发生影响。


在存储层,青云QingCloud 提供 MongoDB 非关系型数据库。MongoDB 是最接近关系型数据库的非关系型数据库,它可以提供类 SQL 的访问模式,并且提供 HBase,一个可以承载海量数据存储的分布式数据库。HBase 有一个特点,只能通过 RowKey 进行检索,但它能够保证每行很好的一致性访问,同时具备很好的读写性能,如果不想把数据存在数据库里面,青云QingCloud 还提供了 HDFS 和对象存储服务。HDFS 本身是针对于大文件进行设计的,在处理小文件的时候它会有一些问题。小文件同样会在 HDFS namenode 里面占一块内存,如果小文件过多就会导致 namenode 的内存性能受到一定影响。同时,在后续做数据分析的时候,小文件过多会导致 MapRuduce 中的 Map 数量过多,整体分析过程会很慢。相比之下,对象存储则会对小文件做一些优化,所以如果需要处理大量小文件,存储到对象存储里面是更好的选择。


从数据本地化的角度来看,如果经常要进行计算,还是采用本地化的存储计算会更快,因为从对象存储取数据会通过公网从成本角度来说,存在 HDFS 内会比存在对象存储上成本稍高。青云QingCloud 是对数据进行分层分类,如果需要处理的是一些历史数据,不需要经常进行查询和分析,可以放在对象存储上,而对于一年内经常进行分析和查询可以放在 HDFS 上。


在数据计算层,青云QingCloud 提供了实时数据处理 Storm 和准实时处理的 Spark (包括Spark Streaming)。同时提供了 Hadoop MapReduce 及 Hive 等离线批处理工具。在服务协调方面,提供 Zookeeper 服务,Zookeeper 是一个非常通用的功能,很多大数据组件,如 HBase、Kafka 等都依赖于 Zookeeper,很多企业用户也会基于 Zookeeper 开发自己的服务协调。 


Elasticsearch,常用于企业内部的日志查询及分析。除了 Elasticsearch 集群,青云QingCloud 还提供一个 ELK 套件,囊括了从日志收集、日志检索到分析结果最终展现的全过程的功能套件,青云QingCloud 还提供了 Redis 和 memcached 两个非常通用的缓存工具。


大数据管理平台


上图列出了比较主流的大数据工具,但有一个问题,这些大数据工具彼此之间都是独立的。比如:Storm 有自己的一套监控 UI,监控拓扑的执行情况以及是否存在延迟等。在 Hadoop 中,HDFS 也有一套自己的 UI,可以监控每一个 namenode 节点的状况和文件的情况。那么,如果一个企业用了很多大数据组件,一定需要一个统一的平台把所有大数据组件管理起来,青云QingCloud 提供了这样一个大数据管理平台,可以把该平台理解成一个 UI,把所有大数据组件囊括其中。


该平台根据开源 Hue 做的二次开发,支持直接 Hive 查询,结果可以通过图表展现出来,也可以提交 Spark SQL、Spark Shell 等。还可以将关系型数据库,如 MySQL,放进来统一管理。在 Job 方面,可以直接用 Oozie 进行调度,也能直接看到 MapReduce Job 目前的运行情况,包括刚才提到的 Storm 拓扑的管理,以及 Zookeeper 节点信息展现。


在储管层面,对 HDFS 及 QingStor™ 对象存储,都提供了数据路径的监控及展示页面,HBase 可以在管理平台上面直接做 Shell 查询,也可以看到表的信息等等。Kafka, 可以清楚展示 topic 的信息,和每个 Kafka Group 对某个 topic 的消费情况。


大数据产品云化瓶颈


在对这些应用进行运化开发的过程中,青云QingCloud 也遇到了一些问题,会影响到以后大数据平台的扩展。主要这三个方面:


第一个是大数据发展太快,各个领域存在很多竞品。比如在列式数据库方面,青云QingCloud 提供了 HBase,但还有 Canssandra。在离线计算方面,还有比 Hive 快很多倍的 Impala 这些工具目前青云QingCloud 还没有放到云平台上。另外,在一些特有领域,如 AI,区块链,机器学习,深度学习方面,如容器应用领域,这些应用都还没有集成到青云QingCloud 的大数据平台上。这些领域的产品非常多,但青云QingCloud 的精力有限,这是遇到的第一个挑战。


第二个挑战是云化周期长。以青云QingCloud 的经验要云化一个大数据产品,把大数据产品真正放到 QingCloud 上,作为一个云原生应用大约需要两到三个月的时间。首先要搭建一个整体开发测试环境,要把大数据应用的一些自带的东西放在开发设计环境里面去,同时开发人员要对青云的 API,包括生命周期管理体系都要有一定的了解。在开发过程中,撰写针对云平台生命周期管理的代码,之后还要开发应用监控、报警等功能,最后经过测试,需对接云平台内的计费、工单等等这些系统,最终做成一个独立的应用。


第三个是挑战产品间的组合非常复杂。比如,目前青云QingCloud 的 Hadoop 和 HBase 是独立提供的。 如果一个用户要想一键部署一个 Hadoop + HBase 的集群,青云QingCloud 就需要按第二点提到的开发流程重新做一个新的产品发布出来。这样子导致组件间的组合特别复杂。


同时,青云QingCloud 还需要一种服务之间的自动发现能力。比如:Kafka 是依赖于 Zookeeper 的,如果在一个部署的 ZooKeeper 集群中添加或删除一个节点,Kafka 集群需要手动修改与 ZooKeeper 的链接地址。青云QingCloud 希望这一过程是自动的,自动感知变化并作出修改 。


面对这三个挑战,最终青云QingCloud 找到了比较好的解决方案,就是青云QingCloud 的 AppCenter 2.0。首先产品特别多,而青云QingCloud 自身精力有限。但是青云QingCloud 可以联合一些技术能力很强的开发伙伴,让他们可以基于青云QingCloud 去便捷地开发云化一些大数据产品。做到这点的关键是需要提供一套很方便开发的手段,降低开发难度。


AppCenter 2.0 提供了一套模版化的开发流程,大幅降低开发难度。同时,AppCenter 2.0 也把主要的功能,如应用生命周期管理,监控告警,工单系统,计费等等全部抽象出来,以标准化的形式交付出来,最终把整个应用的开发周期从几个月降低到了几周,这也解决了第二个开发周期长的挑战。


青云QingCloud AppCenter 2.0 简介


青云QingCloud AppCenter 2.0 是什么样的平台?


首先,AppCenter 2.0 是一个经过高度抽象,可以部署各种分布式应用的平台。青云QingCloud 知道分布式应用整体架构多种多样的,比如: ZooKeeper 是 peer to peer 架构; Hadoop 是主从架构; Redis cluster 是分片式的。AppCenter 2.0 会对这些不同的架构做高度的抽象,把应用整个生命周期抽象出来,然后开发者只需用类似自然语言的方式在模版中进行修改,表明应用需要在生命周期的不同阶段,做哪些动作从而完成整个开发流程。这种高度抽象使云上的应用开发和交付变的异常的简便和标准化,它是以模版的形式提供给开发者。  


想了解更多青云QingCloud AppCenter 2.0 内容或参加行业最前沿的大数据议题, 7 月 28 - 29 日,QingCloud Insight 大会,一场关于未来的深刻讨论等你来参加,点击文末阅读原文,进行报名:

QingCloud Insight 2017,科技洞见未来。


其次,AppCenter 2.0 是全新的云操作系统,贯穿资源与应用平台。青云QingCloud 可以把 IaaS 理解成对物理资源的虚拟化,可以类比成现在用的 PC 机。实际上最终用户在使用 PC 机时用到的是上层的软件应用,在 PC 机和软件之间还有一定的距离,需要一个东西去调动 PC 机中的各种资源,这个东西就是操作系统。


AppCenter 2.0 实质上就是架构在 IaaS  (云平台) 层上的操作系统,操作系统会提供很多接口,让开发者在青云QingCloud 操作系统上开发各种各样的应用,最终提供给最终用户去使用。   


AppCenter 2.0 架构图


上图为 AppCenter 2.0 的整体架构图,主要分三块:开发者控制台、用户控制台以及调度系统(中间部分)。首先,开发者控制台:开发者可以通过这里创建一个应用及不同的版本,然后基于每个版本,分别创建配置文件,其中会描述需要被定义的信息,如环境变量、集群节点的可选个数、每一个节点角色需要的 CPU 和内存配置等。


同时还要在模版文件中完整定义整个应用的生命周期。之后将配置文件打成一个压缩包并在开发者控制台提交,之后青云QingCloud 人员会进行审核,对应用进行详细的测试,看它的监控报警是否有完善等等。当青云QingCloud 觉得该应用符合标准,会批准开发者进行发布。应用发布之后,在用户控制台,最终用户便可以看到它的应用。如果用户对该应用感兴趣,就可以进行安装和部署。


用户部署以后会真正的进入调度系统的处理范围。青云QingCloud 调度系统首先会在用户需要中创建一个元数据管理服务,基于一个 3 节点的集群,对最终用户是免费开放。然后会根据最终用户的选择,创建相应数量的节点,CPU 核数,内存容量及存储空间等资源。


在 AppCenter 中, 这些资源是支持 KVM、Docker、及 LXC 三种架构。创建好资源后,这些资源的元数据信息会被注册到元数据管理集群。之后在资源管理层面会启动一个 confd,它相当于一个 agent,会时刻监控元数据管理服务中注册进去的元数据。如果这些元数据发生变化,那么会触发由开发者定义好的要执行命令,后者更新配置文件等各类操作。


接下来,调度系统会负责整个应用的生命周期管理,包括创建、扩容、关闭或启动等等这些操作。同时调度系统还会周期性地调用由开发者定义的一系列管理操作,如监控、健康检查等等。



接下来青云QingCloud 详细看一下 AppCenter 2.0 的功能和技术特性。上图显示的是开发者需要提供的一些模板文件,比较重要是这几个第一个 config.json,主要用来配置应用的 UI,其中定义了最终用户在前端需要看到的一些信息,如该应用可以选择多少核的 CPU,多少容量的内存,每一类节点橘色可以创建多少个节点。


因为很多应用对节点数量是由限制的:Hadoop 集群,salve 节点的数量最少需要 3 个;像 ZooKeeper 集群,节点数量一般都是奇数个的。对于这样的限制,都可以在在模版文件中具体的进行配置。


Json 文件最终的效果会是,青云QingCloud 通过预置好的统一的 UI 界面,把 json 文件中的各项配置在前端提供给最终用户。然后是 cluster.json.mustache,该文件实际上定义了整个应用的基础架构。


基础架构包括定义应用中需要哪些类型或角色的节点,如 Hadoop 集群中会分三种不同角色的节点,而针对每一个节点的角色,开发者需要定义其完整的生命周期管理以及监控报警。生命周期管理刚才有提到,包括如横向扩容和纵向扩容等等操作。


开发者要通过 cluster.json.mustache 模版文件,告诉调度系统需要执行哪些操作,需要执行主机里面哪些脚本,那么调度系统在生命周期到来的时候,会触发这些脚本的执行。


接下来是监控报警功能,这一点在青云QingCloud 审核过程中,会强制要求每一个应用必须存在。因为作为一个云应用,监控和报警很重要,在客户业务出现问题的时候,他需要了解到底是业务出现问题还是产品出现问题。


最后一个是多语言翻译功能,青云QingCloud 提供的是英文,最终用户其实想看到一些中文展示,开发者需要定义一个多语言翻译的文件,告诉青云QingCloud 它的行业变量和角色对应的中文是什么样的名字,青云QingCloud 会最终展示在界面上。



以上这张图就是一个上传配置文件的界面,开发者在创建应用和版本以后,并完成以上的两个配置文件的撰写后,就在该位置提交,并发布版本。之后会现在后台通过青云QingCloud 的审核。青云QingCloud 现在的审核比较严格,因为青云QingCloud 要对最终用户负责,开发者对应链接到控制台测试,测试一下配置文件写的是否合理,测试生命周期管理,并测试监控报警是否合理。



以上介绍的是 AppCenter 2.0 的一些基本功能,可以帮助开发者通过模板文件的方式很便捷地在运平台上开发一个自己的应用。还有一个比较高级的功能,就是应用编排。通过元数据管理集群以及 Confd 这两者之间的交互,可以实现应用之间的自主感知。举例来说,Kafka 需要依赖 ZooKeeper,那么如果 ZooKeeper 集群发生了增加或删减节点的变化,Kafka 集群是可以感知到该变化,并自动执行配置文件更新和重启集群等操作。


另外一个例子是上文提到的大数据平台管理 UI 系统。该 UI 在启动的时候通过应用间自主感知能力,可以感知到用户的 VPC 下面已经使用了哪些大数据产品,之后可以自动将大数据产品添加到管理 UI 里面去,而且后续如果在同一个 VPC 下,新加了的大数据应用或者产出某一个大数据应用,其 UI 还是能够自动感知到及自动处理。


除了应用感知能力,青云QingCloud 还提供了应用嵌套和组合。基于模板将组合性的应用如 Hadoop + HBase,通过模板文件做一个组合就可以了。只是模板文件的组合还是需要开发者做一个编辑操作,这不是青云QingCloud 的最终目的。


青云QingCloud 最终目的是实现可视化的编排,开发者可以在一个界面里面将几个应用通过 UI 拖拽的方式合并成一个大型应用。青云QingCloud 现在已经发布的,基于对象存储的企业网盘,它其实就是一个大型的应用,但是有一些底层的小组件,只要把这些小组件拖进来就可以组成成大应用,它用大应用可以作为其他大应用的小组件,以后支撑做一个更大的应用。



另外一点,AppCenter 除了兼容 KVM 虚拟机,还会支持 Docker。Docker 有自己的完善的技术体系和管理框架,青云QingCloud 对它进行兼容,此外还兼容如 Kubernetes,Mesos 机 Docker Swarm 等。


青云QingCloud 会把这些这几个管理框架做一个 AppCenter 中的 App,让最终用户可以基于云平台一键部署并使用这些框架,目前用户如果直接将 Docker 部署在 IaaS 上,在网络层面会存在比较大的性能问题,为了解决了该问题,QingCloud 提供了 SDN Passthrough 的功能,可以大幅度提升 Docker 部署在 VM 上的网络性能。青云QingCloud AppCenter 2.0 应用平台,不仅提供内部工程师做开发,同时面向合作伙伴开放。



青云QingCloud 提供一整他的运维及运营管理能力。包括管理、计费、财务、日志、工单等等这些功能。这里再强调一下,青云QingCloud AppCenter 2.0 不仅提供给企业开发者使用,云计算的最终用户也是可以使用的,用户如果对某一个应用比较熟悉的话,它是可以自己将应用移植到云平台上。


这是一张开发者能看到的界面图。他可以看到日志,最终用户在使用他应用的时候,整个生命周期发现哪些问题,出现问题的时候针对这些日志和用户进行讨论。还可以看到用户信息,可以看到资源信息,有哪些用户使用这些应用,这些用户创建哪些资源。


青云QingCloud 提供完整的工单功能,用户出现哪些问题,可以提工单,询问这些开发者。同时还提供了完整的财务报表功能,让开发者能够对财务有一定的了解以及做出后续决策。


大数据平台 + AppCenter 2.0


前文介绍了 AppCenter 2.0 的能力。首先它通过模版化的方式让开发者可以很便捷地在云平台上提供应用。第二是提供一种服务感知的能力,让多个组件组合能够彼此感知。它还提供编排能力,能够将大应用拆成各个小应用,还有将这些小应用组合起来成为大应用的能力。

  

青云QingCloud 的大数据平台会架构在 AppCenter 2.0 的平台上,关于大数据平台未来的发展规划,青云QingCloud 主要做这么几点:首先 AppCenter 2.0 强大的开发能力可以把青云QingCloud 原来 2、3 个月才能云化一个大数据平台周期缩短到几周,所以青云QingCloud 接下来会把这些比较热的应用,像 Kylin、Flink、TensorFlow、Caffe、Cassandra 等等这些应用会一个接一个云化到大数据平台上。原来需要用到一两个月,现在只需要几周时间,可以很快给用户去交付,让最终用户使用到。

 

同时,基于 AppCenter 提供的应用编排能力,青云QingCloud 会提供很多大数据套件方案给用户。很多用户会同时使用 Kafka 跟 Storm,青云QingCloud 会把这两种用户的需求进行整合,推出完整的方案提供给用户。

获取更多大数据实际案例和青云QingCloud 大数据研发工程师面对面直接交流;

这一切,尽在 QingCloud Insight 2017。


QingCloud Insight 2017 云计算峰会将于 20

17 年 7 月 28 日 - 29 日在北京国际饭店会议中心盛大举行。届时,青云QingCloud 将发布一系列重要产品和功能,承接企业核心生产系统,并携手人工智能、IoT 及区块链领域的前沿技术所有者与领先的应用提供商共同发布「云+ 应用」的联合解决方案,重新诠释「云之基石」的全新定义,助您的业务加速进入智能与数据时代。

7 月 28 - 29 日,让我们相约北京国际饭店 - 建国国际会议中心 ,点击“阅读原文”立即报名,一起洞见未来!


关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接