0

我的任务是 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 时做错了什么?

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

谢谢。

4

1 回答 1

2

您可以尝试 Ganglia,它可以使用引导操作安装在您的 EMR 集群上。这将为您提供有关集群中每个节点性能的一些指标,并可能帮助您优化以获得合适大小的集群: http ://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_Ganglia.html

如果您在本地计算机上使用 EMR Ruby 客户端,则可以设置 SSH 隧道以允许您在 Firefox 中查看 ganglia Web 界面(您还需要按照以下http://docs.amazonwebservices设置 FoxyProxy .com/ElasticMapReduce/latest/DeveloperGuide/emr-connect-master-node-foxy-proxy.html )

于 2012-12-05T06:09:17.563 回答