问题标签 [elastic-map-reduce]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7215 浏览

hadoop - 如何确保 RegexSerDe 可用于我的 Hadoop 节点?

我正在尝试解决使用 Hive 分析 Web 日志的问题,并且我已经看到了很多示例,但我似乎找不到任何遇到此特定问题的人。

这就是我所在的位置:我已经设置了一个 AWS ElasticMapReduce 集群,我可以登录,然后我启动了 Hive。我确保add jar hive-contrib-0.8.1.jar,它说它已加载。我创建了一个名为 的表event_log_raw,其中包含一些字符串列和一个正则表达式。 load data inpath '/user/hadoop/tmp overwrite into table event_log_raw,我要去参加比赛了。select * from event_log_raw工作(我认为在本地,因为我没有得到地图 % 和减少 % 输出),我从我的样本数据中得到了 10 条记录,正确解析,一切都很好。 select count(*) from event_log_raw也可以,这次创建了一个 mapreduce 作业。

我想将我的request_url字段转换为地图,所以我运行:

Mapreduce 启动,等待,等待......失败。

我从任务跟踪器中检查系统日志并查看,除其他外,

我已经用谷歌搜索过这个,但我想我的 google-fu 达不到标准。我发现的一切都表明人们遇到了这个问题并通过运行add jar命令来解决它。我试过了,我试过把它添加到我的hive-site.xml,我试过把它放在本地,试着把罐子放在一个 s3 桶里。尝试添加引导步骤以在引导阶段添加它(灾难)。

谁能帮我弄清楚a.)为什么我的任务节点找不到RegexSerDe,以及b.)如何使它工作?也欢迎链接,如果它们可能揭示的不仅仅是运行add jar

提前致谢!

0 投票
3 回答
317 浏览

hadoop - 根据映射器代码中的某些逻辑,将映射器中的一些数据(行)写入单独的目录

我正在使用 mrjob 来满足我的 EMR 需求。

如何根据我的映射器代码中的一些逻辑将一些数据(行)从我的映射器写入“单独的目录”:

  1. tar gzip 和

  2. 作业完成/突然终止后上传到单独的 S3 存储桶(取决于目录名称)?

我猜 ' --output-dir' 选项只允许您将最终作业输出上传到该目录,但我想不时从我的映射器写入其他目录。

0 投票
1 回答
817 浏览

java - 作为映射器值输出的接口

我有一个映射器,其输出值设置为这样的接口:

在映射期间,我使用此签名创建对象并发出它们:

我的映射器是这样的:

但是我收到此错误:

所以我的第一个直觉是尝试像这样投射它:

但是我仍然遇到同样的错误。这在我将映射器输出类型从 OutRecord 类更改为 OutValue 接口之前有效。我这样做的原因是我想从这个映射器发出许多类型的 OutRecord 类。

这可能吗?OutValue 必须是类而不是接口吗?

更新:

我挖掘了 Hadoop 0.20.205.0 的一些源代码,发现了这个:

所以他们使用的运行时检查需要类中的严格相等,他们不检查子类/接口等。当然这是一个常见的用例,有没有人尝试过这样做?

0 投票
1 回答
3429 浏览

amazon-s3 - 我已完成工作的 AWS EMR 减速器输出在哪里(应该在 S3 上,但那里什么也没有)?

我遇到了一个问题,我在 AWS 的 EMR 上的 Hadoop 作业没有保存到 S3。当我在较小的样本上运行该作业时,该作业可以很好地存储输出。当我在完整的数据集上运行相同的命令时,作业再次完成,但在我指定输出的 S3 上没有任何内容。

显然,AWS EMR 在 2009 年存在一个错误,但它已“修复”。

其他人有过这个问题吗?我的集群仍然在线,希望数据被埋在某处的服务器上。如果有人知道我在哪里可以找到这些数据,请告诉我!

更新:当我查看其中一个减速器的日志时,一切看起来都很好:

当我连接到这个任务的节点时,提到的临时目录是空的。

更新 2:在阅读了 Hadoop 中 Amazon S3 和 S3n 之间的差异之后,我想知道我的问题是否是使用“s3://”而不是“s3n://”作为我的输出路径。在我的小样本(存储良好)和我的全部工作中,我使用了“s3://”。关于这是否可能是我的问题的任何想法?

更新 3:我现在看到在 AWS 的 EMR 上,s3:// 和 s3n:// 都映射到 S3 本机文件系统(AWS EMR 文档)。

更新 4:我又重新运行了两次这项工作,每次都增加服务器和减速器的数量。这两个中的第一个完成了 89/90 减速器输出被复制到 S3。90th 说它根据日志复制成功,但 AWS Support 说文件不存在。他们已将此问题上报给他们的工程团队。我第二次运行更多的减速器和服务器实际上完成了所有数据复制到 S3(谢天谢地!)。一个奇怪的是,一些 reducer 需要 FOREVER 将数据复制到 S3——在这两次新运行中,有一个 reducer 的输出需要 1 或 2 个小时才能复制到 S3,而其他 reducer 最多只需要 10 分钟(文件是 3GB 左右)。我认为这与 EMR 使用的 S3NativeFileSystem 有问题有关(例如长期挂起——我当然要为此付费;以及未上传的所谓成功上传)。我会先上传到本地 HDFS,然后上传到 S3,但我是在这方面也有问题(等待 AWS 工程团队的审查)。

