阿里云开源大数据平台E-MapReduce对接使用完全指南

apphuang2026年06月24日 12:12:537

1. E-MapReduce产品概述

阿里云开源大数据平台E-MapReduce(简称EMR)是运行在阿里云平台上的一种大数据处理系统解决方案。EMR基于开源的Apache Hadoop和Apache Spark,让用户可以方便地使用Hadoop和Spark生态系统中的其他周边系统分析和处理数据。EMR还可以与阿里云其他的云数据存储系统和数据库系统(例如阿里云OSS和RDS等)进行数据传输。

阿里云EMR提供了三种产品形态,以满足不同用户的需求:

  • EMR on ECS:EMR负责将开源Hadoop生态的组件安装部署在ECS上,并启动相应的服务。用户可以在EMR控制台完成对集群ECS及服务的运维操作。这种形态适合需要完全掌控集群基础设施、对底层资源有自定义需求的场景。
  • EMR on ACK:用户需要先完成ACK集群的安装部署。当ACK集群准备就绪后,EMR将基于ACK的资源安装部署大数据服务组件,并在容器内运行。这种形态适合已经采用容器化架构、希望统一管理大数据和在线业务的团队。
  • EMR Serverless Spark:这是一款面向Data+AI的高性能Lakehouse产品,为企业提供了一站式的数据平台服务,包括任务开发、调试、调度及运维等功能。它100%兼容开源Spark生态,能够无缝集成到客户现有的数据平台。这种形态适合希望免去集群运维负担、专注于数据处理分析的团队。

在实际生产环境中,EMR on ECS是最为广泛使用的形态,本文后续的对接使用讲解将主要围绕EMR on ECS展开。

2. 使用前的准备工作

2.1 账号注册与实名认证

使用EMR服务前,首先需要注册阿里云账号并完成实名认证。这是使用任何阿里云云服务的基础前置条件。

2.2 服务角色授权

完成对E-MapReduce的服务账号授予默认的EMR和ECS角色权限。这一步是必须的,因为EMR在创建集群、管理ECS实例、访问OSS存储等操作时,需要以服务角色的身份调用其他阿里云服务的API。授权操作可以在EMR控制台的引导下完成,系统会自动创建所需的默认角色。

2.3 RAM用户与权限规划

为确保阿里云账号及云资源的使用安全,如非必要都应避免直接使用阿里云账号(即主账号)来访问EMR集群。推荐的做法是使用RAM身份(即RAM用户和RAM角色)来访问EMR on ECS集群。

RAM用户需要由阿里云账号或拥有管理员权限的RAM用户、RAM角色来创建,且必须在获得授权后才能登录控制台或使用API访问阿里云账号下的资源。在权限管理上,应遵循最小权限原则——授予用户执行某项任务所需的权限,不授予其他无需用到的权限。

对于通过控制台访问的用户,推荐为其开启MFA多因素认证。不要把RAM用户的AccessKey ID和AccessKey Secret保存在工程代码中,否则可能导致AK泄露。建议使用STS或环境变量等方式获取访问授权。

当阿里云账号下有多个RAM用户时,可以通过创建用户组对职责相同的RAM用户进行分组管理和批量授权。

2.4 网络与地域规划

EMR集群创建后无法更改地域,因此需要谨慎选择。建议将EMR集群部署在与业务数据源(如OSS Bucket、RDS实例)相同的地域,以便利用内网高速访问,避免产生额外的外网流量费用。

网络方面,EMR集群通常部署在专有网络VPC中。如果集群需要对外提供公网访问能力(例如通过公网提交作业或访问Web UI),需要在创建集群时开启Master节点组的"挂载公网"开关,或者创建后为Master节点绑定弹性公网IP(EIP)。

需要先登录阿里云控制台,点击:阿里云控制台

3. 创建EMR集群

3.1 进入创建集群页面

