MapReduce 作为 分布式计算框架(在分布式集群中)
优:可靠、容错、海量数据处理
缺:慢(分成的map太多?)
任务如何下发到各服务器:
大数据进程:启动MapReduce程序的主入口(用户提交的MapReduce任务),内包含实际Map任务、实际Reduce任务,输入输出文件位置。
jobtracker:根据处理数据量,命令taskTracker启动相应数量Map和Reduce进程任务,管理整个作业生命周期内的任务调度与监控,全局唯一。负责指挥的就是它。
tasktracker:与DataNode同个地方,启动及管理Map与Reduce进程,实际干活的就是它。
jobTracker 主,唯一
tasktracker 从,多个
各服务器map处理后的数据如何合并 并给对应reduce:
shuffle:如何将相同的key的数据发给相同的reduce
1.map和reduce数量有jobtracker定的,所以分在哪个服务器的reduce的识别号,框架可知
2.shuffle 是框架的,汇总所有数据及key,将key与reduce识别号一一对应,并将汇总后的数据发给reduce可行(重点是如何对应)
3.hdfs是主从架构,reduce将结果写入各地方的文件,,可上传啊,相当于全知道了
shuffle 是发生在map后,reduce前的灵魂过程