为什么建立统一的数据平台很重要?JW万豪三角酒店盛大举行!杨大海表示,对于外行或者刚入门的人来说,搭建数据平台就是搭建一个Hadoop集群。但是基于这个集群,要想用好,就会暴露出很多问题。需要开发这么多的系统来处理这些问题,所以建立一个统一的数据平台是非常重要的。为什么说建立统一的数据平台是一个重要的门槛呢?这里杨大海说,并不是现在大数据的门槛有多高,因为整个大数据领域的技术非常成熟,人也很多。许多公司都有自己的团队来扩展数据。这里说的门槛指的是非大数据领域的一些人。例如,分析师可能只会写一些SQL语句,或者只理解一些数据并生成一些报告。如果让这样的人去写Mapreduce或者数据采集开发的东西,他们会觉得很难。如果建立一个全面的数据平台,可以有效地帮助他们。共享,假设一个公司有很多技术团队,不同的部门,不同的业务团队。如果每个团队建一个Hadoop组,中间的数据共享就成了问题。也是一种资源的浪费,比如人力资源的浪费,服务器资源的浪费。规范,基于大数据系统做一个数据产品需要数据采集、采集、存储、计算等多个步骤,所以整个过程很长,30%的时间花在业务系统开发上,70%的时间花在平台建设或者一些开源的完善上是很不划算的。想象一下,在做数据产品之前,已经有可供选择的系统。当有数据需要收集的时候,当一种新的计算模型需要诞生的时候,只需要连接起来,不需要花时间去研究。制定规范后,日志放在哪里,通过标准配置,就可以收集日志使用。这样就保证了整个数据采集过程尽可能的短。成本,这里指的是人工成本和服务器,也就是硬件资源的成本。有了统一的数据平台,可以做很多优化。面对千级规模的服务器,通过对原有代码的一些修改、参数优化等,可以提升10%,大约可以节省100台64G或128G、4核的服务器。时间,开发一个业务系统,没必要花一个月去研究Hadoop和Kafka,因为这些不在业务团队的竞争范围之内。更多的精力应该放在产品或者系统上,如何把系统做得更好,而不是如何把Hadoop做好。Hadoop集群的发展历程Hadoop的发展规模如上图所示。杨大海表示,从2012年到2016年,Hadoop集群在不断演进和发展。集群初始起点比较低,刚好满足数据分析团队和推荐团队的需求,只有30到40台。从2012年到2013年,集群扩张非常迅速。到2013年,会连接很多用户,公司的其他团队,比如广告、分享等也会连接起来。集群规模迅速扩大,半年时间翻了四五倍,达到了200个左右的规模。到2016年,整个集群规模接近1000台,中间做了一次升级,即1.3到2.3。当时升级是为了满足周边的一些生态系统。Hadoop集群发展过程中遇到的问题hadoop问题的演变过程如上图所示。杨大海表示,整个集群发展过程中遇到的问题是随着阶段的推移而不断变化的,也就是说,不同阶段遇到的不同问题是不一样的。规模50的时候,整个生态还不完善,Hive本身也有很多BUG,但是因为一开始应用简单,所以没有被发现。这个时候团队技术水平很差,集群管理基本没做,直接建一个集群,裸奔集群。200个单位的规模,遇到的问题比较多。在这里,杨大海介绍了权限问题、用户管理、资源调度、调度系统、数据安全、目录规范、参数规范、本地化等八大问题。权限问题,用户数量增加,十个到几百个,权限就成了问题。用户管理,如何管理好用户,保证用户的作业及时提交,而不是因为一个用户提交了一个大作业,占用了整个集群资源,导致其他脚本无法运行。如何保证这个用户存储不会乱扩。如何为用户规划存储。资源调度保证用户有一定的独立空间,控制占用资源的数量,不至于占用整个集群的资源。调度系统,一台服务器,一台客户端,可能被三个团队使用。每天晚上,都会有几万个,甚至几千个,几百个作业通过这个机器提交。调度系统是为了解决客户端的单节点问题和单点故障问题。为了数据安全,公司虽然是同一个集团公司,但是分为不同的BU。这些BU之间的数据需要共享和隔离。目录规范,如何存放日志,如何规划用户目录,目录需要多大空间,超出空间如何提醒我删除。参数规范,Hadoop有很多参数需要增加和优化。本地化,有时候需要对Mapreduce进行本地化,因为突然装了200台机器,Mapreduce从他们那里取数据,但是不需要远程本地化,这也需要本地化参数的优化。当1000个左右的高可用多计算模型并存时,问题更多,也更繁琐。如用户级、高可用、小文件、数据迁移、任务问题、存储计划、机房瓶颈、归档、资源竞争分类、资源隔离、任务监控、队列监控等用户级、用户级可低可高,这需要一个人每天回答用户的问题。这里为了高可用,需要做HHA,因为宕机的影响太大,需要重新跑所有团队的任务,需要重新浮出所有团队的数据。小文件,集群有一千台服务器,小文件数量非常多。内部目录内存现在已经使用了150G左右,需要控制近两年的文件数量和归档文件。任务需要看很多指标才能发现问题,这有更强大的监控系统支持。存储计划和存储计划的运维报表是一样的,比如集群计划一个月扩容多少台服务器,比如根据流量、数据量、任务量等进行报表。因为现在突然扩容100台机器是不可能的,运维的机器可能也没有200台。资源争用是一个更严重的问题。集群升级变快了,但是突然有可能提交不上来。因为当时的调度策略,版本迭代升级的时候刚上线了一些新功能,很多特殊路径还没有支持。资源隔离,这是后面需要做的事情。比如任务的无限循环解决了整个服务器运行挂掉的问题。Hadoop数据平台发展现状数据平台现状杨大海表示,上图展示了数据平台的发展现状。最顶层的系统,比如战队、广告、推荐、分析、云娱乐、直播、搜索、分享、移动等等,这些系统是最原始的,需要数据,所以就有了日志系统收集和存储数据。开发日志系统是因为需要解决跨机房的问题。日志采集需要分布在全国多个机房。机房的日志采集需要聚合,最终的数据要聚合到一个点。左边是数据的计算部分,可以直接读取日志系统的数据。右侧的用户管理系统是为了满足用户申请账号、放档、归属团队、访问团队资源等需求。监控报警系统,做到统一监控报警。Hadoop数据平台的未来Hadoop平台的未来杨大海表示,上图展示了集群未来的样子。现在我们已经实现了90%,但是还没有完全解决。未来整个存储分为实时和离线两部分。HDFS存储可以分布到大数据的所有服务器上。许多团队不存储,因此您可以将存储分配到所有服务器并为您的团队提供一个帐户。基于Yarn会做虚拟化,彻底解决资源无法隔离的痛点。基于Yarn开发更多的计算模型,比如一些自定义的计算模型。Hadoop平台将面临的挑战Hadoop平台将面临的挑战如上图所示。杨大海表示,Hadoop平台将面临的挑战分为三个部分:HDFS、Yarn、Client。HDFS面临的挑战包括Namenode性能瓶颈、日志大小控制、节点操作API、多机房解决方案以及集群过大时的Namenode性能瓶颈。Yarn面临的挑战包括调度个性化分类、资源隔离、数据仓库的必要性、基于标签调度的改进以及更强大的监控平台。Client面临的挑战包括Docker统一管理、配置问题、业务依赖升级问题。Hadoop数据平台的运营问题对于Hadoop数据平台的运营问题,杨大海表示内部运营非常有必要。总结这么多的问题,就是因为这些问题在初期的运营中是预料之中的,但是没有做好,才导致了后期的问题。恢复起来会花费很多。他还从规范、计划、流程和战略四个方面对操作问题进行了阐述。规范是指目录如何存放,可以放多少文件,放多少文件,占用多少资源。让用户从一开始就了解这件事,以免一起因为限制而惹恼客户。计划,集群需要计划,在不同的时间做不同的事情,满足用户更加个性化的需求,随时随地改进更多的计算模型。流程,用户在使用平台的过程中详细了解整个流程,比如用户账号申请,比如用HDFS做什么,用Kafka做什么等等。系统之间的所有账户全部打通,一个账户全部搞定。策略,很多时候需要制定策略来限制用户。这里说的限制不是让用户不舒服,而是让它发展得更健康。杨大海在演讲***中提到了两个问题:数据仓库和数据服务。搭建数据仓库,表面上看是和数据平台没有关系的两件事情,一是做数据底层,二是做数据服务。事实上,双方的关系非常大。如果没有数据仓库,做底层会很痛苦。这里的痛苦不是技术不能满足,而是需要继续扩展。数据服务更大的意义在于保证数据的一致性。例如,广告团队计算的视频VV音量和播放量与分析团队计算的视频播放量不一致。这个数据无法解释。其实每个人的原始数据都是一样的,只是统计口径不一样,所以才会出现这个问题。所以,数据服务就是统计一部分可以公开的数据,并通过接口公开,和一部分不能公开的数据,为其提供窥视认证和用户认证数据结构。尽量把公司业务的几个主题放在前面。讲座视频:http://edu.51cto.com/lesson/id-100760.htmlhttp://edu.51cto.com/lesson/id-101082.html【讲师简介】杨大海,原优酷土豆大数据前辈平台架构师,优酷土豆大数据开放平台研发负责人,主要负责优酷土豆大数据开放平台的开发和运营。曾就职于亚信联创,负责BI商业智能产品的研发。
