1、微信云原生大数据平台构建及落地实践腾讯-微信技术架构部/涂小刚主要内容一、大数据上云概述一、大数据上云概述1.统一编排2.Pod 设计及大数据配套能力3.计算组件云环境适配二、大数据上云基础建设二、大数据上云基础建设三、稳定性及效率提升三、稳定性及效率提升1.K8S 集群稳定性与弹性配额2.可观测性与智能运维1.为什么大数据要上云2.微信大数据平台架构演进1.1.为什么大数据要上云为什么大数据要上云一、大数据上云概述一、大数据上云概述基础设施的变迁 物理机-云主机、云盘、云网络 存算一体-存算分离 单一集群环境-多种集群环境(专用、离在线混部、GPU)业务对平台个性化需求 业务灵活定制计算框架
2、 自研或基于tensorflow、mpi 等二次开发 支持多种计算模式 CPU 计算 GPU 计算 CPU&GPU 混合计算业界大数据资源平台发展演进云时代IDC时代Why K8S?灵活高效的容器编排、插件扩展能力计算存储分离,互不影响,各自按需弹性扩缩容大数据及 AI 框架几乎都原生支持,无需侵入式改造,可以灵活适配运维成本低,应用层无需要运维介入2.2.微信大数据平台架构演进微信大数据平台架构演进一、大数据上云概述一、大数据上云概述早期微信大数据平台架构自研资源调度平台SparkHadoop MRTensorFlow自研存储/HDFSWeb/API优势:优势:自研调度和存储,自主可控 充分
3、利用在线闲时段资源不足:不足:各模块组件高度耦合 侵入性对接开源计算框架,开发迭代慢 运维成本大资源调度任务调度存储计算组件ShellPythonPyTorchMPI最初是为了在线微服务设计,当时还没有k8s微信云原生大数据平台架构SparkFlinkTensorFlowMPI任务调度原子级框架PyTorch虚拟机云盘云网络IAASTKE(K8S)PAAS大数据专用HDFSCOS离/在线混部工作流调度MRDistCPSpark SQL扩展组件业务定制算力GPUFlink SQLJobAPI运营管理BI/画像/机器学习/AB实验应用平台 资源编排基于 K8S,多种集群环境 打通适配多种分布式存储
4、 云原生适配开源主流计算框架 自研通用 Job 框架,支持无状态批处理 不再有Hadoop,相关组件使用Spark实现 集成丰富的功能组件并支持业务扩展 高效的任务调度 资源管理&弹性资源&智能运维Pulsar灰色部分为云上设施和能力since 20201.1.统一编排统一编排二、大数据上云基础建设二、大数据上云基础建设业界计算框架接入 K8S 方案不统一 SparkSpark Spark on K8S Native:框架自带,版本要求=2.3 Spark Operator:开源生态 FlinkFlink Flink on K8S Native:框架自带,版本要求=1.12 Flink Ope
5、rator:开源生态 TensorFlow/PyTorch/MPI TensorFlow/PyTorch/MPI KubeFlow Training OperatorsNative VS OperatorCRCRDControllerNodeKubernetesMasterKubernetes APINodeKubernetesMasterKubernetes APICoremasterPodNativeOperator框架直接与 api server 交互,控制 pod 的启停优点:可以根据计算特点实现动态申请资源缺点:提交端要负责任务生命周期管理、权限管理等workerPodworkerP
6、od自定义crd,声明式接口,由 controller 管理生命周期优点:对提交端更友好,只管提交和同步状态缺点:不能实现动态分配(可以跟native结合使用)如何接入?任务提交为了简化提交端逻辑,所有框架的应用(作业)通过 Operator 声明式 API 接入CRCRDControllerNodeKubernetesMasterServiceWorkloadsDeploymentStatefulSetsJobPodConfigMap只需要负责提交以及状态跟踪不同框架 case by case 接入 任务提交API ServerSparkOperatorFlinkOperatorTensor