Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

API 调用的常见概念

如果编写调用 Amazon EMR API 的应用程序,在调用开发工具包的包装函数之一时需要了解几个概念。

Amazon EMR 的终端节点

终端节点是作为 Web 服务入口点的 URL。每个 Web 服务请求都必须包含一个终端节点。终端节点指定了创建、描述或终止集群所在的 AWS 区域。其形式是 elasticmapreduce.regionname.amazonaws.com.cn。如果您指定了通用终端节点 (elasticmapreduce.amazonaws.com.cn),Amazon EMR 会将您的请求转至默认地区的终端节点。对于 2013 年 3 月 8 日或之后创建的账户而言,默认区域是 us-west-2;对于老账户而言,默认区域是 us-east-1。

有关 Amazon EMR 的终端节点的更多信息,请参阅 Amazon Web Services 一般参考中的区域和终端节点

在 Amazon EMR 中指定集群参数

Instances 参数可让您配置 EC2 实例的类型和数量,以创建用于处理数据的节点。Hadoop 将数据的处理分布到多个集群节点。主节点负责跟踪核心和任务节点的运行状况并轮询节点的作业结果状态。核心和任务节点执行实际的数据处理。如果有一个单节点集群,则该节点同时用作主节点和核心节点。

KeepJobAlive 请求中的 RunJobFlow 参数用于确定在集群步骤执行完毕时是否终止该集群。当您知道该集群按预期运行时,将该值设置为 False。当您在集群执行暂停期间排除任务流程故障和添加步骤时,将该值设置为 True。这可以减少向 Amazon Simple Storage Service (Amazon S3) 上传结果的时间和费用,只需在修改重新启动此集群的步骤后重复该流程即可。

如果 KeepJobAlivetrue,在成功地让集群完成其工作后,您必须发送一个 TerminateJobFlows 请求,或让集群继续运行并生成 AWS 费用。

有关具有唯一性的 RunJobFlow 参数的详细信息,请参阅 RunJobFlow。有关该请求中泛型参数的详细信息,请参阅常见请求参数

Amazon EMR 的可用区

Amazon EMR 将 EC2 实例作为处理集群的节点。这些 EC2 实例的位置由可用区和地区组成。区域分散存在,位于独立的地理区域。在一个区域内,可用区的位置各不相同,用于隔离其他可用区的故障。每个可用区向同一区域中的其他可用区提供低成本、低延迟的网络连接。有关 Amazon EMR 的区域和终端节点的列表,请参阅 Amazon Web Services 一般参考中的区域和终端节点

AvailabilityZone 参数指定集群的一般位置。此参数是可选的,一般而言,我们不鼓励使用该参数。未指定 AvailabilityZone 时,Amazon EMR 为集群自动挑选最佳的 AvailabilityZone 值。如果想让您的实例和其他运行中的现有实例处于同一位置,而您的集群需要从那些实例中读取数据或写入数据,您可能会发现这个参数很有用。有关更多信息,请参见 Amazon EC2 用户指南(适用于 Linux 实例)

如何在 Amazon EMR 集群中使用其他文件和库

有些时候,您可能喜欢通过您的映射器或 Reducer 应用程序使用其他文件或自定义库。例如,您可能喜欢使用把 PDF 文件转换成纯文本的库。

Hadoop 流式处理时缓存文件供映射器或 Reducer 使用

  • 在 JAR args 字段中,添加以下参数:

    -cacheFile s3://bucket/path_to_executable#local_path

    文件 local_path 在映射器的工作目录中,映射器可以引用这个文件。