登录阿里云控制台后,进入E-MapReduce产品页面。在顶部菜单栏处,根据实际情况选择地域和资源组。单击"创建集群"按钮进入集群配置页面。

3.2 软件配置

在软件配置区域,需要完成以下关键配置:

  • 业务场景:选择适合的业务场景,阿里云EMR会自动为您配置默认的组件、服务和资源。对于数据湖分析场景,可以选择"数据湖";对于自定义需求,可以选择"自定义集群"。
  • 产品版本:选择最新的稳定版本,例如EMR-5.18.1。新版本通常包含更多的组件版本更新和性能优化。
  • 服务高可用:默认不开启。开启后EMR会把Master节点分布在不同的底层硬件上以降低故障风险。生产环境建议开启。
  • 可选服务:根据实际需求选择组件。例如HADOOP-COMMON、OSS-HDFS、YARN、Hive、Spark3、Tez、Knox和OpenLDAP等。如需通过控制台访问Web UI界面,还需选择Knox和OpenLDAP服务。
  • 允许采集服务运行日志:默认开启,将收集服务运行日志,这些日志仅供集群诊断使用。关闭日志采集后EMR的健康检查和技术支持将受到限制。

3.3 元数据配置

元数据配置是集群创建中的重要环节。EMR支持以下几种元数据存储方式:

  • 内置MySQL:元数据存储在集群自带的MySQL中,适合快速搭建测试环境,不建议在生产环境中使用。
  • 自建RDS:将元数据存储在独立的RDS实例中,元数据不随集群销毁而销毁,适合生产环境。
  • DLF统一元数据:通过数据湖构建(Data Lake Formation,DLF)实现湖仓元数据全面打通,确保数据访问一致性与权限管理完整性。DLF提供跨OSS、数据库、文件系统的统一元数据目录服务,支持自动元数据发现、细粒度权限控制、数据血缘追踪。

对于生产环境,强烈推荐使用DLF统一元数据方案,这样可以实现多种数据源入湖,搭建高效的数据湖解决方案。

3.4 存储配置

EMR支持将数据存储在OSS-HDFS上,这是一种提供兼容HDFS协议的对象存储底座,替代传统本地HDFS,实现计算资源与存储的解耦,可独立扩展计算节点。当在可选服务区域选择了OSS-HDFS服务时,需要配置集群存储根路径。

OSS-HDFS服务是一款云原生数据湖存储产品,基于统一的元数据管理能力,在完全兼容HDFS文件系统接口的同时,提供充分的POSIX能力支持。这能更好地满足大数据和AI领域丰富多样的数据湖计算场景。

3.5 硬件配置与集群创建

在硬件配置中,需要选择Master节点和Core节点的ECS实例规格和数量。对于生产环境,建议Master节点选择较高的配置以保证集群管理服务的稳定性,Core节点则根据计算需求选择合适的规格。

完成所有配置后,勾选服务协议,单击确认订单,等待集群创建完成。当集群状态显示为"运行中"时,表示集群创建成功。

4. 数据源对接

4.1 对接OSS对象存储

OSS是EMR最常用的数据存储层。EMR on ECS集群天然支持访问OSS数据,无需额外配置。在Spark或Hive中,可以通过OSS路径直接读写数据。

以下是在Spark SQL中创建基于OSS存储的外部表的示例:

CREATE TABLE orders (
    order_id STRING,
    order_date STRING,
    order_category STRING,
    order_revenue DOUBLE
)
USING CSV
OPTIONS (
    path 'oss://<bucketname>/user/',
    header 'true'
);

上述代码中,`oss://<bucketname>/user/`需要替换为实际的OSS Bucket路径。通过这种方式,EMR集群可以直接对OSS中的海量数据进行分布式计算。

如果使用OSS-HDFS服务,则可以通过`oss-hdfs://`协议访问,获得与HDFS完全兼容的接口体验。

4.2 对接Tablestore(表格存储)

