使用虚拟机时遇到的问题

1)

hadoop2没有namenode hadoop里没有那个文件或目录_hadoop

bash: cd: /etc/hadoop/: 没有那个文件或目录

这是我在运行hadoop伪分布式实例时遇到的一个问题,当时是想进入 /etc/hadoop/这个目录下,可是出错了,但是其实是有这个文件目录的。

其实这个错误很简单,是因为 cd后加个/ 相当于在根目录下查找,这时候得输入完整路径cd /usr/local/hadoop/etc/hadoop,或者在**/usr/local/hadoop/**的目录下输入 cd etc/hadoop也可以。

hadoop2没有namenode hadoop里没有那个文件或目录_hadoop_02

2)

最开始开启hadoop时不知道一定要在前面加./sbin/ 所以在运行start-all.sh时总是会出错,后来知道了要进入**/usr/local/hadoop/sbin/hadoop**这个目录下才可以。

而开启hadoop时总是要运行./sbin/start-all.sh才可以执行,./sbin/实际上等同于运进入了**/usr/local/hadoop/sbin/hadoop**这个目录,如果要想直接运行start-all.sh来开启hadoop的话就需要变更PATH 这个环境变量,设置hadoop环境变量加入:export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin。就可以。

3)

没有Hadoop命令

当时在运行hadoop或者hdfs命令时会出现没有Hadoop命令的错误,这个老师上课讲了很多次,也是环境变量的问题。
执行:

vim ~/.bashrc

在里面加入这些就可以,这样就可以执行hadoop命令了。

hadoop2没有namenode hadoop里没有那个文件或目录_安全模式_03

hadoop2没有namenode hadoop里没有那个文件或目录_hadoop_04

4)

创建新文件夹失败:No such file or directory或File exits

  • 前面那个错误老师上课也提到过,就是创建多级目录的问题,mkdir创建多层目录时需要在后面加一个 -p 选项。
  • 后面那个错误是很简单但很常见的错误,就是已经存在目标的文件或者文件夹,路径出现冲突,解决问题的方法也很简单,就是更换一下名字,或者删除原文件。

安装hadoop集群时所遇到的问题

1)

当我执行下面代码时发现,只有namenodesecondarynamenode启动起来了,说明出现错误,于是改用另一个启动hadoop的代码start-all.sh,发现成功了,resourcemanager启动。最后单独执行mr-jobhistory-daemon.sh start historyserver,终于四个都启动起来。但是发生这个错误的原因始终不太明白。

执行:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

结果:

hadoop2没有namenode hadoop里没有那个文件或目录_hdfs_05


执行:

start-all.sh

结果:

hadoop2没有namenode hadoop里没有那个文件或目录_hadoop_06

执行:

mr-jobhistory-daemon.sh start historyserver

结果:

hadoop2没有namenode hadoop里没有那个文件或目录_安全模式_07

2)

还有一个错误是当时验证datanode是否正常启动时出现的,当时出现的错误是都为0,也就是无有效的datanode节点。

hadoop2没有namenode hadoop里没有那个文件或目录_hadoop2没有namenode_08


在网上查了很多方法,大部分都是说可能是datanode的安全模式没有关闭,可能是因为datanode开启了安全模式导致的。但是当时没有先试这个,而是做了以下几个。

  • 1.检查所有自己已经配置的文件信息,(4个主要)以及Slaves文件。还有就是hosts中ip和主机名的对应关系。我检查了所有配置文件后发现没有出错的地方,于是把hdfs-site.xml中的dfs.replicatio设为了2,因为教程里他说一般设为3,我刚开始就设成了3。后来发现没有用。

hadoop2没有namenode hadoop里没有那个文件或目录_hdfs_09

  • 2.由于格式化次数太多,产生的结点的nm-local-dir中的id冲突,这个报错可以通过看产生的logs得出。这个方法我也觉得非常有可能,因为前期出错的时候我格式化了很多次,于是去查看logs,但是无果。
  • 3.最后尝试查看datanode的安全模式是否关闭,所以使用命令hdfsdfsadmin-safemode get查看发现真的没有关闭,于是使用以下命令关闭。hadoop dfsadmin -safemode leave。如下,关闭后执行发现已经正确。

hadoop2没有namenode hadoop里没有那个文件或目录_hadoop_10


以上是我在搭建集群时遇到的两个比较大的错误,其他的一些小错误大都为少打了或打错了或目录进错了,我想值得说的错误就这些。