从我读过的各种博客中,我理解HDFS是计算机中本地文件系统上存在的另一层。
我也安装了hadoop,但我无法理解本地文件系统中hdfs层的存在。
这是我的问题..
考虑我在伪分布式模式下安装hadoop。在安装过程中引擎盖下会发生什么?我在配置文件中添加了一个tmp.dir参数。当它尝试访问datanode时,是namenode守护程序与之对话的单个文件夹吗?
答案 0 :(得分:8)
好的..我试一试。当你配置Hadoop时,它会在本地FS上放置一个虚拟FS,即HDFS。 HDFS以复制的方式将数据存储为块(类似于本地FS,但与之相比要大得多)。但是HDFS目录树或文件系统命名空间与本地FS的命名空间相同。当您开始将数据写入HDFS时,它最终会被写入本地FS,但您无法直接在那里看到它。
临时目录实际上有三个目的:
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-辅助名称节点存储其检查点的目录,默认值为${hadoop.tmp.dir}/dfs/namesecondary
,可由fs.checkpoint.dir
明确指定。
因此,最好使用一些适当的专用位置作为这些属性的值,以便进行更清洁的设置。
当需要访问特定数据块时,将搜索存储在dfs.name.dir目录中的元数据,并将特定数据节点上该块的位置返回给客户端(位于dfs.data.dir中的某个位置)本地FS上的目录)。然后客户端直接从那里读取数据(同样适用于写入)。
这里需要注意的一点是,HDFS不是物理FS。它是一个在本地FS上面的虚拟抽象,不能像本地FS一样浏览。您需要使用HDFS shell或HDFS webUI或可用的API来执行此操作。
HTH
答案 1 :(得分:0)
在伪分布式模式下安装hadoop时,所有HDFS守护程序namdenode,datanode和secondary name节点都在同一台机器上运行。您配置的临时目录是数据节点存储数据的位置。因此,从HDFS的角度来看,您的数据仍然存储在块中,并在多个文件系统级块上更大(和聚合)的块中读取。