我是靠谱客的博主 专注哈密瓜,最近开发中收集的这篇文章主要介绍EMR Studio:新一代开源大数据开发平台开启公测,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

作者

简锋, 阿里云 EMR Studio 负责人

2021年11月,EMR Studio:新一代开源大数据开发平台正式开启公测。EMR Studio 能够无缝关联 EMR 集群(EMR on ECS 和 EMR on ACK)的计算引擎提交任务,提供了交互式开发、任务调度和任务监控等开源大数据开发使用服务。覆盖了大数据处理 ETL、交互式数据分析、机器学习和实时计算等多种应用场景。

本文主要介绍 EMR-Studio 的架构,以及 EMR-Studio 是如何解决常见大数据框架的易用性问题来提升工程师工作效率的。

1

背景介绍   

众所周知,大数据领域发展这么多年,各种计算框架层出不穷,Spark,Flink,Hive,Presto 等等都是很优秀的框架,但是易用性以及使用门槛高一直是大数据领域的一个很棘手的问题。

在用这些工具开发的时候你有可能会碰到如下的问题:

  • 环境配置麻烦

  • 提交作业响应速度慢

  • 作业运行失败,错误信息不全,没法找到对应的log(或者需要很复杂的步骤才能找到对应的log)

  • 在开发集群上能正常跑的作业,切换到生产集群就出现各种奇怪的问题

  • PySpark需要定义自己的Python环境,需要自己维护集群每个节点的Python环境,即使有Python虚拟环境的解决方案,使用起来也是很不方便。

这边只列举以上5个典型的问题,实际工作当中一定存在很多其他的问题。为了解决这些问题,EMR Studio 应运而生。EMR Studio 是阿里云最新推出的基于开源组件的一站式大数据开发平台。

2

EMR Studio 架构   

EMR Studio 提供深度优化的开源组件使用体验,100%兼容开源大数据生态。您无需修改任务代码,即可平滑迁移上云。通过 EMR Studio 数据开发工作台,您可以在开源组件原生 UI 的基础上无缝衔接开发环节和生产调度环节,下图是 EMR-Studio 的整体架构和功能模块:

afee001fe5689191cd16040c83f57f69.png

EMR-Studio 的角色就是一个具备大数据开发功能的节点或集群,负责作业的提交和调度,作业本身执行还是在 EMR Hadoop 集群里。一个 EMR-Studio 可以往多个 EMR Hadoop 集群提交作业,用户可以灵活切换。EMR-Studio 里总共有4个组件,我们可以分为3类:

  • Zeppelin,Jupyter  -- 负责作业开发提交

  • Airflow -- 负责作业生产调度

  • Cluster Manager -- 负责计算集群管理

463b08e133e6c75ed402246b0e9c96f0.png

EMR-Studio 和 EMR Hadoop 集群关系图

3

EMR Studio 组件及功能   

Zeppelin+Jupyter:作业开发

Zeppelin 和 Jupyter 都是开源的交互式 Notebook,我们选用 Zeppelin + Jupyter 作为大数据开发工具是因为他们具备非常好的交互性,而且都是比较成熟的大数据开发工具。开源的Zeppelin 和 Jupyter 都需要一定的配置才能跑各种类型的大数据作业,比如在 Zeppelin 里跑 Spark 作业,你需要配置 SPARK_HOME 才能正确的跑 Spark 作业,如果你有 Hive 还需要配置 HIVE_CONF_DIR。

EMR-Studio 在开源的基础上对他们做了增强和改进,用户无需任何配置,就可以在 Zeppelin 和 Jupyter 里往 EMR Hadoop 集群提交任何类型的作业(包括 Spark,Flink, Hive, Presto, Clickhouse 等等)。

此外如果你要为 PySpark 作业配置不同的 Python 环境,EMR-Studio 提供了很方便的解决方案。你只要遵循以下步骤就可以为你的 PySpark 作业创建不同的 Python 环境,做到 Python 环境的互相隔离。

  • 步骤1. 在 Zeppelin 里用 conda 创建 Python 环境并打包

  • 步骤2. 上传 Python 环境到 OSS

  • 步骤3. 在 Zeppelin 里配置 PySpark 作业

0516feadfae1afa1d33aee4d4c664715.png

9e3bf2b986f9fdbef5c019a60cf25c17.png

3f2ac1998fb20d71d2d12c35c3021f36.png

以上是在 EMR-Studio 里 Zeppelin 的操作截屏,步骤1和步骤2是一次性的,除非你要更改 Python 环境才需要重做步骤1和2。

另外你在 Notebook 里可以很快定位到错误以及 Log,比如下面的 Hive 作业就有对应 Yarn App 的链接,你可以很方便定位到 Yarn App Log。

