* 关注公众号,后台回复关键词【大咖】,获取视频直播回放。
策划 | 褚杏娟
来源 | InfoQ
InfoQ《大咖说》本期嘉宾:智领云联合创始人兼CEO 彭锋博士,拥有20余年软件开发,大数据及云计算经验,曾任Twitter大数据架构师及技术带头人、ask.com工程总监。以下根据直播内容整理,有不改变原意的删减,完整内容可查看回放视频。
如今,企业都面临着日益增长的数据量、各种类型数据的实时化和智能化处理的需求。此时,云原生大数据平台的高弹性扩展、多租户资源管理、海量存储、异构数据类型处理及低成本计算分析的能力,受到了大家的欢迎。但企业应该如何做好大数据平台的云原生改造和升级呢?
InfoQ:云原生技术体系具体都包括哪些技术类别?像 IaaS、PaaS 和 SaaS 跟云原生有什么关系?
A:虽然“云原生”近几年才火起来,但是业界在 2000 年初就开始做了。我 2005 年博士毕业加入 ask.com 后也是做云平台,当时的团队叫中间件团队(middleware)。Amzone 最开始做 IaaS 的时候还没有云原生的概念,先行者是制定了云原生 12 原则的 Heroku,它当时允许 APP 直接发到网上而不需要管理服务器,这也是早期的云原生应用。当时也没有现在很火的 K8s,所以云原生绝对不只是 K8s。容器的概念也是在 Docker 之前就已经出现,所以容器也不仅仅是 Docker。
云原生以前的门槛很高。我们在 Ask 的时候,几乎都是博士学历的人在做云平台,在 Twitter 的时候,基本上也没几个人会用。云原生概念从开始到现在的普及,大概用了 20 多的时间。其中最关键的是容器、微服务和声明式 API, 大家常说的 CI/CD 其实并不是云原生架构独有的。云原生关键的是面向资源编程,向系统申请需要的资源后就不需要管调度的细节了,应用的自动发布、容错,迁移等都是系统负责。面向资源编程,对整个分布式系统的开发、管理和易用性都有很大的好处。
InfoQ:大数据平台的云原生改造会把这些技术都运用起来吗?
A:一定是的。实际上,阿里做飞天的时候用的就是云原生技术。Hadoop 有三大组件:文件系统 HDFS、计算引擎 MapReduce、资源管理器 Yarn。现在 MapReduce 基本被 Spark 取代,作为存储的 HDFS 还有不少的应用,Yarn 的地位比较尴尬,因为它跟 K8s 做的都是资源管理的事儿。所以我觉得 MapReduce 和 Yarn 马上就要被淘汰了,像 Spark 以及大部分的数据应用现在都可以直接在 Kubernetes 上跑,所以大数据系统就并不再需要 Yarn 了。对于 HDFS,则会有一个云原生改造的升级。
Hadoop 本来有个对象存储系统 Ozone,现在 Ozone 被单独挪出去,不在 Hadoop 体系了。Hadoop 原来的这一套体系,大概率在三到五年后就会被完全被淘汰。这个改造是不可避免的,基于原来 Hadoop 生态体系的大数据平台一定会迁移到云原生平台。
InfoQ:Twitter 什么时候开始做云原生大数据平台的?当时为什么要做?效果如何?这为国内大数据平台带来哪些思考?
A:很早,大概 2011 年的时候。Mesos 上生产后,除了 Hadoop,其他所有应用都在 Mesos 上跑。当时,Mesos 就能支持 Twitter 内部八千多台机器的集群。Mesos 有自己的管理器,其实是走在 K8s 前面的。
我们当时为什么觉得这个很厉害?因为以前要发布一个系统,先得去申请机器、买机器,机器买回来后安装,装完后还要去测试。即使测试好了,也还要担心几个系统之间的第三方库有没有冲突。
大数据系统都是开源的。开源有个好处,就是便宜。开源不好的地方就是各个系统之间没有控制,两个开源系统依赖的第三方库有冲突。比如开源项目 A 用的是第三方库 C,另外一个开源项目 B 也用第三方库 C,但是两个项目依赖的 C 版本不一样,安装在同一个机器上就经常出问题,这是一个技术性的问题,困扰了大家很多年。
有了云原生功能后,每个应用都是自己的容器。我们当时用的还不是 Docker,是 universal container。这是 Mesos 自己做的一个容器,好处就是容器化、隔离,不会担心大家互相影响,应用可以实现秒级发布,对生产力的解放是革命性的。所以云化是必然趋势,大数据平台也遵从这样的趋势。
以后做的软件如果不是云原生的,百分之百不会有人用。因为,现在所有的新软件都用云原生的方式运行,老的软件就慢慢地跟不上了,不能说再单独搞个集群。所以,不能在云平台上跑的应用一定会被淘汰。
InfoQ:现在使用云原生大数据平台的主要是哪些类型的企业?企业数量有怎样的变化?
A:主要是互联网和大厂。现在的云原生大数据平台还不成熟。相比之下,企业更容易招到熟悉 Hadoop 技能的人。其次,这些大数据组件的云原生成熟度还不是特别高。Spark 今年 3 月份才具有一般可用性 (General availability,GA) ,并发布了 3.1 版本。Kafka 在今年 5 月份宣布 Kubernetes GA 但还没有开源。这两件事说明了现在主流的大数据组件厂商都在往 Kubernetes 上靠。这里就涉及到的 Spark、Hive 等核心组件以及他们依赖的相关组件都要升级,系统层面的升级对一般企业来讲是比较麻烦的。
国外的像 Twitter、Uber、Airbnb 等都在做这个事情,但他们的解决方案有的不是很理想。比如 Uber 是把整个 Yarn 挪到了 Kubernetes 上,这不是特别好,我觉得应该把 Yarn 去掉,其他组件直接云原生化,比如类似于 MongoDB 的组件已经逐渐有 Kubernetes 发布版本出来。
综合起来的情况是, 现在大家都在推进,但还没有到特别成熟的阶段。
InfoQ:大数据平台目前存在的哪些问题?为什么云原生技术可以解决这些问题?
A:现在的大数据平台能解决基本的数据需求问题,但还有两个很大的问题需要解决。首先是资源管理。Yarn 的资源管理的粒度做得不是特别好,在多租户隔离和资源抢占上都能力有限,类似于 Spark 的应用没法混排,没法像云原生那样做到存算分离,计算和存储不能够充分利用每个节点的资源。最关键的是现在其他应用慢慢都不会为 Yarn 去做升级了,后续运维和升级会是问题。
其次,并不是说现在的大数据平台解决不了现在的问题,但是社区和生态的迁移已经是很明确的了。例如刚才说到的,像 MongoDB 都可以在 Kubernetes 跑,以后可能为了 Hadoop 就得单独搞一个集群。但如果用云原生的存储,就不需要单独一个集群了。所以,任务混排、资源隔离以及对新应用的支持等都是 Hadoop 体系现在比较大的硬伤。
InfoQ:具体实践中,云原生技术是如何针对这些问题进行改造和升级的?开发人员应该如何做技术选型?
A:现在所有的资源管理和编排可以依赖于 Kubernetes,企业可以专注在自己的业务逻辑和管理上。比如,现在容器存储接口(Container storage interface,CSI)越来越成熟,只要存储系统满足接口要求,那么无论是哪家提供商的应用就都可以访问。动态的依赖、发布和容错都可以依赖 Kubernetes 来做,这比要同时运行两个不同的集群要好很多。
另外,原来的 Hadoop 应用大概率不需要重写,因为它现在有专门兼容原来 HDFS 的存储,将兼容数据拷贝到 HDFS 兼容的存储上后,应用同样可以运行。现在我们要做的是,让 Hive 直接运行在 Spark 上、Spark 运行在 K8s 上,如此 Hive 的程序也不需要做大量的迁移就可以直接挪到 K8s 上,这样就能实现 K8s 集群的平稳迁移。
InfoQ:大数据平台做云原生改造的技术难点是什么?
A:技术难点还是不少的,主要还是现在的大数据组件对 K8s 的支持还不是特别成熟,这是开源组件的问题。我举个例子。Spark 本身也依赖于很多别的开源组件,这些组件有的还没有支持 K8s,支持 K8s 组件中的版本也不一样。每个开源组件都号称自己支持 K8s,但把所有这些支持 K8s 的组件放到一起时,就会发现各种各样的版本存在冲突。还有一个问题就是 K8s 的升级太快。K8s 现在基本上每个季度升级一次,这也导致底下每个大数据组件支持的 K8s 版本不一样。总之,当前整个生态还不能协调地支持 K8s。
虽然很多大数据产品厂商都在做 K8s 支持,但在生产中还属于实验阶段。大家都还是处于刚刚起步的状态。从 K8s 自身来说,K8s 对有状态应用的支持和 CSI 存储方面的支持这两年也才完善起来,这两点是最大的技术难点,这也是大家最近一两年开始往 K8s 上迁移的原因。
InfoQ:开发人员怎么做技术选型?
A:我觉得,如果企业现在已经有 Hadoop 了,如果想未雨绸缪做迁移,那么可以开始尝试。一些不重要的业务可以先在云原生体系里跑起来,逐渐完善其稳定性,然后再逐渐扩展云原生集群。这个过程中,企业可以借用 K8s 管理体系不断完善流程。我不建议马上把 Hadoop 全搞过来,但是至少有一个测试集群,做好业务流程的验证。
如果是新的企业,我强烈建议直接在 K8s 上搭建集群。因为新企业集群一般规模不会太大,使用云原生支持的大数据组件一般不会有太多问题,而且会很好用。如果先用 Hadoop 以后再迁移的话就会很麻烦。现在用云厂商的产品搭建一个云原生的大数据平台是很快的。
InfoQ:除了技术之外还有哪些挑战?
A:我觉得主要还是人才方面的挑战。作为一个技术人员要能发现行业趋势。倒不是说要追逐最新的技术,但是如何选择在合适的时间选择合适的技术很重要。我前两天也提到,如果面试中公司还在问 Hadoop 的问题,那么基本可以认为这个公司的技术有点过时了。
以前 DevOps 有专门的运维工程师,开发人员要自己掌控从开发、测试、发布的整个流程。以后,数据科学家和数据分析师大概率可以自己掌控数据探索、数据分析和数据展示的这一整套流程。以前的 ETL 工程师可能就会更加局限,企业对他们的需求量变得更小。企业招人可能会更多地倾向数据分析师、数据科学家,因为底层已经标准化了。
从客户那里也感觉到:数据分析师缺,懂业务的分析师也缺,既懂业务又懂技术的数据分析师更缺。现在很多公司还处在建设大数据平台的过程中,可能体现的不明显。但随着越来越标准化,大数据运维的使用门槛会越来越低,企业会更愿意使用云原生的大数据平台。
InfoQ:大数据平台的云原生改造,主要涉及哪些方面?
A:云原生改造中,组件是一部分,但还有其他工作,如 CI/CD、日志管理、用户管理、监控等。大数据领域里还有数据质量、元数据等都需要 K8s 环境下的管理系统。K8s 带来的好处就是现在所有应用都以同样的模式发布,使用同一套资源管理体系。但像元数据管理、数据质量管理、工作流调度等就不是 K8s 提供的了。
之前,Spark 在 Yarn 上面跑,ETL 要到 Hive 上跑,SQL 要在 MySQL 里跑,现在这些都要在 K8s 上,K8s 变得非常重要,这也需要声明式 API 做整个集群管理。
现在,很多硅谷公司把 ETL 改成了代码管理,Airflow 把调度管理也变成了代码管理。所以,现在的一个趋势就是 K8s 是把集群管理全部变成了代码管理,大数据平台迁移到 K8s 以后也可以做代码及流水级代码的管理,也可以用 Git 来管理。所以,大数据平台的云原生改造不仅是组件,开发和管理形式也会发生很大的改变。
InfoQ:有没有传统大数据平台与云原生大数据平台的对比案例,可以详细介绍下?
A:Snowflake 就是云原生大数据平台最典型的例子。Snowflake 自己没有存储也没有计算,它的计算能力用 K8s,存储能力用各个云厂商的,它在中间是动态的,通过 K8s 给用户发送一个专有的 MPP。
绝大部分云原生系统都可以做到存算分离,像 CSI,我在上面的应用可以杀掉,CSI 存储还在那,天然地就做到存算分离。应用没有访问量时就叫停,有用户使用时再分配资源,这样做到错峰资源、弹性扩容。一个资源池可以统一分配资源,提高了资源利用率、管理效率和整个运维效率,让系统运行更合理。十几年前,一个略大的集群要几十个博士才能搞定,现在一个本科生就可以,所以生产力的提高要靠标准化。
InfoQ:DataOps 做云原生改造的必要性在哪?
A:DataOps 做云原生改造主要是因为两个方面。首先是刚才说的标准化,DataOps 需要管理所有组件,但如果组件不是标准化的,那么这个事就很难做。其次,云原生带来了各种产品,如 Spark,Flink 等标准的统一。DataOps 包括五个方面:数据开发及 CI/CD、自动化调度、数据质量、数据门户、安全和审计合规,这些都要在云原生标准化基础上才能实现。
往期《大咖说》精彩回放:为什么说数据管理的下一步是DataOps | 内附视频回放
#智领云公司简介#
武汉智领云科技有限公司成立于2016年8月,专注于云计算、大数据领域前沿技术的研发。公司创始团队成员来自于推特(Twitter)、苹果(Apple)和艺电(EA)等硅谷知名企业,是硅谷最早一批从事云计算和大数据研究与实践的技术专家,拥有十多年的云计算、大数据系统的系统架构和系统开发经验。公司作为拥有云计算、大数据领域核心技术的高科技企业获得了来自硅谷和国内知名投资人和投资机构的投资。公司于2019年4月获得线性资本数千万元pre-A轮融资,2020年7月获得由金沙江联合领投、线性资本跟投的数千万元A轮融资。
公司为企业级客户提供以云原生DataOps为底座的大数据平台数据中台/大数据平台数据中台系统解决方案;帮助企业搭建数据和AI中台实现云原生DataOps,轻松打造业务数据能力闭环,掌握全面、及时、更多维度的业务现状,提升数据驱动应用的迭代和发布速度;实现系统资产(人/资源/数据/应用) 在同一系统中的统一管理,建立数字化运营体系,并最终完成数据驱动的数字化转型。
公司在能源、教育、医疗健康、物联网、金融等行业同国内外很多知名企业和上市公司建立了合作关系,包括:D2IQ、埃克森美孚(中国)、一汽集团、极狐(GitLab中国)、南瑞信通、万达信息股份、中亦安图、深圳智宇、长江云通、湖北楚天云、万方数据股份、天喻教育、广州畅驿、上海和今、南京赛信等。公司与合作伙伴在多个领域中展开紧密的合作,充分利用各自的优势,共同为企业客户提供更有价值的云计算和大数据产品和技术服务。
- FIN -
更多精彩推荐
👇更多智领云科技详细内容,点击“阅读原文”