我有一个关于 Hadoop 文件拆分和多个映射器的一般性问题。我是 Hadoop 新手,正在尝试了解如何设置以获得最佳性能。我的项目目前正在处理 GZIPed 的 WARC 文件。
使用当前的 InputFileFormat,文件被发送到一个映射器并且不被拆分。我知道这是加密文件的正确行为。在运行作业以允许拆分作业并因此使用更多映射器之前将文件解密作为中间步骤是否会带来性能优势?那可能吗?拥有更多的映射器会产生更多的延迟开销,还是拥有一个映射器更好?谢谢你的帮助。
我有一个关于 Hadoop 文件拆分和多个映射器的一般性问题。我是 Hadoop 新手,正在尝试了解如何设置以获得最佳性能。我的项目目前正在处理 GZIPed 的 WARC 文件。
使用当前的 InputFileFormat,文件被发送到一个映射器并且不被拆分。我知道这是加密文件的正确行为。在运行作业以允许拆分作业并因此使用更多映射器之前将文件解密作为中间步骤是否会带来性能优势?那可能吗?拥有更多的映射器会产生更多的延迟开销,还是拥有一个映射器更好?谢谢你的帮助。
尽管 WARC 文件是 gzip 压缩的,但它们是可拆分的(参见Hadoop 输入的最佳可拆分压缩 = bz2?),因为每条记录都有自己的 deflate 块。但是必须提前知道记录偏移量。
但这真的有必要吗?Common Crawl WARC 文件的大小都在 1 GB 左右,应该在最大范围内正常处理。15分钟。鉴于启动映射任务的开销是映射器运行的合理时间。例如,一个映射器也可以处理一些 WARC 文件,但重要的是您有足够的输入 WARC 文件列表拆分,以便所有节点都在运行任务。在 Hadoop 上处理单个 WARC 文件将意味着大量不必要的开销。