开发者学堂课程【企业运维训练营之大数据 EMR 原理与实践:视频-《 EMR 数据开发》】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1242/detail/18468
视频-《EMR 数据开发》
六、DataWorks on EMR 产品 Demo
1、下面进行 DataWorks on EMR 产品的 demo 演示。这个演示前期已经准备好了几个东西,在emr 上新建了 data link 的集群,同时在 DataWorks 的工作空间已经创建好了,并且已经新购好了两个独享的资源,一个是独享调度资源,一个是独享的数据集成资源,对两个都进行 bpc 的网络打通,把资源组绑定到新建的data works 工作空间列表里,下面演示具体的绑定操作。在工作空间管理里,
在这里可以把 emr 添加到 data works 里进行绑定,点击增加实例,可以给实例新命名,比如说 emr-engine,选择快捷模式进行演示,集群 ID 显示的是集群别名,资源队列保留默认的 default。有一个调度集群初始化的操作,点击初始化,可能需要1到2分钟的时间,可以理解为这个操作增加了一个给位,给位需要一个复杂且多的环境,甚至是软件的部署和配置,交由绑定操作进行。需要注意的是初次的初始化之后如果遇到服务的变更,可能需要回到这里进行再次的资源组的初始化,比如说原来 emr 集群中没有像 In parallel 这样的引擎,后续在 EMR 侧增加 In parallel 的引擎,可能就需要回到这里进行初始化的操作,以适配提交 In parallel 链路的能力。
2、演示 EMR 绑定引擎的操作以及资源组的初始化等等,具体的数据通过采集 OSS 或 RDS 数据落到数据湖的私有 OSS 里,这是数据的流向。数据流入到数据湖之后,会配置一个流程,之后用不同的节点,如虚拟的 cash 节点和离线同步的节点,最后去创建 emr hive 表,在这个表中读取和分析数据湖的数据。
初始化完成之后,点击确定,这样就完成了 emr 引擎绑定 DataWorks 的操作。下面回到数据开发,这是数据开发data studio 的模块。
经过绑定之后发现已经有 EMR 类型的节点出来,没有绑定的时候是没有这些节点的。
一个新的 data works 工作空间,他有默认的流程,就使用默认的流程把它打开,打开之后是如下图所示的界面。
先创建一个虚拟节点作为工作流的开始,对他进行必选属性的填写,然后提交。主要是给整个流有一个整体的入口,根据刚才的图,要新建两个离线同步,第一个是 MySQL 中的 user 表,把它写到 oss 中,就是 user 2 oss;第二个离线同步的节点是,公共 oss 里的 log,把它同步到私有的 oss 里。进行一个连接,连接之后它们上下游的关系就确定好了。
只有 flow-start 节点调动起来,下游才会跟着调动。进到作业的配置中,配置离线同步。还有一个前提是,数据源已经建好,里面涉及到一些账号密码和 APSK 不在 Demo,已经建好了。第一个是 user 在 MySQL 里,对 MySQL 的数据源进行读取,需要读取的表是 ods_user info_d。
写入到 OSS 的 bucket(datalake_repo_4_emr_),选择的文本类型是 text,“|”作为分隔符,配置完成。集成资源组选择前面已经购买好的,文件名含路径是 ods_user_info_d/user_${bizdate}/user_${bizdate}.txt。这个作业需要添加一些高级的参数,把它转换成在界面上没有的属性,就必须转换成脚本模式,在脚本模式中添加两个配置参数,一个是“ writeSingleObject”:“true”,一个是 “suffix”:“.txt”,保存提交。
3、在另外一端要做的是把公共的 OSS 仓库里的 log 文件,文件路径叫做 user_log.txt,分隔符还是“|”,把它写到自己的 oss 仓库里。
同样写到了
ls_raw_log_d/user_log_${bizdate)/user_log_${bizdate}.txt 路径,分隔符选择竖线,这是他的集成资源,填写必要的调度配置,保存提交。同样还需要如上手动添加两个参数,保存提交。
4、先来运行 user2oss,从MySQL 的 ods_user_info_d 表写入到 OSS 的 Bucket 中。在下面可以查看详细的日志运行情况。
画一个图,上游是MySQL table,数据入湖写到自己购买创建的 oss bucket,这部操作叫做数据入湖。
跑完之后去 oss 的控制台看一下是否进来。oss-bucket-for-emr-sandbox-shanghai 是之前创建的 bucket,ods user info d 这个目录可以看到数据已经进来了,在 user_20230111 分区里有 txt 文件,700多 k 已经写到了数据湖存储中。对 log 也是这样进行运行,Log 也做一个解析,他是从公共的一个 oss 日志文件,从文件到文件的入湖,这个作业是实现日志文件入湖的操作。
数据入湖后选择最普遍和常见的 emr hive 节点进行分析,用 hive 分析在数据湖 oss 里的表,把节点命名为 ods_user_info_d,为了演示这个流程,把它连接起来,读取这张表,这个表存在于 oss-bucket-for-emr-sandbox-shanghai 这个 bucket 当中,存在于ods_user_info_d 这个目录下,去创建这张表。另外会给他加上一个新的分区,bizdate 分区。
第一步是建表,第二步是加分区,第三步可以把它 select 出来,SELECT * from ods_user_info_d,这个select 就是把数据库中的文本文件进行检索操作,保存带参运行。在这个 hive 执行的过程可以看到刚才的作业已经同步完成。第一个数据user 表已经查出,
这就是存储在 oss 目录下的 user _20230111.txt 底下的文本文件,通过建表指定他所在的location,第二步加上日期的分区,最后查出分区里的数据,这就是全流程数据 ETL 的工作。还可以对他进行一些,比如说聚合、Where条件的过滤等等。
5、回顾一下全流程做了什么内容,一开始的数据起点是一张 mysql 的table,通过数据集成节点把他写到私有的 oss bucket,以 txt 文件存储,这个过程叫入湖。入湖之后选择了 hive 引擎对他进行解析,这一步选用了数据分析,选用了 hive。首先是建表,然后是 alter add partition 和 select。
全流程会比这复杂很多,这个 demo 里其实还包括了数据的加工,用到了udfs 做 region 和 ip2 region 之间的解析,还有一些 join 的操作,最后会呈现出来更多的数据分析类型,还有一些正则的解析等等。
七、课程内容回顾
第一部分介绍了全链路数据湖开发治理的基本概念,介绍了数据湖开发治理的过程,它包括了数据入库,数据存储与管理,就是 oss,在第三层会使用 emr hive 分析和训练,他的上层应用可以是多种多样的。第四步是数据服务应用,整个产品的架构分为四层,存储、oss 、湖管理 DLF、计算层 EMR、开发层 DataWorks,整个方案的优势可以帮助用户降本增效和提供可靠的服务。产品能力方面介绍了4+1个产品,四个产品核心是data works,重点讲了数据集成、数据开发调度和数据治理,数据治理里面分为了五个层次,同时讲了 emr 产品、DLF 和 OSS,搬站迁移属于 data works 里的一个模块,他帮助用户想要迁移的去实现作业和数据的搬迁。第四部分讲了产品的五大优势,计算的成本优化,存储的成本优化,以及开源引擎的性能优化,最新研发的 emr doctor 提供了集群健康检查的评分和建议,最后一个优势是通过这个产品架构把阿里巴巴12年的数据实践提供给了用户。第五部分是demo的实操演示。