我想知道您的Hadoop开发环境是什么样的?
您是否将jar部署到测试集群,或者以本地模式运行jar?
您使用什么IDE以及使用哪些插件?
如何部署要在服务器上运行的已完成项目?
关于设置我自己的Hadoop开发/测试环境,您有什么其他建议?
答案 0 :(得分:7)
看到人们在像Eclipse或IJ这样的IDE中编写java MR作业是非常常见的。有些甚至使用像Karamasphere的开发工具这样的插件很方便。至于测试,正常的过程是像往常一样对业务逻辑进行单元测试。您可以使用MRUnit类对一些MR周围基础设施进行单元测试(请参阅Hadoop的contrib)。下一步通常是在本地作业运行器中进行测试,但请注意这里有一些注意事项:分布式缓存在本地模式下不起作用,并且您是单线程的(因此静态变量可以通过它们不会访问的方式访问)在生产中)。下一步(和最常见的测试环境)是伪分布式模式 - 所有守护进程都在运行,但在一个盒子上运行。这将在不同的JVM中运行代码,并行执行多个任务,并将揭示大多数开发人员错误。
MR作业罐以不同方式分发到客户端计算机。通常可以在此处查看自定义部署过程有些人使用像Capistrano这样的工具或像Chef或Puppet这样的配置管理工具来实现自动化。
我的个人开发通常在Eclipse中使用Maven完成。我使用Maven的Assembly插件构建jar(将所有依赖项打包在一个jar中以便于部署,但是更胖的jar)。我经常使用MRUnit测试,然后使用伪分布式模式。根据我的经验,当地的职业跑步者并不是很有用。部署几乎总是通过配置管理系统。可以使用像Hudson这样的CI服务器自动进行测试。
希望这有帮助。