【发布时间】:2013-02-15 10:34:14
【问题描述】:
我目前正在虚拟机中“玩弄”Hadoop(来自 cloudera 的 CDH4.1.3 映像)。我想知道的是以下内容(并且文档在这方面并没有真正帮助我)。
按照教程,我将首先格式化 NameNode - 好的,如果使用 cloudera 图像,这已经完成。同样,HDFS 文件结构已经存在。在 hdfs-site.xml 中,datanode 数据目录设置为:
/var/lib/hadoop-hdfs/cache/${user.name}/dfs/data
这显然是在真正的分布式设置中应该将块复制到的位置。在 cloudera 教程中,有人被告知为每个用户 (/users/<username>) 创建 hdfs“主目录”,我不明白它们的用途。它们仅用于单节点设置中的本地测试运行吗?
假设我确实有 PB 类型的数据不适合我的本地存储。这些数据必须立即分发,使本地“主目录”完全无用。
谁能告诉我,只是为了让我有一个直觉,一个包含大量数据的真实 Hadoop 工作流会是什么样子?一开始我会运行哪些不同的节点?
有一个主 (JobTracker) 及其从文件(我将把它放在哪里)允许主解析所有 DataNode。然后是我的 NameNode,它跟踪块 ID 的存储位置。 DataNodes 也承担着 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(我需要将数据流式传输到文件系统,因为我缺乏本地存储来将其本地保存在单台机器上) .我将从哪里开始迁移过程?在任意 DataNode 上?在分发块的 NameNode 上?毕竟,我不能假设数据只是“在那里”,因为名称节点必须知道块 ID。
如果有人能尽快详细说明这些主题,那就太好了:
- 主目录的真正用途是什么?
- 是否先将数据迁移到主目录,然后再迁移到真正的分布式系统?
- WebHDFS 的工作原理以及它对 user.name 变量的作用是什么
- 我如何将“大数据”即时迁移到我的 HDFS 中 - 或者即使不是大数据,我如何以适当的方式填充我的文件系统(意思是,块在集群中随机分布?
【问题讨论】: