Article / 文章中心

EMR 弹性数据湖分析最佳实践

发布时间:2021-12-09 点击数:823
阿里云最佳实践目前已覆盖23类常用场景,有200多篇最佳实践,这其中涉及110款以上阿里云产品的最佳使用场景。目前,最佳实践已成功帮助大量客户实现自助上云。

分享人

  • 解决方案架构师-明誉
  • 阿里云计算平台事业部产品经理-子关

本篇内容将从3个部分为读者介绍关于EMR弹性低成本离线大数据分析最佳实践,希望可以让大家对EMR有更深入的了解,并可以将这些特性应用到项目中,达到降本提效的目的。

  • 最佳实践原理讲解
  • EMR核心产品讲解
  • 最佳实践系统搭建

一、最佳实践方案讲解

1. 分析效果

image.png
在上图的demo中,分别进行了Hive on MR 和 Hive on tez 的日志数据分析, Hive on tez 的执行效率优于Hive on MR 。目前EMR的Hive引擎支持 Hive on tez 。
展示了完整的电商网站 demo 搭建、日志埋点、日志产生、日志投递、分析作业和分析工作流的建立,EMR计算集群弹性伸缩等核心步骤和能力可以参考本实践来熟悉如何基于阿里云公有云产品搭建和完善自己的离线大数据日志分析系统。

2. 场景描述

  1. 本最佳实践讲解了如何基于阿里云产品快速搭建一个企业级的离线日志大数据分析系统,这里以搭建一个电商网站用户访问行为日志分析系统为例。
  2. 其中用到的核心产品是阿里云推出的大数据分析平台EMR,其提供了一站式的大数据系统处理解决方案。
  3. 本最佳实践利用EMR结合阿里云日志服务SLS、对象存储OSS和云数据库RDS MySOL 版等产品构建一个海量低成本弹性的离线电商网站用户访问行为日志大数据分析系统。

适用客户有以下:互联网行业客户,例如电商交易客户等;业务为需要进行离线大数据分析,例如用户网站访问行为日志;数据已经使用了阿里云EMR或者准备使用;具备1-5名有Hadoop背景的工程人员;原有服务基于开源算法体系,但是受限现有人员和成本无法进一步提升。

3. 系统架构图

最佳实践的产品列表
image.png
系统架构是使用了阿里云的CADT工具进行部署,用户也可以根据本最佳实践提供的系统架构图进行一键式的本系统资源构建和部署最后用于实践的测试和验证。
image.png

4. 核心产品EMR

EMR是阿里云阿里云推出的企业级大数据分析平台E-MapReduce(简称EMR),EMR完全兼容开源Hadoop生态系统,并且基于阿里云大数据团队丰富的研发运维经验对相关组建提供了优化能力,例如权限认证、计算引擎、集群管理、作业管理和调度管理、基础资源的弹性能力等。并且EMR能够与阿里云的其他云产品进行无缝集成,例如本实践里EMR可以直接分析消费存储在OSS上的海量日志,提供了计算存储分离的离线大数据分析架构,方便用户进行运维管理、作业分析的同时,极大的节省了大数据分析系统的计算和存储成本。
image.png

5. 业务流程图

在这个离线大数据分析系统中,首先基于阿里云的SLB、ECS、RDS等云产品搭建了一个简单的电商交易网站,而且在网站页面代码里植入了用户访问行为埋点日志采集,结合阿里云日志服务SLS提供的Webtracking能力将用户访问日志实时传送到SLS的logstore里面。接下来通过SLS的logshipper能力将SLS中存储的日志准实时地投递存储到阿里云的对象存储OSS上面,最后通过阿里云EMR的离线大数据分析引擎Hive消费分析存储在OSS上的日志。在这个过程中展示了EMR在大数据分析作业的作业开发、工作流设计和管理大数据核心系统参数管理等的便捷能力,同时也展现了一迈在底层基础资源的弹性能力。通过本实践用户可以知道如何通过阿里云的多个云产品来完整的构建自己的计算存储分离架构的离线大数据分析系统,优化和节省计算及存储成本,同时也可以简化用户的大数据分析系统的运维成本。
image.png

6. 方案优势

阿里云弹性低成本离线大数据分析系统方案的优势如下:

  • 阿里云云原生产品组合丰富,生态完善。资源丰富,产品组合多样,"日志服务+存储服务+大数据分析平台"组合使用。
  • 阿里云具有成熟的企业级大数据分析平台EMR。完全兼容开源生态系统,并在开源生态基础上强化; 伴随社区生态的发展,全球部署;完整的企业级一体化平台,支持集群管理、作业管理&调度管理。
  • EMR可以提供计算与存储分离的大数据分析平台。 计算与存储分离架构,优化用户资源成本;计算资源弹性伸缩、集群快速部署。

二、EMR核心产品讲解

1. EMR软件栈

EMR是阿里云上一款开源大数据平台产品,EMR主要由四个主要组成部分。
image.png

  • 第一部分是对接开源生态,这部分主要对接了常用的开源大数据产品,产品和组件包括HDFS、YARN、Kudu等存储计算引擎,这部分100%采用开源组建,用户是在使用的时候可以完全无缝与现有的大数据产品使用习惯完全相同。
  • 第二部分是EMR在完全兼容开源API接口基础上实现了内核的核心增强,比如Spark、Flink、TensorFlow、Delta Lake等开源组件。
  • 第三部分是EMR自研的包括监控告警、智能运维、JindoFS、EMR Agent等集群管理和在使用开源大数据组件时和云生态对接的一些功能。
  • 第四部分是与阿里云密切配合的其他云产品,比如OSS、日志服务SLS、ECS、ECI、ACK等产品。

2. EMR VS开源大数据管理平台

EMR 与开源大数据自建平台相比,具有低成本、大规模、丰富云生态、高性能四个核心性能的增强。
在成本方面,通过实现弹性伸缩、Spot+预留实例的购买方式实现了计算成本降低20%以上,实现数据全生命周期管理、数据分层存储使存储成本降低了10%以上。
EMR具有丰富的集群管理经验,能够在数千台的大规模集群上实现快速的向HDFS、DataNode、NameNode的滚动重启、DAtaNode的Decommission优化、YARN大规模资源调度优化等功能。
EMR与开源云生态的结合,Dataworks、PAI是计算平台优秀的工作流处理和管理以及机器学习工具,可以与EMR无缝集成。同时EMR基于ECS可以实现一些部署集逻辑严格打散以及E2E的运维流程。
EMR相比较与开源性能大幅提升,如AE、物化视图、runtime filter、Remote Shuffle Service,极大地提升了在计算性能上、计算稳定性上的跃升。

三、最佳实践系统搭建

1. 通过CADT部署资源

  1. 登录云速搭CADT管理控制台。
  2. 单击新建 > 官方模板库新建
    image.png
  3. 找到“EMR弹性低成本离线大数据分析”模板,单击基于方案新建,可以根据具体业务需求使用该公共模版并配置自己需要的参数进行资源架构的创建。

    image.png

  4. 用户配置好相关参数,如VPC设置、vswitch配置、SLB配置、eip配置等等,单击右上角的保存,并设置应用名称
    image.png
  5. 单击部署应用
    image.png
  6. 按界面提示依次完成资源校验、确认应用成本并支付下单,创建资源。
    image.png

    image.png
    image.png

2. 搭建电商网站Demo

RDS数据库配置
  1. 进入 RDS 控制台,找到创建的实例,单击管理,找到并记录 RDS 的内网地址。
    image.png
  2. 进入数据库管理,创建新的数据库。
电商应用安装
  1. 在 SLB 控制台找到之前创建的 SLB 实例的 EIP 地址,进行拷贝,在浏览器打开。
    image.png
    image.png
  2. 检查安装环境
    image.png
  3. 环境正常,进行下一步安装。
  4. 从 RDS 中获取数据库内网访问地址,输入账号密码和数据库名称。
    image.png
  5. 填写电商网站的前台和后台地址,单击下一步
  6. 进行商店个性化配置,选择时区、货币、语言等。

7.进行后台管理员账号配置。请保存好设置的管理员账号和密码,以便后续步骤登录电商后台管理界面使用。
8.开始进行安装,忽略进度条。
image.png

  1. 稍等一会,使用 SLB 的 EIP 地址用浏览器打开,可以访问电商网站前端界面表示安装成功。
    image.png

3. 电商网站日志生产

OSS Bucket相关配置
  1. 在通过 CADT 部署资源中已经使用 CADT 部署了该实践所需的 OSS Bucket。

    image.png

  2. 双击选择创建的 OSS bucket,然后选择文件管理 > 上传文件,将 loghub-tracking.js脚本上传到该 bucket 下。
    image.png
  3. 同样在该 Bucket 的“文件管理”工作界面的 “新建目录”下创建一个名为 tes2 的目录供后续存放从 SLS 投递过来的日志。
    image.png
SLS日志服务WebTracking配置
  1. 在通过 CADT 部署资源中已经通过 CADT 开通了该实践所需的 SLS 的 Project 和logstore,并且开通了 WebTracking 功能,在日志服务控制台的接入数据界面找到WebTracking(支持模糊搜索)。
  2. 开始进行 WebTracking 功能配置。
    image.png
电商网站埋点
  1. 使用之前电商网站搭建时设置的管理员账号和密码登陆电商网站后台管理界面(http://SLB 的 EIP 地址/admin),进入内容配置页面,编辑主站的设计。

    image.png
    image.png

  2. 在 HTML Head 的 Scripts and Style Sheets 处,插入如下内容并保存(可以从附件中拷贝),注:第 2 行的 loghub-tracking.js 存放地址和第 4 行的日志服务 SLS 的 project名和 logstore 名请根据用户自己的实际情况进行修改。
    image.png
    image.png
  3. 访问电商网站页面就会把埋点日志上传到 SLS 日志系统。进入 Logstore 查看日志,模拟用户行为的日志数据已经生成并上传到了日志库。

4. 日志投递到OSS

开启日志投递
  1. 在开启日志服务数据投递到 OSS 之前,用户首先需要完成云资源访问授权,用户访问链接 https://help.aliyun.com/document_detail/29002.html,然后单击云资源访问授权,完成云资源对日志服务的访问授权。
    image.png
  2. logstore 的日志投递到 OSS 需要获取用户的 ARN,接下来获取 ARN,首先进入访问控制(RAM)控制台。
  3. 然后在 RAM 控制台选择“RAM 角色管理”, 单击“AliyunLogDefaultRole”这条 RAM角色,获取用户的 ARN。
  4. 接下来在日志服务控制台单击之间创建的 Project 进入日志库,开始进行日志投递到OSS 的配置;然后单击 OSS 以及“开启投递”,准备投递日志到 OSS 服务的相关配置。
    image.png
    image.png
  5. 单击确定,确定日志投递到 OSS 的配置。
    image.png
  6. 再次使用前面创建的 SLB 的 EIP 地址直接浏览器访问模拟的电商网站,就会执行脚本不停生成新的访问日志。
    image.png
查询OSS上的日志存储
  1. 在日志服务控制台选择创建的日志库,查看日志投递到 OSS 的任务每隔 5 分钟(默认,也可以自定义设置)已经生成并投递成功。

    image.png

  2. 在 OSS 控制台对应的 bucket 下的文件目录可以查询到已投递过来的日志。

5. EMR集群配置

弹性EMR集群
  1. 使用前面的 CADT 工具已经创建好了本实践所需的 EMR 集群。
  2. 硬件配置,按量付费。
  3. EMR 集群默认不开启公网访问,如需通过公网访问,需要给 Master 节点挂载 EIP。
  4. 勾选服务条款协议,确认配置完成集群创建。集群创建成功以后,可以在集群管理 > 服务列表查看集群所能支持的服务。
    image.png
  5. 创建弹性伸缩集群。

    1. EMR 控制台进入集群列表单击选择创建的集群,选择弹性伸缩,在弹性伸缩 > 弹性伸缩配置里选择新建弹性伸缩组,然后选择需要的计算机型和配置以及付费类型等,创建机器组。
    2. 对新建的机器组配置弹性伸缩规则。
    3. 添加扩容和缩容规则,伸缩规则支持按照规定时间伸缩和按照规定负载伸缩。
      image.png
    4. 开启弹性伸缩状态。
      image.png
    5. 在弹性伸缩记录可以查看机器组机器的扩容和缩容记录。
      image.png