什么是分布式系统?
其它还有分布式的文件系统,操作系统,到底什么是分布式啊?
更新时间:2022-11-11 10:11
最满意答案
hadoop主要是hdfs和mapreduce两大框架,hdfs用来存储文件,mapreduce用来处理文件进行计算。1.首先,对于hdfs,dn负责存储文件,以及文件的副本,而nn负责存储文件的元数据,例如文件的块信息,以及位置信息等,这些数据会保存在nn的内存中,当存在很多的小文件时,每个小文件nn存储的元数据都是一样的,所以N个小文件会占用nn大量的内存,增大nn的负担。 2.而对于mapreduce来说,map的输入默认是一个输入文件对应一个map任务,所以如果不做特殊处理在使用mapreduce处理这些小文件时会一个小文件产生一个map。这样的话每个map只处理一个小文件,会造成很大的资源浪费,同时也会降低mapreduce的执行效率。 以上是我自己的理解,可能还有其他的原因。建议去网上自行搜索一些文章阅读。
其他回答
1、存储文件的时候需要指定存储的路径,这个路径是hdfs的路径。而不是哪个节点的某个目录。比如./hadoop fs -put localfile hdfspat 一般操作的当前路径是/user/hadoop比如执行./hadoop fs -ls .实际上就相当于./hadoop fs -ls /user/hadoop 2、hdfs本身就是一个文件系统,在使用的时候其实不用关心具体的文件是存储在哪个节点上的。如果需要查询可以通过页面来查看,也可以通过api来实现查询。
相关问答
更多-
hadoop 中文件是怎么存储的[2023-07-29]
1、存储文件的时候需要指定存储的路径,这个路径是HDFS的路径。而不是哪个节点的某个目录。比如./hadoop fs -put localfile hdfspat 一般操作的当前路径是/user/hadoop比如执行./hadoop fs -ls .实际上就相当于./hadoop fs -ls /user/hadoop 2、HDFS本身就是一个文件系统,在使用的时候其实不用关心具体的文件是存储在哪个节点上的。如果需要查询可以通过页面来查看,也可以通过API来实现查询。 -
Hadoop中大文件上传后是否被分割存储在NDFS中[2022-05-16]
hdfs存储文件是按照块来的,hdfs的块大小默认是256M,可以自己设置,一个大文件会被切分成很多块存储到不同的地方,同时每个块也会备份多份。 -
关于hadoop小文件处理[2021-03-19]
这不能被实现在现有的Hadoop。 时设置的目录中,文件中的目录信息被读入Hadoop的输入已被确定 房东当时就完成所有文件的MapReduce,Hadoop的还是会等待输入,但房东可以想像,你能不能给Hadoop的信号,让他停止运行 -
Hadoop存储小文件有什么问题,希望有人能回答全面些[2023-10-10]
hadoop主要是hdfs和mapreduce两大框架,hdfs用来存储文件,mapreduce用来处理文件进行计算。1.首先,对于hdfs,dn负责存储文件,以及文件的副本,而nn负责存储文件的元数据,例如文件的块信息,以及位置信息等,这些数据会保存在nn的内存中,当存在很多的小文件时,每个小文件nn存储的元数据都是一样的,所以N个小文件会占用nn大量的内存,增大nn的负担。 2.而对于mapreduce来说,map的输入默认是一个输入文件对应一个map任务,所以如果不做特殊处理在使用mapreduce处 ... -
如果你使用类似TextInputFormat东西,问题是每个文件至少有一个分割,所以地图数量的上限是文件的数量,在你的情况下,你将有很多非常小的文件结束许多映射器处理每个非常少的数据。 为了解决这个问题,你应该使用CombineFileInputFormat ,它可以将多个文件打包到同一个CombineFileInputFormat中(我认为最多可以限制块的大小),所以对于这种格式,映射器的数量将独立于文件的数量,它将取决于关于数据量。 您将不得不通过从CombineFileInputFormt扩展来创建自 ...
-
合并hadoop中的小文件(Merging small files in hadoop)[2022-10-11]
这里还有一个替代方案,这仍然是@Andrew在他的评论中指出的遗留方法,但是需要额外的步骤将输入文件夹作为缓冲区来接收小文件,并及时将它们推送到tmp目录并合并它们,将结果推回输入。 第1步:创建一个tmp目录 hadoop fs -mkdir tmp 第2步:在某个时间点将所有小文件移动到tmp目录 hadoop fs -mv input/*.txt tmp 第3步 - 在hadoop-streaming jar的帮助下合并小文件 hadoop jar $HADOOP_HOME/share/hadoo ... -
hadoop中的小文件(Small files in hadoop)[2022-06-03]
如果文件都是相同的“架构”,那么就像CSV或JSON一样。 然后,欢迎您编写一个非常基本的Pig / Spark作业来读取整个文件夹的小文件,然后将其写回到其他地方,这很可能会根据HDFS块大小将所有文件合并为更大的文件。 您还提到了Hive,因此对小文件使用外部表,并使用CTAS查询创建一个单独的表,从而创建一个MapReduce作业,就像Pig一样。 IMO,如果可能的话,最佳解决方案是设置Hadoop的“上游”系统,它将较小的文件批处理为较大的文件,然后将它们转储到HDFS。 Apache NiFi是 ... -
也许你可以查看PivotalHD的DataLoader,它使用更快的map job并行加载数据。 检查此链接PivotalHD Dataloader 。 May be you can look into DataLoader of PivotalHD which loads data using map job parallel which is faster. Check this link PivotalHD Dataloader.
-
我想将它们存储在Cassandra的单个节点中,我将如何使用Hector以编程方式执行此操作? 您需要在cassandra中创建一个键空间。 您可以使用带有命令create keyspace的 cassandra-cli或使用hector方法addKeyspace()在群集节点中创建它。 我使用哪些API来设置columnFamily来处理静态文件以及如何设置架构? 您可以使用BasicColumnDefinition在cassandra中创建列族。 看一下如何在键空间中添加列族的示例代码。 您可能会有一个 ...
-
轻松获取小文件(Brisk for small files)[2023-07-15]
这两者都是真的(尽管我认为Brisk现在已经被用于商业产品DataStax Enterprise,而且它本身并没有积极开发)。 Brisk包含CassandraFS(cfs),它是HDFS的直接替代品,因此支持大文件。 在引擎盖下,这些被分成块并存储在Cassandra行/列中。 对于小文件,您可以将数据存储在本机Cassandra行而不是CassandraFS中,而是在行上运行Hadoop作业。 It's both, really (although I think Brisk has now been ...