Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop-如何提高我的案例的性能?_Hadoop_Elastic Map Reduce_Amazon Emr_Cascading - Fatal编程技术网

Hadoop-如何提高我的案例的性能?

Hadoop-如何提高我的案例的性能?,hadoop,elastic-map-reduce,amazon-emr,cascading,Hadoop,Elastic Map Reduce,Amazon Emr,Cascading,目前我使用AWS-EMR作为集群。对于库,我使用级联 输入数据存储在aws S3的目录中。该目录包含许多文件,每个文件的大小约为100mb(非压缩,纯文本),并且每天的文件数量很容易达到100个。每个文件的文件名都包含一个日期。在一天结束时,我会处理当天生成的所有文件 目前,我的hadoop应用程序进程如下: 使用S3文件夹作为输入点击,使用GlobHfs GlobHFS有一个自定义过滤器,用于过滤文件名,只接受今天的文件 仅处理过滤后的文件,并将输出tap设置为S3 我的问题: 我应该使

目前我使用AWS-EMR作为集群。对于库,我使用级联

输入数据存储在aws S3的目录中。该目录包含许多文件,每个文件的大小约为100mb(非压缩,纯文本),并且每天的文件数量很容易达到100个。每个文件的文件名都包含一个日期。在一天结束时,我会处理当天生成的所有文件

目前,我的hadoop应用程序进程如下:

  • 使用S3文件夹作为输入点击,使用
    GlobHfs
  • GlobHFS
    有一个自定义过滤器,用于过滤文件名,只接受今天的文件
  • 仅处理过滤后的文件,并将输出tap设置为S3
我的问题:

  • 我应该使用压缩吗?如果是,我应该使用什么压缩类型?我阅读了.gz压缩使得只有一个映射程序可以完成这项工作,在我的情况下,文件夹中有许多文件,这与此相关吗?我应该在每个文件中使用LZO吗
  • 我应该存储较大的文件,还是当前的格式(许多较小的文件)足够好

  • 压缩将有助于减少网络数据流。LZO压缩更适合MR-jobs。但是,由于您的文件存储在S3而不是HDFS中,因此无论使用何种压缩,每个文件都将由映射器进行处理。据我所知,块大小不适用于S3

    这里的建议是在bucket下创建密钥,每个密钥对应一个日期。这将加速输入过滤。e、 g//


    用于EMR集群的节点类型可能是决定文件大小的因素之一。如果节点是高效的节点,如r3.8XL,则输入文件大小可能更大。另一方面,如果是m1,则文件大小必须较小,才能正确使用群集。

    请注意,在使用s3n://时,在S3中列出全局文件可能需要很长时间


    您应该尝试使用s3distcp,它可以复制、合并、压缩数据等,并且可以更快地完成列表。

    您希望改进什么?是你的工作时间太长还是你想节省磁盘空间?@SAM如果我可以,两者都可以,或者你可以建议我认为不可能的交易。压缩非常耗时。您有多少个节点?fs的块大小是多少?因此压缩对映射程序没有帮助,因为每个文件都可以由不同的映射程序处理?是的。压缩将有助于最小化数据传输时间和要传输的数据大小。此外,它还将降低您的S3成本。