【HDFS】简要了解HDFS的预读(read-ahead)机制

通过本文,我们可以了解如下知识:

  1. linux系统调用posix_fadvise
  2. Java JNI相关概念
  3. HDFS如何通过native方法来实现预读的

一、前置知识

1.1 posix_fadvise

HDFS预读其实最终是通过调用这个系统调用来实现的。

posix_fadvise是linux下的一个系统调用,目的是对文件数据的访问模式进行一个提前声明。

通俗点解释就是:我会传递一些模式告诉内核,我一会儿要以什么方式读某个文件,也就是给内核一些建议,让内核进行一些合适的优化。

man posix_fadvise命令查看一下此系统调用的man手册,有详细介绍。
【HDFS】简要了解HDFS的预读(read-ahead)机制_第1张图片

这里我们对这些模式进行一些说明:

  • POSIX_FADV_NORMAL
    应用程序没有给出接下来访问文件模式的一些建议
  • POSIX_FADV_SEQUENTIAL
    应用程序期望按顺序地访问特定数据(从offset低的位置读到offset高的位置)
  • POSIX_FADV_RANDOM
    应用程序以随机的顺序访问数据
  • POSIX_FADV_NOREUSE
    应用程序只会访问指定数据一次
  • <

你可能感兴趣的:(HDFS全方位实战,Java语言积累,java,hdfs,big,data,hadoop)