《Designing.Data-Intensive.Applications》笔记 五
第十章 批处理 三种不同类型的系统 : 服务(在线系统):服务等待客户的请求或指令到达。每收到一个,服务会试图尽快处理它,并发回一个响应。响应时间通常是服务性能的主要衡量指标。 批处理系统(离线系统):一个批处理系统有大量的输入数据,跑一个job来处理它,并生成一些输出数据,这往往需要一段时间(几分钟到几天),所以通常不会有用户等待作业完成。一般批处理会定期运行。批处理的主要性能衡量标准通常是吞吐量。本章讨论的就是批处理。 流处理(准实时系统):介于在线和离线之间。像批处理系统一样,流处理消费输入并产生输出(并不需要响应请求)。但是,流式作业在事件发生后不久就会对事件进行操作,而批处理作业需等待固定的一组输入数据。这种差异使流处理系统比批处理系统具有更低的延迟。 MapReduce是一种批处理算法 MapReduce和分布式文件系统 MapReduce有点像Unix工具,但分布在数千台机器上。它接收一个或多个输入,并产生一个或多个输出。 MapReduce的作业执行 Mapper Mapper会在每条输入记录上调用一次,其工作是从输入记录中提取键值对。对于每个输入,它可以生成任意数量的键值对(包括None)。两次输入记录之间,它不会保留任何状态,因此每个记录都是独立处理的。 Reducer The MapReduce framework takes the key-value