直达最佳实践:【https://bp.aliyun.com/detail/173】
观看视频:【https://yqh.aliyun.com/live/detail/22208】
阿里云最佳实践目前已覆盖23类常用场景,有200多篇最佳实践,这其中涉及110款以上阿里云产品的最佳使用场景。目前,最佳实践已成功帮助大量客户实现自助上云。
分享人:王健 解决方案架构师
正文:
本篇内容将通过三个部分来介绍基于DataWorks的大数据一站式开发及数据治理。
一、最佳实践原理讲解
二、最佳实践核心产品讲解
三、实践操作演示
一、最佳实践原理讲解
本最佳实践讲解DataWorks做大数据一站式开发。以日志分析为例,通过数据实时采集到kafka,利用实时计算flink对数据进行ETL并写入到HDFS,再使用Hive进行数据分析。最后通过DataWorks进行数据治理,数据地图查看数据信息和血缘关系,数据质量监控异常和报警。该产品主要适用于三类客户。第一,业务需要进行大数据分析,例如用户网站访问行为日志。第二,数据已经使用了阿里云EMR或者准备使用。第三,已经使用了阿里云dataworks或者准备使用以实现一站式大数据开发与治理。
接下来,我们介绍一下系统架构图,这里主要包括了以下几个产品。第一,EMR。
阿里云平台上的一种大数据处理的系统解决方案。主要用于大数据处理。第二,DataWorks。数据仓库管理工具,主要用于开发,管理数据。第三,实时计算 flink版。这是阿里云实时智能计算平台,主要用于高性能实时大数据处理系统。第四,kafka。阿里云基于ApacheKafka构建的分布式消息队列服务,用于日志收集、监控数据聚合、流式数据处理。
阿里云推出的企业级大数据分析平台emr基于阿里云大数据团队丰富的研发运维经验,对相关组件提供了优化能力,阅读权限,认证计算,引擎集群管理,作业管理,调度管理以及基础资源的弹性能力等。同时,EMR能够与阿里云的其他产品进行无缝集成。
在基于DataWorks的大数据一站式开发及数据治理的业务流程中,首先模拟一个日志产生器。通过一个python脚本周期性的产生日志条目。Log generator模拟生成日志,并通过flume agent投递到kafka。然后实时计算flink从kafka订阅数据并处理,将结果写入hdfs。然后,周期调度hive进行日志分析,统计错误日志,并写入结果表。最后,建立周期监测错误日志统计表,进行告警判别。
接下来,我们展示一下DataWorks的大数据一站式开发及数据治理的效果。在这里,我们可以通过Hive客户端,查询每小时内错误日志条数。同时,我们也可以进入DataWorks的数据质量界面,查阅质量报告。如果超越阀值,会收到告警邮件。
最后,我们来看一下阿里云推荐解决方案的优势。第一,阿里云云原生产品组合丰富,生态完善。资源丰富,产品组合多样,实时计算Flink+EMR+DataWorks的组合使用。第二,大数据一站式开发,完善的数据治理能力。支持SQL进行实时及离线数据清洗、数据分析、数据同步、异构数据源计算等。支持Data Lake相关功能,以及各种流式及静态数据源关联查询。支持在线开发,全面支持UDX。支持集群管理、作业管理&调度管理。第三,安全。多租户系统,以项目进行隔离,所有计算任务在安全沙箱中运行。
二、最佳实践核心产品讲解
EMR软件栈主要包含四个部分。第一,开源软件部分,开源的hadoop组件:Hbase、Kafka、德鲁伊(Druid)等。同时,也包括基于开源优化的,Spark、Flüink、Tensorflow及Delta Lake等开源大数据组件。第三部分是我们自研的监控告警,智能运维,JindoFs等开源组件之上的管理组件。另外EMR开源软件栈也包括像OSS、SLS、ECS等开源组件之外的阿里云自研组件。这些组件可以和我们的开源组件密切配合。
EMR开源大数据平台相对客户完全构建的大数据平台,具有以下优势。第一,低成本。EMR通过计算存储分离架构,在计算侧进行弹性伸缩,同时引入了Spot和预留实例的购买方式,成本降低了20%到30%。在存储侧,我们通过有效的数据分层分组和数据全生命周期管理,存储成本降低20%。第二,大规模。EMR支持数千台的大规模集群管理。针对Hdfs、Yarn在大规模应用时候的一些超大规模管理均有深度优化。第三,基于阿里云大数据生态集成。将有效地整合开源组件和资源组建在开源大数据场景下的有效使用。第四,高性能。在Spark等开源大数据基础上进行了深度优化。如集成了Spark AE、Spark物化视图等,性能大幅提升。
三、实践操作演示
首先,我们选择官方模板库,基于方案,新建选择本次最佳实践的模板。保存我们的应用,输入本次最佳实践的名称,点击确认。在这个模板中,我们首先创建一台ECS服务器,用来模拟周期产生日志。同时,通过flink将日志投递到kafka中,可同时订阅日志信息,从kafka中获取到热词条目,实时处理之后存放到EMR的hDFS集群中,进行数据分析。
下面,我们简单看一下相关的配置。地域,选择华南一深圳。vpc,我们可以配置名称以及网段。Vswitch,我们同样可以修改它的名称,可用区以及网段。Ecs的配置,主要是修改名称以及实例,规格,镜像版本,磁盘等新相关信息。kafka主要修改名称以及付费方式。emr可以选择集群类型,版本以及付费方式,包括集群规模,规格,实例,登录密码等相关信息。
保存成功之后,选择应用部署。开始资源验证,这个过程主要验证我们的参数是否配置正确,如果出错的话,我们可以根据相关提示进行修改。成功之后,点击下一步价格清单。这个过程可以帮助我们统计价格的预算清单。完成之后,下拉页面,选择部署清单,云架构设计工具服务条款。下一步创建资源,完成下单。
下单成功之后,开始进入资源部署状态,创建vpc,vswitch安全组,kafka。部署成功之后,可以看到列表当中的相关信息和资源,都是可用状态。
接下来,我们创建flink集群。首先,创建OSS对象存储。进入OSS对象存储管理控制台,选择bucket列表,创建bucket。选择地域深圳,输入bucket名称,其他的默认配置,点击确定。
进入实时计算控制台,选择blink独享集群,选择按量付费模式,地域仍然选择深圳。由于我们是测试环境,所以选择一个master节点和两个节slave点,立即购买。选择服务协议,立即开通。
返回控制台,创建集群。下一步,输入集群名称,集群备注。下一步,选择vpc,点击创建。创建项目,输入项目名称,选择CPU使用量,输入项目备注,点击确定。
项目成功创建之后,我们模拟一个日志产生器。首先,我们下载本最佳实践的相关代码。同时,我们登录ECS控制台,为实例绑定eip,方便后续操作。购买开通之后,返回控制台,选择刚刚买的eip进行绑定。
成功绑定之后,我们切回到终端。已经下载完成,进入目录,下面有一个阶梯文件,包含了操作的所有命令。打开文件,复制这一段python脚本用于模拟日志产生。进入编辑模式,切入脚本内容。检查格式是否正确,点击保存。后台执行该脚本文件。查看日志文件。可以看到,日志记录都是即兴产生。
接着,我们安装java运行环境。进行java环境变量配置,根据安装实际情况来修改相关的参数。我们将相关的环境变量切入到系统全局配置当中,让全局变量立即生效。我们查看java版本号。Java已正确安装。
我们下载flume镜头安装包。减压该安装包,为了方便操作我们修改解压后的目录名称,我们修改flume相关的配置变量。首先,我们修改flume的相关配置。在这个配置文件当中,我们主要添加java的运行环境变量。我们根据实际情况来修改java控的环境变量。切入到flume的环境变量当中,点击保存。我们将flume运行环境变量添加到系统全局配置当中。使环境变量立即生效。查看flume的版本号,确定是否正确安装。
接下来,我们配置kafka.成功创建之后,概览详情。复制接入点,切回到demo客户的文件。保存后台运行flume,登录kafka管理平台,查看是否有消息投递成功。选择更多,信息查询,按时间查询,选择时间,确定查询。信息已成功投递到kafka当中。
接着,我们创建emr项目。首先登录emr控制台,选择刚刚创建的emr集群。选择数据开发,新建项目,录入项目名称及描述。然后,检查安全组是否配置正确。首先登录集群管理主机列表,选择实例,选择安全组。打开配置规则,看8898和9000两个端口是否配置正确。
如果没有配置,需要我们手动进行配置。登录datawoeks控制台,选择工作空间列表,选择专业版,创建工作空间。选择深圳,输入工作空间名称,创建工作空间,进入工作空间配置,选择更多设置。添加计算引擎,选择emr,增加实例,收入显示名称,选择阿里云主账号,选择集群ID,项目ID,点击确定。添加实时计算引擎,增加实例,填入实例显示名称,选择flink项目,点击确定。
emr和计算引擎已添加成功,刷新一下,选择全部产品,选择steam studio,新建任务,输入节点名称。选择目标文件夹,并提交。
进入flink作业脚本,修改kafka的servers地址和hdfs的servers地址。弟子登录emr控制台,选择主机列表,复制heafer节点的IP地址。修改hdfs的地址信息,修改kafka的servers地址信息,点击保存。
我们用IDEA打开之前下载的代码示例,进行编译,编译成功.在target目录下面,可以看到编译好的java包。切回到dataworks的操作界面,选择上传资源,选择刚刚好编译的java包。资源上传。。选择提交发布,选择自动配置,指定当前使用cpu。
进入运维界面,选择启动确认,作业已成功启动。可以看到,数据已经在处理中。返回dataworks控制界面,选择数据开发。选择业务流程,新建流程,输入业务名称。在新建的业务流程一下,创建复制节点,输入节点名称,并提交双击该节点。
进入编辑模式,切换到democode的文件,复制节点脚本。这个脚本的主要作用是将当前时刻的年月日时,分别作为参数打印出来。选择调度配置,依次对时间属性,资源属性进行配置。调度周期选择小时,开始时间选择0:30。使用工作空间,节点作为上游节点,点击保存。
接着创建hive节点,输入节点名称。提交。我们start作为上游节点,通过连线,将两个节点串联起来,点击hive节点,进入编辑模式。切回到democode文件,复制hiveSQL语句,修改hdfs的访问地址。
我们进入header节点,打开hive客户端,查询表数据,可以看到,统计数据已经写入该表当中。进入dataworks控制界面,选择数据地图。进入数据发现,选择新建采集器。选择emr集群,并授权。运行全链获取,等待同步,收集成功。选择全部数据,可以查看到hive里面的两张表的详细信息,如表结构,血缘信息。
返回dataworks控制界面,选择数据质量。进入监控规则,这里已经自动关联了我们创建的emr集群,给log_error,配置监控规则,添加分区表达式,点击加号。
接着,创建规则。选择添加监控规则,输入规则名称。选择规则字段,规则模板选择默认,比较方式选择上升。添加成功之后,选择关联调度,搜索log,选择hivelog添加,关闭该界面。选择任务查询,点击详情,查看历史记录,可以看到数据监控周期性的执行。如果出现异常状态,相关结果会发送到登录账号的默认邮箱当中。