Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【有奖征文】天翼云数据中台工具的选型应用以及后续思路 #19

Open
Adamyuanyuan opened this issue Nov 17, 2020 · 0 comments

Comments

@Adamyuanyuan
Copy link

背景

我们曾经的大数据平台,是基于CDH构建的,随着大数据两大商业公司CDH和HDP宣布合并,将不再更新新的版本;
我们调研了当前大数据平台的发展状况,对于我们这样体量很大的平台来说,自主研发将极大节约使用商业版的license成本,因此我们准备走上大数据平台核心技术自主研发的道路。
当时设计的架构如下,(这是去年画的架构,现在架构已经有很多优化,后面有空了我会画一个新的):
image
其中数据基础能力平台,我们选择基于围绕当时最新的社区版Apache Hadoop3.2 、Spark 3.0以及Hbase 2.2版本进行迭代优化,这样做除了很多性能提升以及新特性之外,最重要的一点是它支持滚动升级 ,代表着我们以后可以随时在用户无感知的情况下升级集群,以后跟着开源社区混了,也能更方便地把我们自己的优化与社区共享;目前已经稳定运行一年,扩容到单集群1W+理论上没有问题,这里暂不细说;
而运营与运维平台,在调研了市面上已有的开源产品后,我们决定自己从头研发,因为已有的包括Ambria等优秀的软件,在我们大规模平台的场景下支持得并不好,这里也暂不细说;
比较头痛的是数据开发与服务平台的技术选型;

选型

首先,我是非常不赞同上来就自己重新造轮子的,我们人力资源是有限的,整体技术水平也是处于学习阶段,并且时间紧张。放眼望去,已有的数据开发与服务相关的工具还是蛮多的,比如Apache Zeppelin,Apache Livy,Hue等等我们都有用过,我们也曾经基于Apache Livy封装研发了一个作业开发打包提交的工具。但是,这些工具还是相对比较割裂的,因为对于用户来说,如果各个功能都是非常割裂的话,用户体验是比较差的,为了提升用户体验,也为了增加大数据平台的安全性,我们希望能打磨一款能“ 统一作业提交入口的,一站式的大数据开发与服务平台”,在调研了业界众多产品后,我们最终选择基于WDS开源社区的开源产品进行打造,原因如下:

  1. Linkis满足了我们 统一入口 的想法,linkis本身从设计上就是为了统一入口而设计的,并且已经经过了微众银行自己内部业务的验证,统一入口能够屏蔽底层的复杂性,且保证持续智能优化的可能性;并且Linkis对资源的管控非常细粒度,这是更加安全可控的;
  2. DSS满足了我们 一站式数据开发与服务 的想法,DSS本身是可扩展的,并且工作流开发与底层的具体调度是解耦,这为我们未来的想法提供了很多可能性;
  3. 包括其它Exchangis、Schedulis……等等组件都是我们非常需要的,并且集成地很好;
  4. 完全基于Apache 2.0的协议完全开放开源,并且开源社区非常活跃,现在光微信群规模成员就已经到了接近3000人,这基本涵盖了国内想做或者使用这一块的大部分人了吧;
  5. 社区的发起人员以及维护运营的人员也是非常open,非常乐于助人,我们也是被这个氛围所打动,希望我们也能参与进来,一起把社区向开源开放的氛围逐步维护起来;
    所以最终,我们选择了基于WDS社区,针对我们的需求联合共建,打造大数据开发与服务平台,代号鲁班。
    应用

与基础能力平台的整合

首先,我们把linkis与我们自己的大数据基础平台进行了整合适配,由于Hadoop与Spark等本身向下兼容性是比较好的,所以在适配Hadoop3.2和Spark3.0期间,并没有太多要大改的地方,但是还是改动了一些,需要注意的是Spark3.0以后只支持Scala2.12,要用scala2.12来编译与spark相关的包,还有就是spark3.0后有一些API会有变动;
也做了一些二次开发,一些已经贡献到社区,暂不细说;
我们内部也会定期组织源码学习与分享活动,暂不细说;

支撑内部的经营分析项目

后面我们将大数据PaaS平台应用于内部的经营分析项目,该项目的目的在于收集我们所有的数据,然后用大数据的方法进行分析,来为领导层、市场部、财务部、销售部门等等提供决策分析;
在内部支撑的过程中,最重要的不仅是技术,更是内部业务数据团队的支持。虽然DSS这一套总体是比较稳定的,但是在适配或搭建的过程中,或多或少总会遇到一些问题,而这时候,数据团队的理解和支持对我们平台团队来说是非常重要的。在我们共同的努力下,内部数仓项目的数据团队基于鲁班的使用,极大地提升了数仓建设的开发效率。当然,在内部数仓团队的深度支持下,我们也发现了很多之前没有发现的隐藏bug,也为我们以及社区提了很多宝贵的建议,我们也将长期持续支持;
这里给我们的启示是,新平台的推广,真的需要业务侧与数据侧的理解与支持,以及持续的反馈,最终才能达到共赢;
image

