Hadoop HDFS配置&;用户目录用于什么?

Hadoop HDFS配置&;用户目录用于什么?,hadoop,hdfs,Hadoop,Hdfs,我目前正在虚拟机中“玩”Hadoop(cloudera的CDH4.1.3图像)。我想知道的是以下内容(文档在这方面并没有真正帮助我) 在本教程之后,我将首先格式化NameNode—好的,如果使用cloudera图像,这已经完成了。同样,HDFS文件结构已经存在。在hdfs-site.xml中,datanode data dir设置为: /var/lib/hadoop-hdfs/cache/${user.name}/dfs/data 很明显,在真正的分布式设置中,块应该复制到这个位置。在clou

我目前正在虚拟机中“玩”Hadoop(cloudera的CDH4.1.3图像)。我想知道的是以下内容(文档在这方面并没有真正帮助我)

在本教程之后,我将首先格式化NameNode—好的,如果使用cloudera图像,这已经完成了。同样,HDFS文件结构已经存在。在hdfs-site.xml中,datanode data dir设置为:

/var/lib/hadoop-hdfs/cache/${user.name}/dfs/data
很明显,在真正的分布式设置中,块应该复制到这个位置。在cloudera教程中,我们被告知为每个用户创建hdfs“主目录”(
/users/
),我不明白它们的用途。它们是否仅用于单节点设置中的本地测试运行? 比如说,我的本地存储中确实有数PB的类型数据。这些数据必须立即分发,使得本地“主目录”完全无用

有人能告诉我,仅仅是给我一个直觉,一个真正的Hadoop工作流和海量数据是什么样子的吗?一开始我会运行什么类型的不同节点

有一个主(JobTracker)及其从属文件(我将把它放在哪里),允许主解析所有数据节点。然后是我的NameNode,它跟踪块id的存储位置。数据节点也承担TaskTracker的责任。在配置文件中,包含了NameNode的URI——到目前为止我是否正确?然后在配置中仍然有
${user.name}
变量,如果我理解正确的话,它显然与WebHDFS有关,如果有人能向我解释一下,那也太好了。在运行示例中,方向往往是硬编码的

/var/lib/hadoop-hdfs/cache/1/dfs/data, /var/lib/hadoop-hdfs/cache/2/dfs/data and so on.
因此,回到这个例子:比如说,我有我的磁带,想要将数据导入我的HDFS(我需要将数据流式传输到文件系统中,因为我缺少本地存储,无法将其保存在一台机器上)。迁移过程从哪里开始?在任意数据节点上?在分发块的NameNode上?毕竟,我不能假设数据只是“存在”,因为名称节点必须知道块ID

如果有人能在短时间内详细阐述这些主题,那就太好了:

  • 主目录的真正用途是什么
  • 我是否先将数据迁移到主目录,然后再迁移到真正的分布式系统
  • WebHDFS是如何工作的,它在user.name变量中扮演什么角色
  • 我将如何动态地将“大数据”迁移到我的HDFS中?或者,即使它不是大数据,我如何以适当的方式填充我的文件系统(这意味着,数据块在集群中随机分布
  • 主目录的真正用途是什么

    这里有一点混乱,就像Linux上的本地文件系统存在/home一样,用户有自己的存储空间,/users是HDFS(分布式FS)上的主挂载。本教程要求您以管理方式为希望稍后运行数据加载和查询的用户创建主目录,以便他们获得对HDFS的足够权限和存储访问。本教程不要求您在本地创建这些目录

    我是否先将数据迁移到主目录,然后再迁移到真正的分布式系统

    我相信我上面的回答应该能为您澄清这一点。您应该在HDFS上创建您的主目录,然后将所有数据加载到该目录中

    WebHDFS是如何工作的,它在user.name变量中扮演什么角色

    WebHDFS是访问HDFS的各种方式之一。与HDFS对话的常规客户端需要使用Java API。HDFS中添加了WebHDFS(以及HttpFs)技术,通过为HDFS提供REST前端,让其他语言拥有自己的API集。WebHDFS允许用户身份验证,以帮助持久化权限和安全模型

    我将如何动态地将“大数据”迁移到我的HDFS中?或者,即使它不是大数据,我如何以适当的方式填充我的文件系统(这意味着,数据块在集群中随机分布


    HDFS为您解决的大部分问题是管理数据的分发,块由HDFS本身以理想的分布方式分布,分块也由HDFS管理。您需要做的就是使用用户端常规文件系统样式的API,忘记下面的内容—这一切都是为您管理的。

    感谢您的澄清!我已将它们安装在HDFS上,但我并不真正理解为什么需要它们ired,考虑到仍然存在datanode dir.cloud,您可能会详细说明user.name变量的用途(我只是想确保它实际上应该位于配置中,而不是硬编码的文件夹名称)?我猜这与在集群上使用特定于用户的数据运行HDFS有关,对吗?毕竟,名称节点目录也是特定于用户的(这意味着,它是只允许数据所有者权限的基本系统)?谢谢!Hi@sim-user.name是一个特殊的JVM系统属性,自动设置为执行JVM的当前用户。也就是说,在任何java程序中,返回system.getProperty(“user.name”)的结果默认情况下,将是实际运行该程序的用户。在Hadoop配置类中,我们支持通过让用户传递JVM级别的属性(通过JVM选项上的-D)来替换某些属性的值,支持的默认属性之一是${user.name}我们最终利用它为用户特定的操作自动构建用户特定的路径或数据。