自动链接mapreduce库

时间:2013-08-12 07:08:41

标签: hadoop amazon-web-services mapreduce

我正在开发一个在亚马逊网络服务上运行的mapreduce程序(它实际上是一个相当复杂的wordcount算法)。我生成了一个.jar来在AWS节点上运行。我现在正在做的是将所有mapreduce库jar合并到我的.jar文件中。一切正常,但我想这不是一个很好的做法(他们做了一些他们的机器图像的更新,我得到奇怪的例外,可能与此有关)。有人可以解释我如何自动链接亚马逊上安装的hadoop版本,所以我可以不用添加外部库到我的jar?

很多你的帮助!

1 个答案:

答案 0 :(得分:2)

所以你正在使用Amazons Elastic MapReduce! 有不同的ami版本可以使用不同的hadoop版本,请参阅http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-ami.html#emr-default-versions

hadoop jars本身+它的第三方依赖(例如commons-io)已经在你的工作的类路径中。所以你是对的,如果你把hadoop罐子和其他版本捆绑到你的工作罐里,它可能会出问题。 所以我想说你可以: - 确定你正在启动哪个hadoop版本(基于ami版本) - 确定hadoop版本中使用的库(检查正在运行的ec2实例或从apache website下载hadoop版本) - 再次编译你的程序正确的hadoop并排除所有hadoop和hadoops-3rd party jar当你捆绑胖罐