核心大平台的应用与升级

我们内部有一个规模非常大的老平台,我们最近一直在进行平台的迁移工作,将商业版CDH平台的业务逐步迁移到新建设的大数据平台上,其中包括数据迁移、脚本从hive升级到Spark3.0,以及整体数据处理架构的升级等等,而其中最麻烦的,就是如何把旧的所有业务迁移到基于DSS构建的鲁班上;
这一块是比较复杂的,因为上面有成千上万的脚本在跑,是基于商业版的调度进行调度的,而旧的调度,与业务是紧耦合的,同时也有单点的风险。由于种种原因,这一块一直都没有动,直到平台迁移其它部分搞得差不多了,我们才准备回过头来看看如何处理这块难坑的骨头;
这一块我们的思路如下:

  1. 将旧调度的DAG,通过代码的方法,自动化地改为DSS自带工作流的DAG的格式;
  2. 将所有调度的脚本,都同时在测试环境原封复制一份,然后把所有的执行命令注释掉,只用虚拟的print语句来打印;
  3. 在测试环境寻找几十个具有代表性的DAG,然后进行测试,观察比对,来验证DAG转化的正确性;
  4. 然后逐步在生产环境完成调度任务的迁移,由于这一块涉及到了生产,因此我们比较谨慎,将长期持续做这件事情;
    调度升级只是核心大平台应用的一步,让用户逐步通过鲁班来统一入口使用,是一件漫长的过程。为了满足用户的定制化需求,我们开发了一个新功能,就是把大数据平台的客户端放到了K8S之上,然后把它引入到鲁班里,这样的话,每个用户就可以在页面上申请自己专属的安全的客户端,来进行一些目前鲁班不支持的功能,同时又能满足统一入口的要求;

某重要的民生项目

我们同时也会承接一些重要的外部项目,我个人认为这是非常有意义的,能够让全国各地的人们享受大数据AI带来的便利,这是让我们整个团队的兄弟们都觉得倍有激情的一件事情,尤其当一个项目做到朋友家里那边去的时候,跟亲人朋友讲起来你现在用得这个就是我们在做得,也倍有成就感;
我觉得,作为国家新基建号召的一员,我们作为央企,更要把大数据AI能力赋能到那些偏远的地方,我就是偏远的地方来的,高铁修到我们家门口的时候,我是能明显得感觉到国家的力量,我觉得这个比收入更有成就感,简单附图如下:
image

把鲁班搬到公有云上

我们在鲁班内部应用的过程中,由于有着不错的反响,领导提出了是不是可以把鲁班改造成公有云版本,来支撑我们的天翼云诸葛AI平台。经过讨论后,当即就拍板做,改造前后花了2个月的时间,目前准备上线。
天翼云作为规模全国前三(也有说法是前四)的云服务商,也作为国家队的一员,在全国各个省都有很大的资源池,具备丰富的硬件资源,因此未来将大数据搬到云上是必然的趋势。只不过一直想着等权限这一块成熟了,产品化搞好点,明年再抽出时间来做,不过本着用户是上帝的原则,我们也就加班加点直接上阵了;
为了将鲁班上公有云,我们做了很多事情,这里简单列一下,后面会有同学写文章详细写这一块:

  1. 对接天翼云的单点登录做了一些改造;
  2. 安全全面升级,我们安全团队测出来了几百个安全漏洞,我们一个一个都改了,包括http升级为了https;这一块后续我们有空了都会提交给社区(最近年底实在太忙了);
  3. 域名收敛工作,现在的DSS的域名是不收敛的,这样也会有安全隐患,因为要对外开通很多很多端口,所以我们对域名进行了收敛(后续也会贡献);
  4. 用户资源自动开通;我们专门开发了一个独立的服务,使得用户的资源可以自动开通或者销毁,包括Hadoop、hive、以及dss中各种用户等,当然这一块最好是需要底层的Hadoop支持定额的容量分配;如果社区里其他伙伴也有类似的需求,我们后面有空了也会将它整理然后贡献开源出来;
  5. 为了使得部署更加方便,我们将自动化部署脚本改造成了Ansible脚本的形式,便于分布式部署,这一块也在各种场景下验证,持续优化迭代;
  6. 当然还有蛮多事情,总之,现在放到公有云上只是第一步,后面还有很多地方需要持续迭代;

天翼云诸葛AI平台发布

在2020天翼智能生态博览会天翼云论坛上,我们发布了天翼云诸葛AI开放平台。对于各行各业绝大多数用户来说,他们需要的不是一个大数据平台,大部分人都不会用,而是真正能帮上用户解决一个个痛点问题,因此大数据和AI是不分家的,天翼云诸葛AI平台中的大数据平台部分就是我们支撑的,同时我们也支撑了AI算法的底层算力,比如 GPU0.1颗粒度调度等,这里暂不细说;
上图如下:
image

