阿里云 Elastic MapReduce(E-MapReduce)是运行在阿里云平台上的一种大数据处理的系统解决方案。E-MapReduce构建于阿里云云服务器 ECS 上,基于开源的 Apache Hadoop 和 ApacheSpark,让用户可以方便地使用Hadoop和Spark生态系统中的其他周边系统(如 Apache Hive、Apache Pig、HBase等)来分析和处理自己的数据。不仅如此,用户还可以通过E-MapReduce将数据非常方便的导出和导入到阿里云其他的云数据存储系统和数据库系统中,如阿里云OSS、阿里云 RDS 等。
E-MapReduce 的用途
当用户想要使用 Hadoop、Spark 等分布式处理系统的时候,通常需要经历如下的步骤:
- 评估业务特点
- 选择机器类型
- 采购机器
- 准备硬件环境
- 安装操作系统
- 部署 Hadoop 和 Spark 等 app
- 启动集群
- 编写应用程序
- 运行作业
- 获取数据等一系列的步骤
在这些流程中,真正跟用户的应用逻辑相关的是从第8步才开始,第1-7步的各项工作都是前期的准备工作,通常这个前期工作都非常冗长繁琐。而E-MapReduce 提供了集群管理工具的集成解决方案,如主机选型、环境部署、集群搭建、集群配置、集群运行、作业配置、作业运行、集群管理、性能监控等。
通过使用E-MapReduce,用户可以从集群构建各种繁琐的采购、准备、运维等工作中解放出来,只关心自己应用程序的处理逻辑即可。此外,E-MapReduce还给用户提供了灵活的搭配组合方式,用户可以根据自己的业务特点选择不同的集群服务。例如,如果用户的需求是对数据进行日常统计和简单的批量运算,则可以只选择在E-MapReduce 中运行 Hadoop 服务;而如果用户还需要流式计算和实时计算的需求,则可以在 Hadoop 服务基础上再加入 Spark服务。
E-MapReduce 的组成
E-MapReduce 最核心也是用户直接面对的组件是集群。一个 E-MapReduce 集群是由一个或多个阿里云 ECS instance 组成的Hadoop 和 Spark 集群。以 Hadoop 为例,在每一个 ECS instance 上,通常都运行了一些 daemon 进程(如namenode、datanode、resoucemanager 和 nodemanager),这些 daemon 进程就组成了 Hadoop 集群。运行namenode 和 resourcemanager 的节点被称为 master 节点,而运行 datanode 和 nodemanager 的节点被称为slave 节点。
例如,下图表示了一个包含1个 master 节点和3个 slave 节点的 E-MapReduce 集群: