当前位置: 首页 > 面试题库 >

使用Hadoop处理大量小文件

花健
2023-03-14
问题内容

我正在使用Hadoop示例程序WordCount处理大量的小文件/网页(大约2-3
kB)。由于这与hadoop文件的最佳文件大小相去甚远,因此该程序非常慢。我猜这是因为安置和撕毁工作的成本远远高于工作本身。这样的小文件还会导致文件名的命名空间耗尽。

我读到在这种情况下,我应该使用HDFS存档(HAR),但是我不确定如何修改此程序WordCount以从此存档中读取。程序可以在不进行修改的情况下继续运行,还是需要进行某些修改?

即使我在存档中打包了很多文件,仍然存在问题,这是否可以提高性能。我读到即使我打包多个文件,一个归档器中的文件也不会被一个映射器处理,但是很多文件在我的情况下(我猜)不会提高性能。

如果这个问题太简单了,请理解我是Hadoop的新手,并且经验很少。


问题答案:

使用HDFS不会改变您导致hadoop处理大量小文件的情况。在这种情况下,最好的选择可能是cat将文件分成一个(或几个大)文件。这将减少您拥有的映射器的数量,这将减少需要处理的事物的数量。

如果您在分布式系统上运行,则使用HDFS可以提高性能。如果仅使用伪分布式(一台计算机),则HDFS不会提高性能。限制是机器。

当您处理大量小文件时,这将需要大量映射器和精简器。设置/关闭可能与文件本身的处理时间相当,从而导致大量开销。cat文件应该减少该作业运行的映射器hadoop的数量,从而可以提高性能。

使用HDFS存储文件可以看到的好处是可以在多台计算机上使用分布式模式。这些文件将存储在计算机之间的块中(默认为64MB),每台计算机将能够处理驻留在计算机上的数据块。这减少了网络带宽的使用,因此它不会成为处理的瓶颈。

归档文件(如果hadoop要取消归档文件)只会导致hadoop仍然具有大量小文件。

希望这有助于您的理解。



 类似资料:
  • 问题内容: 要使用带有大量数字(100,000+)的Fermat基本性测试时需要的[模幂,它需要进行一些非常大的计算。 当我将两个大数相乘时(例如:62574和62574),PHP似乎将结果强制转换为浮点数。获取该模量的值将返回奇怪的值。 有什么方法可以使PHP正确执行这些计算?另外,还有另一种方法可以找到适用于大量数值的模量值吗? 问题答案: 出于某种原因,PHP中有两个处理任意长度/精度数字的

  • 我正在导入大小为24MB的csv文件,但每次它都被截断为0KB,并显示以下错误。 导入Csv:无法处理参数,因为参数“name”的值无效。更改“name”参数的值,然后再次运行该操作。 $data=导入Csv 在此对象上找不到属性“Column4”;确保它存在且可设置。 CategoryInfo:InvalidOperation:(Column4:String)[],RuntimeExceptio

  • 问题内容: 用Flask处理超大文件上传(1 GB以上)的最佳方法是什么? 我的应用程序实际上需要多个文件,为它们分配一个唯一的文件号,然后根据用户选择的位置将其保存在服务器上。 我们如何将文件上传作为后台任务运行,以使用户在1小时内没有浏览器旋转,而是可以立即进入下一页? Flask开发服务器能够处理大量文件(50gb需要1.5个小时,上传速度很快,但将文件写入空白文件的速度却很慢) 如果我用T

  • 我遇到了一个问题,我有多个窗体上有许多控件(20-40)。问题是,当我处理回发时,我需要将它们的值放入变量中,如果它们不是ASP.NET服务器控件(即选择、输入等)我有时需要确保他们的存在。因此,如果我有一个普通html复选框,它是未选中的,它将不会被发送到服务器,您需要检查它的存在,然后才能获得它的值。之后,我需要将它们传递到一个方法中以保存到数据库中。该方法处理我所有的crud和业务验证。设置

  • 问题内容: 我在HDFS目录中有一堆小文件。尽管文件 量 较小, 但是每个文件的处理时间却很大 。也就是说,一个文件(它是的默认拆分大小)甚至需要几个小时才能处理。 我需要做的是 减小拆分大小 ,以便我可以 利用更多的节点 来完成工作。 所以问题是,怎么可能通过说来分割文件?我需要实现我自己和这一点,或有任何参数设置?谢谢。 问题答案: 可以针对每个作业单独设置的参数。不要更改, 因为这对于HDF

  • 问题内容: 我有一个包含数百万行的文件,需要处理。文件的每一行都将导致HTTP调用。我正在尝试找出解决问题的最佳方法。 我显然可以读取文件并按顺序进行调用,但是速度会非常慢。我想并行化这些调用,但是不确定是否应该将整个文件读入内存(不是我的忠实拥护者)还是尝试并行化文件的读取(我想我不确定是否有道理)。 只是在这里寻找一些解决问题的最佳方法的想法。如果有一个类似的现有框架或库,我也很乐意使用它。