TLDR;使用 AWS EMR 直接存储在 S3 上似乎有问题;他们的工程团队正在调查。

0 投票
2 回答
6652 浏览

amazon-web-services - 在输出到 HDFS 的 EMR 作业中使用 distcp 和 s3distcp 时出现问题

我在 AWS 的 EMR 上运行了一项作业,并将输出存储在 EMR 作业的 HDFS 中。然后我尝试通过 distcp 或 s3distcp 将结果复制到 S3,但两者都失败,如下所述。(注意:我不只是将我的 EMR 作业的输出直接发送到 S3 的原因是由于我在Where is my AWS EMR reducer output for my completed job 中描述的(当前未解决的)问题(应该在 S3 上,但那里什么也没有)?

对于 distcp,我运行(按照这篇文章的建议):

在错误日志(/mnt/var/log/hadoop/steps/8)中,我得到:

对于 s3distcp,我运行(按照s3distcp 文档):

在错误日志(/mnt/var/log/hadoop/steps/9)中,我得到:

任何想法我做错了什么?

更新:有人在 AWS 论坛上回复有关类似 distcp 错误的帖子提到 IAM 用户用户权限,但我不知道这意味着什么编辑:我尚未创建任何 IAM 用户,因此它使用默认值); 希望它有助于查明我的问题。

更新 2:我在 namenode 日志文件中注意到此错误(重新运行 s3distcp 时)。我将查看默认 EMR 权限,看看是否是我的问题:

更新 3:我联系了 AWS Support,他们没有发现问题,所以现在正在等待他们的工程团队的回复。当我听到更多消息时会回复

0 投票
1 回答
420 浏览

amazon-ec2 - AWS 弹性地图上的加入性能降低运行配置单元

我正在运行一个简单的连接查询

表 t1 和 t2 都有 2000 万条记录,列 sno 是字符串数据类型。

表数据以 rcfile 格式从 Amazon s3 导入 HDFS。15 个 Amazon 大型实例的查询耗时 109 秒,但在 16 GB RAM 和 16 个 cpu 内核的 sql server 上耗时 42 秒。

我错过了什么吗?不明白为什么我在亚马逊上的表现会变慢?

0 投票
3 回答
2758 浏览

hadoop - 是否可以在 S3 中运行 hadoop fs -getmerge?

我有一个 Elastic Map Reduce 作业,它正在 S3 中编写一些文件,我想连接所有文件以生成一个唯一的文本文件。

目前我正在手动将包含所有文件的文件夹复制到我们的 HDFS (hadoop fs copyFromLocal),然后我正在运行 hadoop fs -getmerge 和 hadoop fs copyToLocal 来获取文件。

反正有没有直接在S3上使用hadoop fs?

0 投票
2 回答
3113 浏览

git - 在 EMR 上安装 GIT

1) 我被告知 git 已安装在 EMR 上。这是真的 ?我不相信,因为我可以确认在我的 elastic-mapreduce ssh 终端中找不到“git”。见:https ://raw.github.com/gist/3177009/6128554a2668367b72758be74885836e41898923/gistfile1.txt 。

2)我需要在 EMR 上安装 git,但是下面这行:

hadoop@ip-10-235-11-52:/mnt$ sudo apt-get install git --assume-yes

结果是 :

hadoop@ip-10-235-11-52:/mnt$ sudo apt-get install git --assume-yes 读取包列表...完成 构建依赖树
读取状态信息...完成 git 已经是最新版本了。0 升级,0 新安装,0 删除,3 未升级。

然而不幸的是,即使在发出此命令之后,git 也不会在此 EMR 实例上运行:

hadoop@ip-10-235-11-52:/mnt$ git -bash: git: 找不到命令 hadoop@ip-10-235-11-52:/mnt$ sudo git sudo: git: 找不到命令

0 投票
3 回答
3621 浏览

hadoop - Amazon Elastic MapReduce:输出目录

我正在运行 Amazon 运行 Elastic MapReduce 的示例,并不断遇到以下错误:

启动作业时出错,输出路径已存在。

这是运行我正在使用的作业的命令:

这是示例的来源here

我正在按照亚马逊关于输出目录的说明进行操作。存储桶名称是s3n://mp.maptester321mark/。我已经查看了他们对这个 url问题的所有建议

这是我的credentials.json信息:

0 投票
1 回答
679 浏览

hadoop - Apache HBase 和 Cloudera HBase 是否兼容?

在工作中,我们正在尝试执行以下操作:

  • 通过 Amazon 运行 Elastic MapReduce 作业,它将 Hadoop 冻结在 0.20.205 版本
  • 将输出写入在 EC2 上运行的 HBase,特别是来自 Cloudera 的 0.92.1-cdh4.0.1

到目前为止,我发现当我在 Hadoop 作业(通过 maven 打包)中使用 Apache HBase 0.92.1 时,我的 WordCount 测试似乎有效。我担心这是意外工作,并且随着我的使用成熟可能会爆炸。

但是,当我在 Hadoop 作业中打包 HBase 0.92.1-cdh4.0.1 时,我得到ClassNotFoundException

https://emr-qa.eventbrite.com.s3.amazonaws.com/logs/j-RWJ75VR11SLB/steps/1/stderr

  • Apache HBase jar 能否与 CDH Hbase 服务器很好地配合使用?
  • 像这样混合版本和软件包是可怕的主意吗?