HDFS のブロックはファイルシステムに保存されるため、Linux カーネルのページキャッシュを自然に使っていたが、ユーザー空間から制御できないため、HDFSキャッシング(Hadoop 2.3.0 以降)という機能がある。
HDFS上のデータの読み書きの際には、ディスクから読み出されたデータは、Linuxのカーネル内のページキャッシュ(原文ではBuffer cacheとなってます)にキャッシュされます。(これにより毎回ディスクアクセスを避けることが期待できます)
HDFSが高速に?キャッシュメカニズムの追加 | Tech Blog
Hadoop 2.3.0 以降には「HDFSキャッシング」と呼ばれる、HDFSにキャッシュ機構が搭載されています。
(中略)
HDFSの中央キャッシュ管理は、ユーザが明示的に指定したパスを、HDFSによって明示的にキャッシュする仕組みです。ネームノードはブロックをディスクに持つデータノードと通信して、そのブロックを「オフピーク (off-heap)」キャッシュにキャッシュします。
オフピークキャッシュは各データノードにある、JVMのVMヒープ対象外のメモリ領域です。ユーザーがコマンドからキャッシュに登録するパスを指定することにより、ブロックがこの領域にキャッシュされます。
HDFSの新しい機能 - HDFSキャッシング | Tech Blog
https://www.ibm.com/support/knowledgecenter/ja/SSPT3X_4.1.0/com.ibm.swg.im.infosphere.biginsights.dev.doc/doc/biga_hdfscache.html を参考に手元の EMR(emr-5.17.0) のマスターノードで、hdfs-site.xml に dfs.client.mmap.enabled や dfs.datanode.max.locked.memory のエントリはなく、キャッシュ・プールも無かったので、意図的に使わないと使われない模様。
$ hdfs cacheadmin -listPools Found 0 results.