hadoop大型数据集

6kkfgxo0  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(426)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

6年前关门了。
改进这个问题
什么使数据集变大?它是一个文件集合还是一个文件?如果我上传文件到hdfs中,那么name节点会保留三个重要的元信息,比如文件名、总块数和文件大小,每个信息包含150字节,变成450字节。如果我们上传大量相同数据的文件,那么名称节点内存就必须增加。
我很困惑。一个文件应该像1 tb那样大,还是文件集合应该更大?
我在互联网上看到过很多数据集,但从来没有发现一个文件甚至可能是200GB。有200 gb大小的文件。你能解释一下吗?

vom3gejh

vom3gejh1#

小文件是hadoop处理从这里读取的问题
小文件和hdf的问题
小文件是一个明显小于hdfs块大小(默认64mb)的文件。如果您存储的是小文件,那么您可能有很多文件(否则就不会使用hadoop),问题是hdfs不能处理很多文件。
hdfs中的每个文件、目录和块都表示为namenode内存中的一个对象,根据经验,每个对象占用150字节。所以1000万个文件,每个文件使用一个块,将使用大约3g的内存。扩展到这个级别之外是当前硬件的一个问题。当然,十亿个文件是不可行的。
小文件和mapreduce的问题
Map任务通常一次处理一个输入块(使用默认的fileinputformat)。如果文件非常小并且有很多,那么每个map任务处理的输入非常少,并且有更多的map任务,每个map任务都会带来额外的簿记开销。将一个1gb的文件分成16个64mb的块,与10000个左右100kb的文件进行比较。10000个文件每个使用一个Map,作业时间可能比使用单个输入文件的等效文件慢几十倍或几百倍。
参考文献:http://blog.cloudera.com/blog/2009/02/the-small-files-problem/
希望有帮助

相关问题