Hadoop搭建的一些注意事项及解决方法

    这两天实验室的一哥们在搭建Hadoop平台,由于是Linux新手,在搭建的过程中遇到各种问题,以至于弄了将近一个礼拜还没有搞定,后来叫我去帮忙,花了两个小时左右终于帮他搞定,里面的错误确实是我之前没有遇到的,故在此备忘,也希望能帮助到一些新手。
    主要问题包括:(1) 环境变量 (2) 密钥配置 (3) 目录权限
1.环境变量 
由于该哥们是Linux新手,Hadoop的搭建过程是网上查找的,其实理论上网上确实有很多很详细的Hadoop搭建教程,照着这些步骤应该不会有什么问题。但是,这哥们不知从哪里弄了一份Hadoop搭建的Word文档,我看了一下,也没什么问题。问题是他想偷懒,直接将里面的一些配置复制,然后粘贴到Linux中,并根据自己的实际情况将一些路径做了修改。听着应该也不会有什么错误,可实际运行的时候总是报错。
在执行 hdfs namenode -format 时,总是报错:Can't find or load main class error in hadoop org.apache.hadoop.hdfs.server.namenode.NameNode
通过百度,该同学找到了: http://stackoverflow.com/questions/12839705/cant-find-or-load-main-class-error-in-hadoop  上面说的是环境变量的问题,于是,我就看他配置的环境变量。咋一看,一切应该都没有问题,确实是配置了相应的路径。我也纳闷了,怎么就是不对啊。
后来,我再次去确认环境变量,呃呃,有点不对劲。貌似每行后面多了一个^M 。唉,看来是这哥们偷懒,直接从Word中复制,粘贴的,这是Word下的换行标识。我将所有的^M去掉,重新加载环境变量,再次执行,终于成功了。教训:人可以懒,但一定要有一双敏锐的眼睛,能用来找出各种坑,否则你还是勤劳一点的好。

2 密钥配置。理论上照着网上的各种教程操作,是不会有问题的,但实际往往会被自己挖的坑给埋了。这哥们配置密钥也弄了一天多了,都是照着教程来的,看着确实也没什么问题,可就是始终不能使用密钥登录。我帮他看了, .ssh目录的权限是700,对的;authorized_keys权限是644,也对的;id_rsa权限600,也没问题。那到底是什么原因呢?
我将.ssh目录删除,再重新生成密钥,弄了两次,还是不行。这太不科学了!!幸亏我之前处理过ssh暴力破解的一些事情,知道了ssh登录时会有日志记录的。于是,我在一个终端切换到/var/log/目录下(Centos),再tail -f secure 查看输出信息,但我再次登陆时,日志输出了/home/hadoop 相关的权限问题,而不是/home/hadoop/.ssh的权限问题,
于是,我查看了/home/hadoop/的权限,我去,这哥们由于担心权限问题,将该目录的权限改为777了,大多数情况下不会有问题,可恰巧密钥登录对权限的要求很严,发现该目录的权限太开放了,于是就导致密钥登录失败。教训:Linux下尽量别把目录的权限设置得太开放,一方面是为了安全,另一方面也可以避免密钥登录这种权限太开放的问题。

3 目录权限。这相对来讲已经是比较好解决的了。上面已经配置好了密钥,执行start-all.sh脚本时,一切看着很正常,没有报错,也显示node1,node2的DataNode、NodeManager进启动成功。可是在Node1和Node2上查看进程时,有NodeManager进程,始终没有看到DataNode相关的进程,这不科学啊!!于是我再次执行start-all.sh,还是同样的情况,
于是我在查看了Node1上查看了DataNode启动记录的日志($HADOOP_HOME/logs/hadoop-hadoop-datanode-Node1.log),里面说data目录的权限不够,我一看该目录的权限:该目录的属主是root,而我们运行hadoop是使用hadoop与用户。于是,将该目录的属主改为hadoop。一切OK!

你可能感兴趣的:(Spark)