使用hdfs在ram中缓存

4smxwvx5  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(390)

我需要用一个小集群(大约10台服务器)处理一些大文件(大约2 TB),以便生成一个相对较小的报告(一些GB)。
我只关心最终报告,而不关心中间结果,而且机器有大量的ram,因此最好使用它来尽可能减少磁盘访问(从而提高速度),理想情况下只在需要时使用磁盘将数据块存储在易失性内存中。
看看配置文件和前面的一个问题,hadoop似乎没有提供这个功能。spark网站谈到了内存和磁盘选项,但我更愿意要求公司部署一个基于新语言的新软件。
我找到的唯一“解决办法”是 dfs.datanode.data.dir 作为 /dev/shm/ 在hdfs-default.xml中,为了欺骗它使用易失性内存而不是文件系统来存储数据,我假设,在这种情况下,当ram满了并且使用交换时,它的行为仍然很糟糕。
有没有一个技巧可以让hadoop尽可能多地在ram上存储数据块,并且只在必要时才在磁盘上写?

kdfy810k

kdfy810k1#

你可以随便玩玩 mapred.job.reduce.input.buffer.percent (默认为 0 ,尝试更接近 1.0 ,请参阅此博客文章的示例)并设置 mapred.inmem.merge.threshold0 . 请注意,找到正确的值是一门艺术,需要一些实验。

bakd9h0s

bakd9h0s2#

自从hadoop2.3发布以来,您可以在内存缓存中使用hdfs。

相关问题