概述
作者
简锋, 阿里云 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 的整体架构和功能模块:
EMR-Studio 的角色就是一个具备大数据开发功能的节点或集群,负责作业的提交和调度,作业本身执行还是在 EMR Hadoop 集群里。一个 EMR-Studio 可以往多个 EMR Hadoop 集群提交作业,用户可以灵活切换。EMR-Studio 里总共有4个组件,我们可以分为3类:
Zeppelin,Jupyter -- 负责作业开发提交
Airflow -- 负责作业生产调度
Cluster Manager -- 负责计算集群管理
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 作业
以上是在 EMR-Studio 里 Zeppelin 的操作截屏,步骤1和步骤2是一次性的,除非你要更改 Python 环境才需要重做步骤1和2。
另外你在 Notebook 里可以很快定位到错误以及 Log,比如下面的 Hive 作业就有对应 Yarn App 的链接,你可以很方便定位到 Yarn App Log。
以上列举了一些我们针对 Notebook 改进易用性的点,还有很多特性这里就不一一例举,EMR-Studio 里提供了很多教程,方便大家学习使用。
Airflow :作业调度
Airflow 是目前最流行也是最成熟的开源调度器。从下面的 github star 数我们就可以得出这个结论,这也是我们为什么选择 Airflow 作为 EMR-Studio 的调度器解决方案。
除了支持开源 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 一个很大的优势在于可以任意切换集群,在切换集群之前需要做管理集群的操作:
然后你就可以在 Notebook 里通过下拉框的方式来切换集群,比如你一开始选择一个开发集群来做开发,等作业开发完之后想切换到生产集群,你只需下拉框选择对应的集群就可以,如下图所示:
Airflow 也是类似,你可以在 Airflow 的 DAG 脚本里指定对应的 clusterId,如下图所示:
4
总结
本文介绍了 EMR-Studio 的整体架构以及每个组件的功能。作为一个一站式大数据开发平台,EMR-Studio 奉行开源,简单,轻量的原则,旨在解决大数据框架的易用性问题,提高数据开发工程师的工作效率。
点击阅读原文或以下链接,获取更多 EMR-Studio 相关资料:
https://help.aliyun.com/document_detail/208107.html
欢迎大家使用 EMR-Studio,提升您的工作效率。
END
钉钉扫描下方二维码加入 EMR Studio 用户钉钉交流群,了解产品最新功能及相关活动。
最后
以上就是专注哈密瓜为你收集整理的EMR Studio:新一代开源大数据开发平台开启公测的全部内容,希望文章能够帮你解决EMR Studio:新一代开源大数据开发平台开启公测所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复