MapReduce应用开发
在第2章中,我们介绍了MapReduce模型。在本章中,我们来看看在Hadoop中开发MapReduce应用程序的实际过程。
用MapReduce来编写程序,有一个特定的流程。首先写map函数和reduce函数, 最好使用单元测试来确保函数的运行符合预期。然后,写一个驱动程序来运行作 业,要看这个驱动程序是否可以运行,可以从本地IDE用一个小的数据集来运行 它。如果驱动程序不能正确运行,就用本地IDE调试器来找出问题根源。通过这 些调试信息,可以加大单元测试使其覆盖这一测试用例,从而改进mapper或 reducer,尽可能正确地处理这些输入。
一旦程序如期通过小的数据集的测试,就可以准备运行到集群上。当程序运行在整 个数据集的时候,可能会暴露更多的问题,这些问题可以像前面一样进行修复,即 扩大测试用例进而改进mapper或reducer函数。虽然在集群上调试程序很具有挑 战性,但Hadoop提供了一些辅助工具,例如IsolationRunner,该工具允许在 失败的相同输入数据上(必要时用附带的调试器)来运行任务。
程序可以正确运行后,你可能想进行一些优化调整,首先执行一些标准检查,借此 加快MapReduce程序的运行,然后再做一些任务剖析(taskprofiling)。分布式程序 的分析并不简单,Hadoop提供了钩子(hook)来辅助这个分析过程。
在开始写MapReduce程序之前,需要设置和配置开发环境。为此,首先需要学习 如何配置Hadoop。