Amazon EMR over s3 上的 TezTask 顶点故障

Posted

技术标签:

【中文标题】Amazon EMR over s3 上的 TezTask 顶点故障【英文标题】:TezTask vertex Failure on Amazon EMR over s3 【发布时间】:2017-12-22 06:14:56 【问题描述】:

我在 EMR 上创建了 Hive 表,看起来像

create external table tests3(
transaction_id String,
order_id String,
user_id String,
amount String,
subscriber_number String,
product_type String,
provider String,
region String,
status String,
created_time String,
last_updated_time BIGINT,

)
row format 
    serde 'org.openx.data.jsonserde.JsonSerDe'
location 's3://locationtobucket';

当我从 tests3 中选择 * 时,我得到了记录。但是运行任何 tez 任务都会给我以下错误。

Query : select count(*) from tests3;

Vertex failed, vertexName=Map 1, vertexId=vertex_1513582536692_0022_1_00
, diagnostics=[Vertex vertex_1513582536692_0022_1_00 [Map 1] killed/failed due to:ROOT_INPUT_INIT_FAILURE, Vertex Input: tests3 initializer fail
ed, vertex=vertex_1513582536692_0022_1_00 [Map 1], com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Bad Req
uest (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: DEBA2E241B9DE8C3),

【问题讨论】:

【参考方案1】:

请检查您的账户是否对 S3 和您尝试访问的存储桶具有适当的权限。 此外,检查 S3 存储桶 url 是否正确,例如s3://locationtobucket/missingfile

标准的第一步是:尝试使用具有相同凭据的 AWS 命令​​行工具,通过如下命令:

hdfs fs -ls s3a://locationtobucket/

【讨论】:

当我从表名中选择 * 时,我能够获取记录;只有 mapreduce 操作失败。没有bucket权限或url错误,不允许查询读取记录。 你解决了吗?我正在尝试同样的问题【参考方案2】:

只需将hive执行引擎改为MR即可正常启动。

【讨论】:

以上是关于Amazon EMR over s3 上的 TezTask 顶点故障的主要内容,如果未能解决你的问题,请参考以下文章

通过s3在Amazon EMR上的TezTask顶点失败

如何将文件从 S3 复制到 Amazon EMR HDFS?

有关 Amazon EMR 上的流式作业流程的问题

如何在 Amazon EMR 上将连接器添加到 presto

带有 tez 的 aws emr 上的 Pig 脚本偶尔会因 OutOfMemoryException 而失败

为啥在 EMR 5.x 版本中取消了对 Amazon S3 的直接写入?