开发流程:
- 首先写map函数和reduce函数,最好使用单元测试来确保函数的运行符合预期。
- 然后写一个驱动程序来运行作业,看这个驱动程序是否可以正确运行,可以先从本地IDE中用一个小的数据集来运行它。
- 调试,改进
- 部署到集群测试
- 测试,改进
- 正常运行之后,优化
用于配置的API
- Configuration org.apache.hadoop.conf
配置开发环境
- 不同环境使用不同的配置文件,跟web开发类同
- HADOOP_USER_NAME 设置hadoop 用户名
- HADOOP_CONF_DIR 配置信息环境变量
- 辅助类 Configured Tool ToolRunner
- 用MRUnit 来写单元测试
本地运行测试数据
在集群上运行
- 打包作业
- 启动作业
- 作业调试
- 通过打印语句
- 计数器 可以衡量问题的严重程度
- 日志
- 远程调试
作业调优
- mapper 的数量
- reducer 的数量
- combiner
- 中间值的压缩
- 自定义序列
- 调整 shuffle
MapReduce 的工作流
- 通常是增加更多的作业,而不是增加作业的复杂度
- 对于更复杂的问题,可考虑使用Pig, hive, Cascading, Crunch 或Spark
- JobControl
- Apache Oozie 是一个运行工作流的系统,该工作流由相互依赖的作业组成
转载于:https://my.oschina.net/mrq/blog/3101784