开发者学堂课程【大数据架构&运维:大数据架构&运维篇(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1204/detail/18171
大数据架构&运维篇
内容介绍
一、服务团队介绍
二、大数据产品介绍
三、大数据运维问题案例
一、服务团队介绍
首先是服务团队的介绍。金融 TAM 大数据专家服务团队是通过金融行业大数据专家服务 解决方案,帮助数据中台客户解决大数据的告警对接、容量管理、性能调优、业务稳定性治理、环境账号权限体系管理、数据迁移、运维巡检、变更管控、性能测试、故障应急、容灾演练以及护航保障等大数据 SRE 体系建设需求。为超过十多家金融机构客户提供专业的大数据 SRE 体系建设服务。支持客户重点打造具备生产支撑、应用支持、平台治理、业务护航保障和技术指导能力的大数据专家团队。
团队服务的主要的使用场景包括大数据的业务告警对接、大数据的容量管理、大数据的 SRE 体系建设、运维赋能、技术指导以及解决方案的方案咨询。目前平台主打的客户画像有大型的保险公司、大型银行以及证券、基金公司。其中的标杆案例有太平洋保险、四川农信、广东农信、贵阳银行、瑞士再保险以及诺亚财富。
二、大数据产品介绍
其次是阿里大数剧产品 MAX computer + data work 的产品介绍。 MAX computer 大数据计算服务,原 ODPS 是基于飞天分布式平台, 由阿里云自主研发的海量数据离线处理服务,提供针对 TB/PB 级别数据的,对实时性要求不高的批量处理场景。主要用于日志分析、 机器学习、数据仓库、数据挖掘、商业智能等领域。
(1). MAX computer 具有分布式架构,规模可以根据需要进行平行扩展。
(2). 自动存储容错机制,保证数据高可靠性。
(3). 所有的计算在沙箱中运行,保障了数据高安全性。
(4). 以 RESTFUL API 的方式提供服务,目前 MAX computer 提供了 Java 和 Python 的 SDK 。
(5). 支持高并发、高吞吐量的数据上传下载。目前通过 turn down load 和 turn off load 等可提供高存储量的数据上传下载。
(6). 提供离线计算、机器学习两类模型及计算服务。
(7). 支持基于 SQL 、 Mapreduce 、 Graph 、 MPI 等多种编程模型的数据处理方式。
(8). 支持多租户,多个用户可以协同分析的数据。
(9). 支持基于 ACL 和 policy 的用户权限管理,可以配置灵活的数据访问控制策略,防止数据越权访问。
其中 MAX compute 核心的抽象概念和传统的结构化数据库 Mysql 类似。 project 类似于 database 或者 schema ,主要是用于用户 隔离和访问控制的主要边界。 相对于结构化数据 Mysql ,通过 table 还有分区 partition 等进行一个分区。对于非结构化数据是通过 volume 来进行存储。 对于使用的文件, UDF , 或者使用的 JAR 包和 Python 脚本,可以通过 UDF 还有 resource 来进行存储。比如用户想查看项目空间下的 JAR 包和文件资源,可以通过 list resource 来查看。对于提供的飞天集群的服务器进行维护,可以通过 job , Instance 表示抽象可执行实体和运行实例。 tunnel upload / download 表会话, event 是作用于表删除和修改等事件的追踪和 user 或 role ,用于管理用户对 Project 内实体的访问控制和授权。前面说到了和 resource 来进行存储。
①盘古
盘古是一个分布式文件系统。当一个客户( client )的请求,系统会首先会聚到盘古 master ,对数据进行校验和寻址后,返回到一个 chunkserver 数据块的地址。 client 会和 chunk server 进行读写的操作,从而拉取真正需要的块数据。在左下角第一个和第二个块中都拥有一个绿色的节点,而第二个和第三个块中都拥有一个紫色的节点。 其实是用户的数据都是一式三份保存在 chunk server 上的,可以保证数据的高安全性和高可靠性。在一台物理机,一台 chunk server 的节点处于 down 秒或者不可连接的状态时,还会保留其他的数据。盘古是一个分布式的文件系统。 盘古系统设计目标是将大量通用机器的存储资源聚合在一起,为用户提供大规模、高可靠、高可用、高吞吐量和可扩展的存储服务,是飞天平台内核中的重要组成部分。在盘古系统中,文件系统的元数据储存在多个主服务器 master 上,而文件的内容存储在大量的块服务器 Chunkserver 上,并一式三份保存在 Chunkserver 上的。
②伏羲
飞天平台中另一个较重要的功能是资源管理与任务调度(伏羲)。当一个 client 请求任务时,会先到伏羲 master 。其中下面的4台机器如果想调用到机器上的 CPU 、内存和 JOB 资源,都需要在机器上去装有伏羲的 agent 的代理进程。4台机器上都装有一个粉红色的伏羲 agent 。下面是有 app master 和 app worker ,并且有两种颜色。其实是一个 master 和 master 的汇报机制。伏羲 master 会把每个任务在其中的伏羲 agent 的机器上拉起一个 app master的节点, app master 在伏羲 master 申请到资源以后,获取其他的伏羲 agent 的机器上去启动app worker ,并且APP master 会负责跟踪任务的开始,结束运行状态。而真正工作的 app worker 会实时的和 APP master 进行任务状态的交互。 一个绿色的块上的app master 在第二台机器上启动了两个 APP worker 的绿色节点, 并在第三台机器上又启动了一个 APP worker 结点。而右边的黄色的 app master ,只申请到两个节点,分别在第4台和第3台机器上启动了各一个 appwork 的节点。伏羲是飞天平台内核中负责资源管理和任务调度的模块,同时也是为应用开发提供一套编程的基本框架。伏羲同时支持响应速度在线服务和强调处理数据吞吐量的离线服务。在伏羲中,分别简称为 fuxi job 和 service Job 。伏羲中运用了 master 和 worker 的工作模型。其中 master 的负责进行资源申请和调度,为 worker 创建工作计划并监控 worker 生命周期。 worker 负责执行具体的工作计划,并及时向 master 的汇报工作状态。此外, master 支持多级模式,即 master 可以隶属于另一个master 之下。
③MAXCompute 系统架构
在上图中的 max computer 具有4层,分别有客户端层、 接入层、控制层和计算与存储层。客户端层顾名思义是通过 resetfui API , Java SDK 和 Python 的SDK 和 data work ,或者通过 CLT , OTS 的客户端等去接入 maX computer 。通过 API 去提供一个接入的服务, api 对应的是整个 SLB 的服务,会挂载多台 front node 平台,去进行 LVS 的负载均衡,并且提供一个 HTTP server 的服务。 在控制层也是 max computer 较核心的一个层面,由 worker 和 schedule 、 executor 核心组件来构成。并且 worker 是可以扩展的。除了 schedule 不能扩展以外, executor 也可以同样的横向拉齐的扩展。 Meta 元数据 ots ,其涉及到另外一款阿里 云的产品 ots 。证明了 Mysql 的元数据是存放在 ots 中。如果 ots 存在问题,会影响到 Mysql 的一个整体的稳定和可用性。当任务在控制层或逻辑层 worker 通过了 worker 、 schedule 、 executor 的编译后,作业就会有计划的提交到计算与存储层。从而对任务进行计算。作业的基本流程,当用户提交一个作业请求时,接入层的 web 服务器查询,获取已注册的 worker 的 ip 地址, 并随机选择其中的某些 worker 发送 API 请求。 worker 将请求发送给schedule,由其负责调度和流控。 executor 会主动轮询 schedule 的队列。若资源满足条件,则开始执行任务,并将任务执行状态反馈给 schedule。伏羲在接到 executor 的作业请求后,在满足条件的情况下会到计算层拉起 worker 。在控制层中每一层次都会进行扩展,逻辑层中三个重要的角色 worker 、scheduler 、 Executor 。 worker 作为作业接收器。处理所有的 restful 请求,包括用户空间管理、资源管理、操作、作业管理等。对于 SQL 、 MAPREDUCE 、 GRAPH 等启动 FUXI 任务的作业,会提交到 schedule 进一步的处理。 schedule 是作业调度器。 schedule 负责 instance 的调度,包括将 instance 分解为 task ,对等待提交的 task 进行排序,以及向计算机集群伏羲master 询问资源占用情况以进行流控。当伏羲的槽位满时应停止响应 executor 的 task 申请。作业执行器是executor 负责启动 SQL 和 MR task ,向计算集群 fuxi master 提交 fuxi 任务, 并监控任务的运行。
④max computer 作业流程
当第一步用户提交请求,会到前端的节点 HTTP server 的 frontend 模型,经过用户鉴权,鉴定客户是否有操作 SQL 的权限。当权限符合时, 会由第3步转发请求,转发到控制层或者叫逻辑层的 odps worker 。 odps worker 去检查,并不是一个同步性申请权限或者去建表的语句。会发送一个异步执行请求到 schedule ,同时在 5.1 可以看到,还会返回提交成功, 并且定期的查询执行的状态, 最终返回查询的执行的结果。在第6步里, schedule 会进行持续化的请求加入,把作业加入作业队列,并进行调度作业。 在第 7步,提交 task 执行请求到executor , executor 会根据任务的类型和版本寻找对应的服务进程进行处理。第9步当 SQL 的子进程去编译优化 SQL 后,会提交到伏羲 JOB , 再到计算集群, 由伏羲 job 来得到最终的结果。到12步结束返回。 客户会得到一个正确的服务执行成功的流程。数据中台存在三大核心问题,数据重复存储,数据不集中,各种存储系统之间重复存储,重复计算。数据孤岛,各业务部门的数据散落多个集群里面,彼此之间数据不通,授权共享太难。数据无保障,数据质量、数据稳定性无保障,业务使用数据需承担较大的风险。 面对如此问题,解决方案是 data work + max computer ,解决三大核心问题。
下面是 datawork 四个阶段八大模块。 元数据中心和数据汇聚层。将数据抽取过来,由数据集成功能运作。 其中最具有代表的是离线数据同步,顾名思义就是 t + 1的数据采集。实时数据采集,顾名思义就是实时,还有其他的数据。比如互联网数据采集,还有元数据上报同步,比如 FTP 自动上报同步,端的采集,比如 loT 设备, b 端的数据设备。 数据研发是整套的开发流程,工作流开发,可以把整个任务组成一个 DAG 图,对于开发流程来较为友好,可以组成一个业务模板。数据表的建模,版本管理,可以看到发布的版本的数量。流式任务的开发固然是和 Blink 和 Flink 相关联的。预编译和代码仓库很好理解。类似于 Githubidea的工作开发发布管理是指标准模式下的功能点。将在标准模式下会有两个项目空间去区分测试和生产。此功能在简单模式下是没有的。调度配置是每天的离线调度,以分时日月周,包括到周级别,最小可以 支持 5 分钟维度的调度。监控运维是指工作流。协同开发是指多人的 IDE 编译。基线管理是对工作流的预警,智能监控报警可以去对外吐露一些合警,比如到钉钉或者一些邮件的形式。运维大盘可以看到任务的整体运行情况,实时分析,目前还需和快客 BH 做协作。 机器学习针对阿里大数据产品—— π 。数据治理,数据如何治理?数据从哪里来,到哪里去。因此提供了数据地图的功能成本管理、资产门户、资产报告、维表管理以及数据目录。对于数据质量来说,对于实时和离线数据的监控,对脏数据的预判,包括智能数据探查、离线实时数据、数据校验、代码规则校验、变更通知、故障预警。对于数据安全来说,数据权限,比如放开列给其他的用户使用。数据审计,可以返回查看用户是否访问敏感的数据。安全达标是和数据权限相关联,达标才能看到对应的列。数据脱敏是指如身份证、手机号等来进行掩盖。数据服务就是指通过开放共享数据服务,提供接口给第三方来调用。数据 BI 的展示,以及大屏的展示和行业的解决方案,以上构成了 datawork 的四个阶段和8大模块。权限管理,是计费和计量在公共云中使用的。而租户、账号、权限三个相关联的。先有租户, 租户里面才会有账号,账号才会涉及到权限的划分,去设有一些管理员只读账号等其他的权限。
数据集成目前可以支持 20+种数据源 其中包括了关系型数据库、大数据存储、非结构化存储、 NO SQL 数据库等,目前已经覆盖了 90% 的常用数据源,并且可以做到自定义读写插件,且支持经典的专有混合等网络环境, 对于阿里云数据库实例或本地部署,或者是公网可访问或者不可访问等各种复杂的网络条件,可做到可视化的配置与监控,可以通过向导模式、 脚本模式、 shell + dataX 的方式去进行配置。同时支持多种的同步方式,基于实时或批量,全量或者增量,同步速度使资源组而定,做到横向扩展。
在数据集成-大数据的搬运工可以了解数据从哪里来,到哪里去,通过数据集成导入到更多的数据类型。目前支持的关系型数据库有SQLserver 、PG 、SQL 、达梦、drds 、 Mysql , oracle 以及 DB2 包括 hybroddb for mysql , hybriddb for postgreSQL 、大数据存储包括阿里的大数据, MAX computer 和开源的HDFS 。非结构化存储包括有 OSS、FTP 和多媒体文件。 NOSQL 包括开源的 Hbase 和阿里的 OTS 、 Mongodb 等。通过抽取转换,跨公网,包括实施或者离线的模式去导入到对应的数据库。目前支持 400 对异构数据源的离线同步,而且支持到分钟级、小时级、天级的调度。
数据研发的全流程是智能研发 IDE 可以做到多团队的协作开发。 目前可以在 data work 的开发界面做到数据探查、数据接入、业务流程、数据开发、代码调试、代码部署、调度系统、生产运维以及质量监控,包括对于结构化、非结构化数据的处理,实时离线任务一体化开发。对于标准模式的开发,生产环境的可隔离,包括对于百万级 ETL作业的稳定调度和生产环境的智能监控预警。
目前的数据开发的全局调度,是一个精细的周期控制。可以调度支持千万级任务并发调度。复杂的时间粒度,满足不同的场景。支持分钟、小时、天、周、月的周期性调度。上面是周和小时的两个例子。