这是多少fair amount of time
?看起来你误解了 Hadoop。启动 MR 作业时会有一些初始延迟。这是一个must
and unavoidable
,无论您的数据是 1KB 还是 1TB。这种延迟是由于初始化、拆分、地图创建等原因造成的。这不是因为您的文件有多个记录。并且处理大小文件far less than HDFS block size
不会给您带来任何好处。坦率地说,这是对 Hadoop 的低效使用。
您不必告诉 Hadoop 任何事情。该平台足够智能,可以拆分文件以实现最大效率。如果您有一个小于块的文件,并且您仍在拆分它,那么您将进一步降低性能。
您可以告诉 Hadoop 将文件拆分为多个 N
部分,但这并不简单。您必须扩展 API 并编写自己的自定义InputFormat
来实现这一点,因为拆分输入是 InputFormat 的职责。
但在做任何这些之前,我建议你阅读更多关于 Hadoop 的内容。另外,请阅读这篇文章:
http: //blog.cloudera.com/blog/2009/02/the-small-files-problem/
回应您的最后评论:
如果我理解正确,您正在使用 MR 拆分包含“输入文件名”的文件并将该文件复制到本地 FS。你真的通过这种方法获得了任何主要优势吗?我的意思是当与 HDFS 这样的分布式存储一起使用时,MR 显示了它的强大功能。此外,当您使用 MR 复制该大文件时,您将失去数据排序并最终可能会得到错误的结果。恕我直言,您最好将这些文件保存在本地 FS 本身并使用简单的 Java 程序拆分包含名称的文件。我认为使用 Hadoop 没有任何意义just as a store
。