问题标签 [amazon-emr]

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 投票
1 回答
1851 浏览

hive - 如何在 EMR Hive 中映射动态 dynamoDB 列

我在 Amazon dynamoDB 中有一个表,其记录结构如下

其中 products 属性是属于用户的产品列表,并且 expires n属性与列表中的产品相关,产品列表是动态的并且有很多。我需要以类似的格式将此数据传输到 S3

使用 hive 外部表,我可以映射 dynamoDB 中的用户名和产品列,但是我无法映射动态列。有没有一种方法可以扩展或调整 org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler 以便在 hive 摄取之前解释和构造从 dynamo 检索到的数据?或者是否有替代解决方案将发电机数据转换为第一范式?

我的一个关键要求是我保持 dynamodb.throughput.read.percent 设置提供的限制,这样我就不会影响表的操作使用。

0 投票
2 回答
7322 浏览

amazon-s3 - 如何终止/删除 Amazon EMR 中的作业流?

我使用 Amazon Elastic MapReduce (Amazon EMR) 创建了一个作业流,但由于某些未知原因而失败。然后我尝试通过 AWS 管理控制台终止作业流程,但“终止”按钮被禁用。然后我尝试使用 CLI 终止作业流程,它显示作业流程已终止,但是当通过 CLI 以及管理控制台的 Elastic MapReduce 选项卡查看时,它仍然在作业流程列表中显示为失败。

请让我知道如何从列表中删除工作流程。

当我尝试调试作业流程时,它显示两个错误:

  1. 调试功能不适用于此作业流程,因为您在创建 Amazon S3 日志路径时未指定它。
  2. 作业流程失败,原因是:无效的存储桶名称“testBucket”:存储桶名称只能包含小写字母、数字、句点 (.) 和破折号 (-)。
0 投票
1 回答
1682 浏览

hadoop - Elastic Mapreduce Map 输出丢失

我在 Amazon Elastic MapReduce 上运行大量(超过 100 个节点)的 mapreduce 作业。

在 reduce 阶段,已经完成的 map 任务不断失败

发生这种情况的映射器的比例足够少,我不介意,除非它发生时,reducers 都会暂停并等待 1 个映射任务重新运行,因此整个作业每次都会暂停 1-5 分钟.

我认为这与此错误有关-> https://issues.apache.org/jira/browse/MAPREDUCE-2980 有谁知道如何在不发生这种情况的情况下运行 EMR 作业?

编辑:如果有帮助,这里有更多信息。输入格式为SequenceFileInputFormat。输出格式是SequenceFileOutputFormat. 键值对是用户定义的(值很大并且实现Configurable)。没有Combiner,只有MapperReducer。我正在对输入和输出使用块压缩(并且中间 kv 对也正在进行记录压缩。这是 EMR 的默认设置)。SnappyCodec我相信编解码器是默认的。最后,它实际上是一系列按顺序运行的作业,每个作业都使用前一个作业的输出作为下一个作业的输入。前几个工作很小并且运行良好。只有当工作开始变得非常大时,才会发生这种情况。

0 投票
3 回答
3265 浏览

java - 与在 Amazon EMR 上运行 Hive/Sqoop 相关的查询?

我的用例:

我想通过 SQOOP 从 EC2 将大数据导入 Hive。Hive 中导入的数据将通过应用一些算法在 Hive 中进行处理,并生成一些结果(以表格形式,仅在 Hive 中)。并且生成的结果将仅通过 SQOOP 再次导出回 Ec2。

我是 Amazon Web Services 的新手,想在 AWS EMR 的帮助下实施这个用例。我已经在本地机器上实现了它。

我已经阅读了一些与 AWS EMR 相关的链接,用于启动实例以及 EMR 是什么、它是如何工作的等等......

我对 EMR 有一些疑问,例如:

1) EMR 使用 S3 Buckets,它保存输入和输出数据 Hadoop 处理(以对象的形式)。---> 我没有得到如何在 S3 上以对象的形式存储数据(我的数据将是文件)

2)如前所述,我已经在 J​​ava 中为我的用例实现了一项任务。因此,如果我创建程序的 JAR 并使用自定义 JAR 创建作业流。是否有可能像这样实现,还是需要为此做一些额外的事情?

3) 正如我在用例中所说,我想在 SQOOP 的帮助下将结果导出回 Ec2。EMR 是否支持 SQOOP?

--edited part 4) 此外,我将每天/每周从 SQL Server 导入我的数据,因为我在 SQL Server 中的数据每天/每周都会更新。如果我想在 S3 上导入该数据并将其提供给 Hive,那么我该怎么做?(因为 Hive 将其数据存储在 /user/hive/warehouse 目录下的 HDFS 上)。如何链接到 HDFS 中的 S3 和 /user/hive/warehouse 目录。

请尽快回复我您的答案。我想尽早做到这一点。

非常感谢。

0 投票
1 回答
978 浏览

amazon-web-services - 运行 Amazon EMR 作业时出现“文件不存在”错误

我已经上传了我的数据 genotype1_large_ind_large.txt phenotype1_large_ind_large_1.txt

到 S3 系统,在 EMR UI 中,我设置如下参数

RunDear.run s3n://scalability/genotype1_large_ind_large.txt s3n://scalability/phenotype1_large_ind_large_1.txt s3n://scalability/output_1phe 33 10 4

在我的 RunDear.run 类中,我会将文件 genotype1_large_ind_large.txt 和 phenotype1_large_ind_large_1.txt 分发到缓存中

但是,运行 EMR 后,出现以下错误: java.io.FileNotFoundException: File does not exist: /genotype1_large_ind_large.txt

