HDFS vs LFS-如何在本地文件系统上构建Hadoop Dist.文件系统?

HDFS vs LFS-如何在本地文件系统上构建Hadoop Dist.文件系统?,hadoop,Hadoop,从我读过的各种博客中,我了解到HDFS是存在于计算机本地文件系统之上的另一层 我也安装了hadoop,但我很难理解本地文件系统上是否存在hdfs层 这是我的问题 假设我正在以伪分布式模式安装hadoop。在安装过程中,发动机罩下会发生什么情况?我在配置文件中添加了一个tmp.dir参数。Is是namenode守护程序试图访问datanode时与之对话的单个文件夹???当您以伪分布式模式安装hadoop时,所有HDFS守护程序Namdode、datanode和辅助name node在同一台机器上运

从我读过的各种博客中,我了解到HDFS是存在于计算机本地文件系统之上的另一层

我也安装了hadoop,但我很难理解本地文件系统上是否存在hdfs层

这是我的问题


假设我正在以伪分布式模式安装hadoop。在安装过程中,发动机罩下会发生什么情况?我在配置文件中添加了一个tmp.dir参数。Is是namenode守护程序试图访问datanode时与之对话的单个文件夹???

当您以伪分布式模式安装hadoop时,所有HDFS守护程序Namdode、datanode和辅助name node在同一台机器上运行。您配置的临时目录是数据节点存储数据的位置。所以,从HDFS的角度来看,数据仍然存储在块和读入块中,而这些块在多个文件系统级块上要大得多(和聚合)

好的..让我试试..配置Hadoop时,它会在本地FS(即HDFS)之上放置一个虚拟FS。HDFS以复制方式将数据存储为块(类似于本地FS,但比本地FS大得多)。但是HDFS目录树或文件系统名称空间与本地FS相同。当您开始将数据写入HDFS时,它最终只会写入本地FS,但您无法在那里直接看到它

临时目录实际上有3个用途:

1-namenode存储元数据的目录,默认值为
${hadoop.tmp.dir}/dfs/name
,可以通过
dfs.name.dir
显式指定。如果指定dfs.name.dir,则namenode metedata将存储在作为此属性值给定的目录中

2-存储HDFS数据块的目录,默认值为
${hadoop.tmp.dir}/dfs/data
,可以通过
dfs.data.dir
显式指定。如果指定dfs.data.dir,则HDFS数据将存储在作为此属性值给定的目录中

3-secondary namenode存储其检查点的目录,默认值为
${hadoop.tmp.dir}/dfs/namesecondary
,可以通过
fs.checkpoint.dir
显式指定

因此,最好使用一些适当的专用位置作为这些属性的值,以便进行更干净的设置

当需要访问特定数据块时,将搜索存储在dfs.name.dir目录中的元数据,并将该块在特定datanode上的位置返回给客户端(位于本地FS上的dfs.data.dir目录中的某个位置)。然后客户机直接从那里读取数据(这同样适用于写操作)

这里需要注意的一点是,HDFS不是物理FS。它是本地FS之上的一个虚拟抽象,不能像本地FS那样浏览。您需要使用HDFSshell或HDFSWebUI或可用的API来实现这一点


这是一个令人信服的解释。。如果HDFS是一种虚拟的抽象手段,那么Map Readuce是另一种在HDFS之上工作的抽象,不是吗?它在HDFS之上工作,但不限于HDFS。MapReduce是一个计算框架,不仅可以用于处理HDFS中存储的数据,还可以用于处理其他存储。