如Hadoop权威指南中所述,在提交MR作业期间,计算输入拆分,然后将其复制到JobTracker的文件系统。但是,如果数据非常庞大,那对我来说没有意义。此副本将花费大量时间,如果运行JobTracker的节点没有足够的空间,此副本会发生什么?请澄清这个处理框架。 提前谢谢。
答案 0 :(得分:1)
InputSplits只是块边界的逻辑抽象。通常,InputSplit包含以下信息:
对于给定的作业,JobClient负责通过调用内部调用的FileSplit
方法来计算输入拆分信息(这只是上述writeSplits
个对象的ArrayList) InputFormat
的{{1}}方法,一旦计算出来,这些信息就会被复制到JobTracker将从中读取的HDFS,并根据数据位置安排映射器。
如果您对如何计算分割本身感兴趣,请查看 FileInputFormat.getSplits 方法。