04046ff9eb77860b66f84b0244d5a40e.png

以上列举了一些我们针对 Notebook 改进易用性的点,还有很多特性这里就不一一例举,EMR-Studio 里提供了很多教程,方便大家学习使用。

fc78a2330506ef22f145008058aed856.png

Airflow :作业调度

Airflow 是目前最流行也是最成熟的开源调度器。从下面的 github star 数我们就可以得出这个结论,这也是我们为什么选择 Airflow 作为 EMR-Studio 的调度器解决方案。

5b8d006451fd2ccf40174737f46ea182.png

除了支持开源 Airflow 的功能之外,我们对 EMR-Studio 里的 Airflow 做了优化与整合,主要的改进有:

  • 支持 Log 存储在 OSS 上

  • 支持 DAG 文件存储在 OSS 上

  • 支持 DAG 文件在线编辑

  • 支持 Zeppelin 和 Jupyter 的调度

  • 支持 EMR 集群的切换

  • 整合阿里云监控告警功能

这里我们重点介绍下 Airflow 与 Zeppelin 的整合,假设你已经在 Zeppelin 里完成了作业开发,这里例举一个简单的 ETL 例子:

  • 步骤1:用 shell 生成原始文本 csv 数据

  • 步骤2:用 Spark 将 csv 数据转换为 parquet 格式

  • 步骤3:用 Spark 对 parquet 数据查询

每个步骤我们都在 Zeppelin 里用一个 note 来完成,现在只要编写下面的 DAG 文件就可以将这些 task 串起来构成一个定时调度的工作流。这里最重要的是我们用到了 ZeppelinOperator,在这个 Operator 里,我们只要指定 noteId 就可以了。

from airflow import DAG
from datetime import datetime, timedelta
from airflow.contrib.operators.zeppelin_operator import ZeppelinOperator


default_args = {
  'owner': 'airflow',
  'depends_on_past': False,
  'start_date': datetime(2018, 1, 1),
  'email_on_failure': False,
  'email_on_retry': False,
  'retries': 0,
  'retry_delay': timedelta(minutes=5),
}




with DAG('zeppelin_etl_note_dag',
     max_active_runs=5,
     schedule_interval='0 0 * * *',
     default_args=default_args) as dag:


    execution_date = "{{ ds }}"


    raw_data_task = ZeppelinOperator(
        task_id='raw_data_task',
        conn_id='zeppelin_default',
    note_id='2FZWJTTPS',
    params= {'dt' : execution_date}
  )


    spark_etl_task = ZeppelinOperator(
        task_id='spark_etl_task',
        conn_id='zeppelin_default',
    note_id='2FX3GJW67',
    params= {'dt' : execution_date}
    )


    spark_query_task = ZeppelinOperator(
        task_id='spark_query_task',
        conn_id='zeppelin_default',
    note_id='2FZ8H4JPV',
    params= {'dt' : execution_date}
    )




    raw_data_task >> spark_etl_task >> spark_query_task

Cluster Manager :集群管理

Cluster Manager 是 EMR-Studio 定制的一个组件,负责管理各个 Hadoop 计算集群的配置。EMR-Studio 一个很大的优势在于可以任意切换集群,在切换集群之前需要做管理集群的操作:

48aa8fb5d7ddbf06287c6254e833eeaf.png

然后你就可以在 Notebook 里通过下拉框的方式来切换集群,比如你一开始选择一个开发集群来做开发,等作业开发完之后想切换到生产集群,你只需下拉框选择对应的集群就可以,如下图所示:

3a9931f34dff61d7933f89fb24d26426.png

Airflow 也是类似,你可以在 Airflow 的 DAG 脚本里指定对应的 clusterId,如下图所示:

6b3a3105644d7680ad8e6a0577f17730.png

4

总结   

本文介绍了 EMR-Studio 的整体架构以及每个组件的功能。作为一个一站式大数据开发平台,EMR-Studio 奉行开源,简单,轻量的原则,旨在解决大数据框架的易用性问题,提高数据开发工程师的工作效率。

点击阅读原文或以下链接,获取更多 EMR-Studio 相关资料:
https://help.aliyun.com/document_detail/208107.html

欢迎大家使用 EMR-Studio,提升您的工作效率。

END

钉钉扫描下方二维码加入 EMR Studio 用户钉钉交流群,了解产品最新功能及相关活动。

122c878d3433e9bca6d13460f377e904.png

最后

以上就是专注哈密瓜为你收集整理的EMR Studio:新一代开源大数据开发平台开启公测的全部内容,希望文章能够帮你解决EMR Studio:新一代开源大数据开发平台开启公测所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部