附一个新华网新闻链接:http://www.gd.xinhuanet.com/newscenter/2020-11/10/c_1126722071.htm

后续展望

我们后续希望基于WDS继续优化鲁班,要做得事情非常多,简单列出如下:

用户友好度提升

我们发现,现在的鲁班,对于不懂大数据开发,或者只了解简单的数据分析,不懂大数据的人来说,是不太好用的,会感觉比较乱,是新手不友好的,所以我们内部拉起了一个突破光明顶的小项目,目的是从用户的角度,提升产品的新手友好性,增加一些新手引导,给用户一个更加丝滑的使用感受,这一块后续也希望跟社区沟通,一起提升用户的友好度;

多租户问题

现在的鲁班,对于多用户的管理这一块支持并不是很好,所以这一块也希望跟社区沟通协同开发,一起把它持续设计迭代地越来越好;

调度升级

目前的调度能力,对于我们内部动辄成百上千个节点的DAG这种复杂场景来说是不太能满足的,比如全局展示,重跑等等,这一块我们还会继续调研研发;

数据治理相关工具

我们现在数据治理相关能力比较欠缺,目前开源的一些其它产品整合进来感觉怪怪的,所以还是需要跟社区一起探讨,优化,开源,共同验证,在先进的方法论的指导下,逐步迭代经得起考验的数据治理工具;

数据集成能力的完善

现在Exchangis已有的数据接入能力,是不能够完全满足我们所有的场景的,我们将开发API方式的数据接入,流式数据的接入能力,并且提供在公网下能够安全传输的能力,然后经过验证后,持续反馈到社区;;

其它社区已有工作的跟进与参与

比如支持Presto、ES、Kylin等等能力,以及Linkis1.0,DSS1.0等的强大能力,以及Linkis on K8S等的强大能力,这些都是我们非常感兴趣,将持续跟进的,基本上有发版后我们第一时间就会验证。如果后面有机会了,我们也希望参与其中,在大佬统一的规划下,为社区贡献一份自己的力量;

关于开源

最后,简单聊一下对开源社区的看法:
首先,我个人是非常热爱开源社区的,并且一直在仰望各位大佬,包括Hadoop、Spark等项目,我也常会去它们社区看看,学习学习。我认为开源社区的存在,极大地推动了人类科技的进步,像Linux、Hadoop、K8S、TensorFlow等等开源项目的核心人才,在我心中对人类的贡献,其价值是远大于喜欢打架的总统的;希望能多写点代码,被存储在北极的冰川下。
其次,开源的力量是势不可挡的。Linux开源,大家后面开发都用Linux,一定程度对Unix造成了影响,Hadoop、Spark、K8S、TensorFlow等等开源后,逐步也成为了大家使用和迭代的标准,极大地推进了相关领域的发展,顺应着开源软件潮流的公司,都收益良多。现在无论是国外的 Google、Facebook、亚马逊、IBM,还是国内的腾讯、阿里、华为等等,都在积极的拥抱开源。连曾经闭源的代表微软,都收购了 Github,积极地加入开源队伍。我们技术起步较晚,所以更要积极地加入开源的队伍中去,拥抱开源;
大数据开发与服务平台这一领域,目前国内微众发起的WDS社区是做得最好的,无论是技术架构层面还是社区运营层面。我们天翼云目前对于开源软件更多是单方面使用,贡献还是比较少的,一个是实在是忙没时间提交太多代码,一个是真的目前还没啥能拿的出手的特别亮眼的东西。希望后面能有一定的时间,我们能积极的参与到开源项目当中,从使用开源软件进步到反哺开源社区的全新阶段。也希望有更多的公司加入WDS社区,一起使用迭代,多多交流,只有交流使用多了,才会更加稳定,有更好的设计以及理念,才会越来越懂用户,我为人人,人人为我,大家共同受益;
最后,我也在思考一个问题,就是大数据开发与服务平台领域未来将会有很多很多好用的工具开源出来,包括个人开发的以及公司开发的,我们电信的一个优势是有很多的需求和场景可以迭代验证,而作为一名开发工程师,我是非常尊重软件的原创者的,简单的拿来主义让我有点不好意思。作为天翼云的一员,我也会积极思考,以后如何建立一个良性循环的生态,积极引进这些优秀的开源软件,与它打磨共建,赋能千行百业,为用户创造价值的同时,让开源软件的开发者,能从中获得更多实打实的收益。

最后,如果对大数据平台建设感兴趣的做事积极主动的小伙伴,或者对业内常见的大数据产品研究地比较透彻的产品小伙伴,欢迎联系我,加入我们团队,一起把大数据平台搞起来,把开源的代码搞得越来越稳定,越来越优秀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant