怀疑HDFS和Hadoop 1.0.3

时间:2012-10-02 19:47:24

标签: macos hadoop hdfs

我是Hadoop的新手,我一直在尝试设置本地计算机并运行一些示例来了解该过程的工作原理。我在我的MAC上设置了hadoop 1.0.3。我有一系列问题,我会问他们,因为我描述了到目前为止我做了什么。我按照说明here

我虽然设置了独立操作但最终得到了伪分布。 Q1。)有什么区别?

编辑我的.bash_profile

export HADOOP_HOME=/Library/hadoop-1.0.3
export JAVA_HOME=$(/usr/libexec/java_home)

在OS X上为localhost创建了无密码短语ssh。然后$ ssh localhost

然后$ $HADOOP_HOME/bin/hadoop namenode -format Q2。)每次开始新工作时,我应该格式化namenode吗?

然后$HADOOP_HOME/bin/start-all.sh

我想运行wordcount示例。所以我不得不把输入放在HDFS中。为此,我做了hadoop fs -mkdir WordCount_input

问题3。)文档here要求我使用bin/hdfs dfs,因此它会$HADOOP_HOME/bin/hdfs dfs -mkdir WordCount_input但这会给我hdfs:command not found错误? < / p>

我使用 put 将文件放入HDFS。

hadoop dfs -put
/Users/yv/Documents/Hadoop-Workspace/file01
/Users/yv/Documents/Hadoop-Workspace/file02
/user/yv/WordCount_input

Q4)使用copyFromLocal而不是put更好吗?

Q5。)我创建的这些文件位于/ user / yv /中。究竟是/ user / yv /?它们是否在我在core-site.xml中指定的hadoop.tmp.dir位置

然后我运行了示例

  

hadoop jar Documents / Hadoop-Workspace / wordcount.jar   org.myorg.WordCount / user / yv / WordCount_input / output

因此,如果我必须再次运行相同的示例,我必须删除输出文件并创建一个新文件。

运行一些例子后,数据节点没有足够的空间?在群集摘要下的NameNode的Web界面中,一切都变为0(例如:DFS剩余:0GB,实时节点:0)。不确定原因。

所以我做了$HADOOP_HOME/bin/stop-all.sh。并重新格式化了namenode。因此,namenode和datanode中的namespaceID变得不同。这是个问题。

所以我不得不删除我的hadoop.tmp.dir并从scrath中做所有事情

Q.6)如果datanode没有足够的空间,有人可以提供简单的解决方案。如何释放空间?

2 个答案:

答案 0 :(得分:1)

  1. 我认为独立模式在一个进程中运行整个作业,而伪分布只是将jobtracker和任务节点分成单独的进程,就像它们在真实集群中一样。伪分布可能是发展的方式。

  2. 您不应多次运行格式。它初始化namenode的元数据。

  3. 我不确定为什么会这么说。 hadoop fs -mkdir WordCount_input是你应该使用的。

  4. 他们是一样的。

  5. 数据存储在dfs.data.dirhdfs-site.xml属性指定的位置。但是,它可能无法直接理解,因为HDFS使用非用户友好的目录和命名结构。如果要检查内容,则应使用hadoop fs命令。

  6. 这完全取决于硬件。没有什么复杂的事情发生 - 如果你有更多的文件而不是磁盘空间,除了购买更大的驱动器或删除文件之外,你无能为力。对于本地开发/测试,您也可以将dfs.replication设置为1,但这对于生产系统来说是一个非常糟糕的主意。

答案 1 :(得分:1)

Q1)请参阅此页面:http://hadoop.apache.org/docs/r1.0.3/single_node_setup.html,但一般情况下Standalone会将所有文件存储在本地文件系统上(无HDFS),当您运行MapReduce作业时,您将在一个单独的位置运行该作业JVM。在独立模式下可以执行的操作存在限制(例如,仅限于单个reducer,没有分布式缓存)。

伪分布式模式意味着您正在运行真正的Hadoop实例(NameNode,DataNode,Job Tracker,Task Tracker),但它们都在localhost上运行。您可以访问hadoop的更多特性/功能(多个Reducer,分布式缓存,HDFS等),但缺少只有适当的分布式集群(数据复制/冗余,任务故障转移)的东西

Q2)如果要删除HDFS(分布式文件系统)中的所有内容,则只应重新格式化名称节点。您无需在作业之间对其进行格式化

Q3)这在文档中似乎是错误的(可能是与Hadoop 2相关的文档)。 bin文件夹中没有hdfs脚本(根据您看到的错误消息)。

要创建目录,您应该使用bin/hadoop fs -mkdir WordCount_input

Q4)这两个命令是同义词(hadoop fs -help copyFromLocal实际上在它显示的帮助中注明了这一点)

Q5)它们存储在HDFS中,您无法直接在本地文件系统上找到这些文件,但它们存储在hdfs-site.xml属性dfs.data.dir中配置的位置,但文件存储为块,namenode维护文件名和块名之间的映射。

问题6)您为dfs.data.dir配置的分区有多少可用空间?如果磁盘上没有剩余空间,则可以使用其他空闲空间或移动到新分区。