EMR支持通过Spark读取和写入Tablestore中的数据。对于流计算场景,基于通道服务,利用CDC(数据变更捕获)技术完成Spark的mini batch流式消费和计算,同时提供了at-least-once一致性语义。

以下是使用Spark SQL对接Tablestore的步骤:

首先,远程登录EMR集群的Master节点。然后执行如下命令启动Spark SQL CLI:

spark-sql --jars /opt/apps/SPARK-EXTENSION/spark-extension-current/spark2-emrsdk/*

接着创建Source外表(对应Tablestore中的源表):

CREATE TABLE order_source (
    UserId STRING,
    OrderId STRING,
    price DOUBLE,
    timestamp BIGINT
)
USING tablestore
OPTIONS (
    endpoint 'https://<instance>.cn-hangzhou.ots.aliyuncs.com',
    access.key.id '<access_key_id>',
    access.key.secret '<access_key_secret>',
    instance.name '<instance_name>',
    table.name 'OrderSource'
);

同样方式创建Sink外表后,即可通过INSERT INTO ... SELECT ...语句实现数据的流式处理。

4.3 对接RDS关系型数据库

EMR可以通过多种方式对接RDS数据库:

  • Sqoop/DataX:定期批量抽取全量或增量数据,按业务表结构同步至OSS-HDFS。
  • Spark JDBC:在Spark作业中直接通过JDBC读取RDS数据。
  • DataWorks数据同步:通过DataWorks的数据集成功能,将RDS数据同步到OSS。

以下是通过Spark JDBC读取RDS数据的示例:

val jdbcDF = spark.read
    .format("jdbc")
    .option("url", "jdbc:mysql://<rds_endpoint>:3306/<database>")
    .option("dbtable", "<table_name>")
    .option("user", "<username>")
    .option("password", "<password>")
    .option("driver", "com.mysql.jdbc.Driver")
    .load()

4.4 对接Kafka实时数据流

EMR DataFlow类型集群集成了Kafka,支持高吞吐、低延迟的流式数据缓冲。Flink和Spark Streaming都可以从Kafka消费实时数据流进行处理。

5. 任务开发与提交

5.1 Spark SQL任务开发

在EMR Serverless Spark环境中,可以通过控制台的数据开发功能创建Spark SQL任务。

首先进入开发页面,在左侧导航栏选择数据开发,新建任务并选择类型为SparkSQL。然后在右上角选择数据目录、数据库和一个已启动的SQL会话实例。在任务编辑器中输入SQL语句即可。

以下是一个完整的Spark SQL示例:

CREATE DATABASE test_sql;
USE test_sql;

CREATE TABLE IF NOT EXISTS my_table (
    id INT,
    name STRING
);

INSERT INTO my_table VALUES(1, 'Alice'),(2, 'Bob');
SELECT * FROM my_table WHERE id > 1;

5.2 在EMR on ECS集群中提交作业

对于EMR on ECS集群,可以通过以下方式提交作业:

  • SSH登录Master节点:通过SSH连接到集群的Master节点,使用命令行提交Spark、Hive或MapReduce作业。
  • EMR Studio:使用Zeppelin、Jupyter等Notebook进行交互式开发。
  • DataWorks:通过DataWorks的EMR节点进行作业开发与调度。

以下是通过SSH提交Spark作业的示例:

spark-submit \
    --class com.example.WordCount \
    --master yarn \
    --deploy-mode cluster \
    --num-executors 10 \
    --executor-memory 4g \
    --executor-cores 2 \
    /path/to/your-job.jar \
    oss://<bucket>/input \
    oss://<bucket>/output

5.3 Flink实时任务开发

EMR DataFlow类型集群支持Flink实时计算。Flink核心是一个流式的数据流执行引擎,针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。

Flink SQL是开发实时任务的高效方式,以下是一个简单的Flink SQL示例:

CREATE TABLE source_table (
    user_id STRING,
    event_time TIMESTAMP(3),
    event_type STRING
) WITH (
    'connector' = 'kafka',
    'topic' = 'user_events',
    'properties.bootstrap.servers' = '<kafka_brokers>',
    'format' = 'json'
);

CREATE TABLE sink_table (
    event_type STRING,
    event_count BIGINT
) WITH (
    'connector' = 'print'
);

INSERT INTO sink_table
SELECT event_type, COUNT(*) AS event_count
FROM source_table
GROUP BY event_type;

6. 权限管理与安全控制

6.1 RAM权限策略

EMR Serverless Spark使用的权限策略包括系统策略和自定义策略。常用的系统策略有:

  • AliyunEMRSparkReadOnlyAccess:EMR Serverless Spark只读权限。
  • AliyunEMRFullAccess:EMR所有操作权限。

对于更精细化的权限控制,可以创建自定义策略。

6.2 集群级别的访问控制

EMR on ECS集群支持通过以下方式控制访问:

  • 安全组:通过VPC安全组规则控制网络访问。
  • Knox网关:开启Knox服务后,可以通过Web UI进行安全的集群服务访问。
  • OpenLDAP:集成LDAP实现用户认证和授权。

7. 监控与告警

EMR自动采集集群服务指标,并自动同步到云监控服务。用户可以在EMR控制台查看集群服务常用指标,并可以在云监控控制台设置指标的阈值告警及自定义设置图表大盘。

EMR Serverless StarRocks还提供针对核心性能与稳定性的预设告警模板,覆盖可用性、资源负载、集群服务状态及其他典型业务场景。

对于Hadoop集群,EMR提供了事件中心功能,可以将事件自动同步到云监控服务。用户可以在EMR控制台上查看集群的事件,并在云监控控制台上设置相应的事件告警。

8. 成本优化最佳实践

8.1 计算与存储分离

EMR支持计算与存储分离架构,数据存储在OSS-HDFS中,计算资源可按需弹性伸缩。这种架构的优势在于:

  • 存储按量付费,避免资源浪费。
  • 计算资源可秒级弹性伸缩,最小粒度为1核。
  • 集群无需长期保有大量存储资源,降低总体拥有成本。

8.2 弹性伸缩

EMR on ECS支持基于时间的弹性伸缩能力,抢占式实例可进一步降低成本。在创建集群时支持配置弹性伸缩规则,集群创建后弹性伸缩规则即可启动。

8.3 内网访问免流量

将EMR集群与OSS Bucket部署在相同地域,通过内网访问OSS可以免去外网流量费用。这是降低成本最直接有效的方式。

8.4 存储类型优化

根据数据的访问频率选择合适的存储类型。对于冷数据,可以配置生命周期规则将其转换为低频访问或归档存储,以降低存储成本。

8.5 Serverless形态的成本优势

EMR Serverless Spark内置了Fusion Engine(Spark Native Engine),相对开源版本性能提升300%,显著加速大数据计算任务。同时内置Celeborn(Remote Shuffle Service),支持PB级Shuffle数据处理,计算资源总成本最高下降30%。

9. 与DataWorks的集成

EMR与DataWorks深度集成,用户可以在DataWorks上使用EMR作为作业计算和数据存储引擎。通过DataWorks,可以实现数据同步、数据开发、任务调度和运维的全流程管理。

DataWorks支持多种EMR节点类型,包括EMR Spark SQL、EMR Hive、EMR Trino等。用户可以在DataWorks的工作流中编排EMR任务,实现复杂的数据处理流程。

10. 总结

阿里云开源大数据平台E-MapReduce为大数据处理提供了灵活、高效、成本可控的解决方案。通过本文的介绍,读者应当已经掌握了从集群创建、数据源对接、任务开发到运维监控的完整使用流程。无论是选择EMR on ECS获得最大的灵活性,还是选择EMR Serverless Spark免除运维负担,EMR都能满足不同场景下的大数据处理需求。

在实际使用中,建议始终遵循最小权限原则进行安全管理,充分利用计算与存储分离架构进行成本优化,并善用DataWorks等配套工具提升开发效率。


常见问题解答

问1:EMR on ECS和EMR Serverless Spark有什么区别?如何选择?
答:EMR on ECS需要用户自行管理和运维ECS集群,适合需要完全掌控底层基础设施、有自定义组件和配置需求的场景。EMR Serverless Spark是全托管的大数据计算服务,用户无需管理集群,只需提交任务即可,适合希望专注于数据处理逻辑、免去运维负担的团队。如果业务对资源有强管控需求或需要安装特定组件,选择EMR on ECS;如果希望快速上线、按量付费、弹性扩缩,选择EMR Serverless Spark。

问2:EMR集群如何访问OSS中的数据?
答:EMR集群天然支持通过OSS路径访问数据,无需额外配置。在Spark SQL中可以使用`oss://<bucketname>/path`格式的路径创建外部表。如果使用OSS-HDFS服务,则可以使用`oss-hdfs://`协议。建议将EMR集群与OSS Bucket部署在同一地域,利用内网访问免流量。

问3:EMR集群的元数据应该选择内置MySQL还是DLF?
答:内置MySQL适合快速搭建测试环境,元数据随集群销毁而销毁,不建议在生产环境中使用。DLF(数据湖构建)提供跨数据源的统一元数据目录服务,支持自动元数据发现、细粒度权限控制、数据血缘追踪。对于生产环境,强烈推荐使用DLF作为统一元数据管理方案,可以实现多种数据源入湖,搭建高效的数据湖解决方案。

问4:如何保障EMR集群的访问安全?
答:建议从以下几个方面保障安全:使用RAM用户和RAM角色代替主账号访问EMR;遵循最小权限原则授予RAM用户必要的权限;为控制台用户开启MFA多因素认证;不要将AccessKey保存在代码中,使用STS或环境变量获取访问授权;通过VPC安全组控制网络访问。

问5:EMR集群创建后可以修改地域吗?
答:不可以。EMR集群创建后无法更改地域。因此在创建集群前需要谨慎选择地域。建议将EMR集群部署在与业务数据源(如OSS Bucket、RDS实例)相同的地域,以便利用内网高速访问,避免产生额外的外网流量费用。

问6:EMR Serverless Spark支持哪些内置模型?
答:EMR Serverless Spark已内置多个常用模型,包括qwen3.6-plus、qwen3.5-plus、qwen-plus、text-embedding-v4、tongyi-embedding-vision-plus等。用户可以直接配合AI Function调用这些模型能力,无需额外注册。如果内置模型无法满足业务需求,还可以注册外部模型服务,支持对接百炼、PAI-EAS及自建模型服务。

相关文章

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

作为深耕阿里云代理领域 10 年的 “老司机”,经常被问到:“买阿里云服务器能便宜吗?有没有优惠价格?” 今天就用实打实的行业经验告诉你:不仅能便宜,选对渠道还能省一大笔! 这篇文章带你解锁阿里云服务…

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

最近总有朋友问我:“腾讯云有返点吗?腾讯云服务器能拿佣金不?返佣比例到底有多少?” 作为一个在腾讯云代理行业摸爬滚打了 10 年的 “老人”,今天就来跟大家好好…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS、对象存…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

01一、阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS…

阿里云代理商有哪些?阿里云代理返点是真的么?

阿里云代理商有哪些?阿里云代理返点是真的么?

一,阿里云代理商基本介绍阿里云代理商通俗一点,就是指从事阿里云云服务器,云数据库等阿里云公有云产品销售的代理商,每销售一件阿里云公有云产品出去,阿里云给予该代理商一定比例的提成。在阿里云官方定义中,这…

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

一、阿里云五级代理体系:权益阶梯与合作价值1. 五级代理的核心权益差异阿里云构建了多层次的代理生态体系,涵盖全国总代理、区域核心代理、行业ISV(独立软件开发商)、金牌/银牌认证代理及标准代理五大核心…