一 MapReduce原理
1 主程序及输入输出位置
- 输入:S3://yourBucketName/input/tweetData
- 输出:S3://yourBucketName/output/
- Jar : S3://yourBucketName/jar/tweetSentiment.jar
2 输入输出格式
#输入格式示例
2015-05-13|20:24:47 @Aero_vs_Aaron some times don't be fake can get to know each other
#输出格式
#时间段 推文数量 无效字段 正面得分 反面得分
2015-05-14|10:00 36 1 40.0 40.0
2015-05-14|9:00 29 1 33.0 37.0
totalSentiment 100 1 127.0 121.0
3 Map
Map做了以下工作:
- 对于每一行输入,确定推文的时间段并对推文内容进行预处理
- 对单个推文计算正面分数和反面分数
- 输出正面分数和反面分数
key
为时间段
4 Reduce
Reduce做了以下工作:
- 计算正面分数之和和反面分数之和
- 输出
二 集群开启
设置1:主要是设置终止保护和日志位置;
设置2:设置Hadoop版本,这里是AMAZON的2.2.0
设置3:设置EC2实例数量和配置,设置EC2访问键值对,设置IAM角色
设置4:添加新步骤,各种类型Map/Reduce任务,不过无需这里添加
集群开启成功
三 MapReduce在EMR上执行
只要执行MapRManager.runJob()方法即可
这里的集群ID需要复制到MapRManager.java中JobFlowID参数中
步骤执行完毕一段时间会在S3中产生四个日志文件,方便进行调试