我想知道为什么文件名前面有斜杠'/'?如何使它工作?

我也尝试像下面这样使用,但我的程序会将 -cacheFile 作为参数,因此也不起作用,

RunDear.run -cacheFile s3n://scalability/genotype1_large_ind_large.txt#genotype.txt -cacheFile s3n://scalability/phenotype1_large_ind_large_1.txt#phenotype.txt s3n://scalability/output_1phe 33 280 4

0 投票
1 回答
1754 浏览

amazon-s3 - 如何在 Amazon EMR/S3 中查看输出?

我是 Amazon Services 的新手,并尝试在 Amazon EMR 中运行该应用程序。

为此,我已按照以下步骤操作:

1) 创建了包含 --> create table 的 Hive 脚本,在 Hive 中使用一些文件加载​​数据语句并从命令中选择 *。

2) 创建 S3 存储桶。我将对象加载到其中:Hive 脚本,文件加载到表中。

3) 然后创建作业流程(使用示例 Hive 程序)。给定输入、输出和脚本路径(如 s3n://bucketname/script.q、s3n://bucketname/input.txt、s3n://bucketname/out/)。没有创建目录。我认为它会自动创建。

4) 然后 Job Flow 开始运行,一段时间后我看到状态为 STARTING、BOOTSTRAPING、RUNNING 和 SHUT DOWN。

5) 在运行 SHUT DOWN 状态时,它会自动终止,显示 SHUT DOWN 的 FAILES 状态。

然后在 S3 上,我没有看到 out 目录。如何查看输出?我看到了守护进程、节点等目录......

以及如何在 Amazon EMR 中查看来自 HDFS 的数据?

0 投票
2 回答
3937 浏览

hadoop - 弹性 MapReduce 上的 Mahout:Java 堆空间

我在 Amazon Elastic MapReduce 集群上从命令行运行 Mahout 0.6,试图对大约 1500 个短文档进行树冠集群,并且作业不断失败,并显示“错误:Java 堆空间”消息。

根据这里和其他地方以前的问题,我已经调高了我能找到的每个内存旋钮:

  • conf/hadoop-env.sh:在小型实例上将所有堆空间设置为高达 1.5GB,在大型实例上甚至为 4GB。

  • conf/mapred-site.xml:添加 mapred.{map, reduce}.child.java.opts 属性,并将其值设置为 -Xmx4000m

  • $MAHOUT_HOME/bin/mahout:增加 JAVA_HEAP_MAX 并将 MAHOUT_HEAPSIZE 设置为 6GB(在大型实例上)。

而且问题一直存在。我一直在反对这个问题太久了——有人有什么建议吗?

完整的命令和输出看起来像这样(在大型实例集群上运行,希望它能缓解问题):

0 投票
0 回答
194 浏览

java - 我的 JobFlow(JobFlow 由 Hive 和 JDBC 组成)在 Amazon EMR 上的执行性能

在阅读了各种链接和一些博客之后,我已经在 Amazon Elastic Map Reduce 上设置了我的工作。现在我正在运行我的 java 代码,它在 Hive 和 JDBC 中有任务。

我已经在本地机器(单集群)上测试了我的程序。它执行良好,没有错误。但要提高执行速度。现在我开始在 Amazon EMR 上运行该程序,但与单集群机器相比,我的执行速度太慢了。我正在使用 2 个中型实例运行我的程序。

为什么会这样?请让我知道这件事。

谢谢。

0 投票
1 回答
128 浏览

amazon-emr - 与 Amazon Elastic Mapreduce 中的 Job 执行速度有关

我的任务是 1) 最初我想使用 SQOOP 将数据从 MS SQL Server 导入 HDFS。2)通过 Hive,我正在处理数据并在一个表中生成结果 3)包含来自 Hive 的表的结果再次导出到 MS SQL SERVER。

我想使用 Amazon Elastic Map Reduce 执行所有这些操作。

我从 MS SQL Server 导入的数据非常大(一张表中大约有 5,00,000 个条目。同样我有 30 个表)。为此,我在 Hive 中编写了一个仅包含查询的任务(并且每个查询都使用了很多连接)。因此,由于这个原因,我的单台本地机器上的性能非常差(完全执行大约需要 3 小时)。

我想尽可能少地减少那个时间。为此,我们决定使用 Amazon Elastic Mapreduce。目前我正在使用 3 m1.large 实例,但我的性能仍然与本地机器相同。

为了提高性能,我需要使用多少个实例?由于我们使用的实例数量是自动配置的,还是我需要在提交 JAR 以执行时指定?因为我使用两台机器的时间是一样的。

还有有没有其他方法可以提高性能或者只是增加实例的数量。或者我在执行 JAR 时做错了什么?

请指导我完成这个,因为我对亚马逊服务器不太了解。

谢谢。

0 投票
2 回答
1744 浏览

amazon-emr - 我们能否将更多 Amazon Elastic Mapreduce 实例添加到现有 Amazon Elastic Mapreduce 实例中?

我是亚马逊服务的新手,面临一些问题。

假设我在 Amazon Elastic Mapreduce 上运行一些作业流程,总共有 3 个实例。在上面运行我的工作流程时,我发现我的工作需要更多时间来执行。在这种情况下,我需要向其中添加更多实例,以便我的实例会增加,因此作业将快速执行。

我的问题是如何将此类实例添加到现有实例中?因为如果我们终止现有实例并再次创建更多数量的新实例是耗时的。

有什么办法吗?如果是,请建议我。我正在通过 CLI 完成所有这些任务。因此,请也与 AWS 管理控制台中的 GUI 步骤一起使用命令分享答案。

谢谢。