草庐IT

hadoop - Flume HDFS 接收器不断滚动小文件

我正在尝试使用flume将Twitter数据流式传输到hdfs中:https://github.com/cloudera/cdh-twitter-example/无论我在这里尝试什么,它都会不断在HDFS中创建大小在1.5kB到15kB之间的文件,而我希望看到大文件(64Mb)。这是代理配置:TwitterAgent.sources=TwitterTwitterAgent.channels=MemChannelTwitterAgent.sinks=HDFSTwitterAgent.sources.Twitter.type=com.cloudera.flume.source.Twitte

hadoop - 小文件和 hadoop/spark - 每个原始文件都是一个计算单元

场景我有一个场景,我想可扩展地处理包含许多小文件(~0.7MB平均输入文件大小)的数据。因为这不适用于包含许多小文件的hdfsduetothe"smallfilesproblem",我想我会将一种类型的所有输入文件(我们称之为A型)合并到一个hdfs文件中,并将另一种类型的文件(我们称之为B型)合并到另一个hdfs文件中,依此类推。然而,在我的例子中,我需要保留原始输入文件与其内容之间的关系——因为每个输入文件都应该作为一个单元单独处理,在我的例子中,在map-reduce作业中,这是由自然引起的我的数据。问题是:我应该如何标记每个输入文件在它到达的聚合文件中的边界?理想情况下,我会将

hadoop - Spark 处理小文件(合并与 CombineFileInputFormat)

我有一个用例,我在S3中有数百万个小文件需要由Spark处理。我有两个选项来reducetask数量:1.使用合并2.扩展CombineFileInputFormat但我不清楚机器人的性能影响以及何时使用其中一个。此外,CombineFileInputFormat是一个抽象类,这意味着我需要提供我的实现。但是SparkAPI(newAPIHadoopRDD)将类名作为参数,我不确定如何传递可配置的maxSplitSize 最佳答案 对于这种情况,要考虑的另一个很好的选择是SparkContext.wholeTextFiles(),它

hadoop - 如果我们使用小文件,HDFS 是否会丢失内存?

我在下面引用了Hadoop-权威指南:但是请注意,小文件占用的磁盘空间不会超过存储文件原始内容所需的空间。例如,以128MB的block大小存储的1MB文件使用1MB的磁盘空间,而不是128MB,这是我的问题1)以128MB的block大小存储的1MB文件使用1MB的磁盘空间,而不是128MB。)hdfs如何使用该block中剩余的127M?2)是否有机会在同一个block中存储另一个文件? 最佳答案 1MB文件存储在128MBblock中,有3个副本。然后文件将存储在3个block中,并且仅使用3*1=3MB而不是3*128=38

hadoop - 将许多小文件传输到 Hadoop 文件系统

我想将zip文件中的太多小文件(例如200k文件)从本地计算机传输到HDFS。当我解压缩zip文件并将文件传输到HDFS时,需要很长时间。无论如何我可以将原始zip文件传输到HDFS并在那里解压缩吗? 最佳答案 如果您的文件是GB的,那么此命令肯定有助于避免空间不足错误,因为无需在本地文件系统上解压缩文件。hadoop中的put命令支持从stdin读取输入。要从标准输入读取输入,请使用“-”作为源文件。压缩文件名:compressed.tar.gzgunzip-c压缩.tar.gz|hadoopfs-put-/user/files/

hadoop - 配置单元合并属性不适用于小文件

我正在尝试将数据插入创建大量小文件的动态分区表,我已将配置单元属性设置如下,但我仍然在分区文件夹中看到小文件,每个任务的大小或平均文件大小似乎都有效对我来说,分区文件夹中的文件超过了我给的每个任务的大小。任何帮助将不胜感激hive.merge.mapfiles=true;配置单元合并mapredfiles=truehive.merge.size.per.task=10000;hive.merge.smallfiles.avgsize=100; 最佳答案 您的示例显示您将平均大小设置为100字节,这将创建大量小文件并且很可能被忽略,因

hadoop - 使用 spark 保存和处理大量小文件

我是大数据新手!我有一些关于如何在EMR集群上的spark中处理和保存大量小文件(pdf和ppt/pptx)的问题。我的目标是将数据(pdf和pptx)保存到HDFS(或集群中的某种类型的数据存储中),然后从spark中提取此文件的内容并将其保存在elasticsearch或某些关系数据库中。我读过在HDFS中保存数据时的小文件问题。保存大量pdf和pptx文件(最大大小100-120MB)的最佳方法是什么?我读过有关序列文件和HAR(hadoop存档)的内容,但我不明白它们究竟是如何工作的,也不知道什么是最好的。处理这些文件的最佳方式是什么?我知道有些解决方案可能是FileInput

hadoop - HDFS 和 MapReduce 如何处理小文件

我已经在Windows平台上安装了Hadoop和2个其他工作节点(我总共有3个节点)。出于演示目的,我正在处理大约1兆字节的单个文件。工作节点如何划分此文件以进行处理。不同的工作节点每个会处理341(1024/3)KB。或者单个工作节点将处理该文件。如果我处理100个这样的文件。工作节点会分配要处理的文件数量吗?如果我处理一个大约100MB的文件。 最佳答案 可能的答案,Howworkernodeswoulddividethisfileforprocessing.Woulddifferentworkernodeswouldproce

hadoop - 大量小文件和 128 Mb block 大小的 HDFS 行为

我有很多(多达数十万个)小文件,每个10-100Kb。我的HDFSblock大小等于128MB。我的复制因子等于1。为每个小文件分配HDFSblock有什么缺点吗?我见过非常矛盾的答案:AnswerwhichsaidthesmallestfiletakesthewholeblockAnswerwhichsaidthatHDFSiscleverenough,andsmallfilewilltakesmall_file_size+300bytesofmetadata我在thisanswer中做了一个测试,它证明第二个选项是正确的——HDFS不会为小文件分配整个block。但是,从HDFS批

scala - 将多个小文件合并到 Spark 中的几个大文件中

我通过Spark使用配置单元。我的spark代码中有一个Insertintopartitionedtable查询。输入数据为200+gb。当Spark写入分区表时,它会吐出非常小的文件(kb的文件)。所以现在输出分区表文件夹有5000多个小kb文件。我想将这些合并到几个大MB文件中,可能是几个200mb文件。我厌倦了使用配置单元合并设置,但它们似乎不起作用。'valresult7A=hiveContext.sql("sethive.exec.dynamic.partition=true")valresult7B=hiveContext.sql("sethive.exec.dynamic