再次折腾-启动hadoop时遇到问题

来源:互联网 发布:聊天交友软件排行 编辑:程序博客网 时间:2024/06/05 20:54

期间运行namenode的试验机因跑其它程序和任务重启过几次导致以前启动的hadoop相关的进程和服务都停了。今天有空再跑一次,遇到各种莫名其妙问题,好事多磨,也算是对先前没遇到问题的一个补充。


1. namenode 9000端口被占导致namenode startup failed

       这段本地调试其它程序时启动过xdebug,它的默认端口就是9000, netstat -ap 和lsof -i:9000都没看到被占用,两个不相关的程序还着实费了点时间才找出来,关掉xdebug所在的IDE解决之。


2. namenode和datanode轮流启动失败

  namenode启动失败,通常都是机器重启后hadoop core-site.xml中配置的tmp目录中name/secondaryname中的clusterID等信息不一致所致,删除其下的文件或格式化即可。

  使用 hdfs namenode -format 后,namenode可以启动了,但datanode始终启动不起来。报错如下:

WARN org.apache.hadoop.hdfs.server.common.Storage: Failed to add storage directory [DISK]file:/home/hadoop/bigdata/data/hadoop/tmp/dfs/data/
java.io.IOException: Incompatible clusterIDs in/home/hadoop/bigdata/data/hadoop/tmp/dfs/data: namenode clusterID = CID-0011632f-3d57-48e3-96bf-c763a0eccb58; datanode clusterID = CID-84000d7e-f854-49bd-a638-0f2c5d31a554

  直观怀疑可能是一直在namenode机器上操作的,并且出问题后,有通过脚本./sbin/stop-all.sh正常关闭已启动的进程或服务的,也有直接ssh登上datanode所在的机器kill -9干掉的,可能导致信息不一致。最后用hdfsdatanode -format后再启动,居然OK了。并且尝试运行hadoop中的一个例子,终于验证系统都正常了。


3.   每次出错时日志都存在.log文件中,这里面的信息是追加的,期间因没注意日志的时间,导致把先前出错的“no router to host”等信息当作了本次启动过程中的报错,浪费了占时间。建议每次出错后,最好把logs目录下的都清下,下次再报错时就直接是最新的信息。


ps: 

运行例子的几个操作,暂记录如下以备用:

a. hdfs上作文件操作

 hdfs说白了,就是hadoop直接操作的文件系统,和我们在linux上操作文件一样,很多操作命令也是一样的,只不过它是针对大数据量的分布式的。

 如建目录: hdfs dfs -mkdir /dir_name   

 拷进拷出文件: hdfs dfs  -put  current_dir/*   /dir_name,   hdfs dfs -get /dir_name/*  .   

   删除文件:  hdfs dfs -rm /dir_name/xx   

    操作后,localhost:50070上可以查看新建的目录结构和文件。hadoop fs 和hdfs dfs作用是一样的,对应参数也一样,具体可见help.


b.  运行一个现成的事例

  随便弄一些文本文件(hadoop etc下的xml文件,其它的txt文件,java文件等)到hdfs目录下如/count_input/hadoop下,然后运行

   hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jarwordcount /count_input/hadoop/ /count_input/count_result

  很快就能看到结果了。

  再进入localhost:50070 就能看到_SUCCESS, part_r_0000文件。把结果文件part_r_0000拷贝出来看下是不是结果出来了?


  





尝试运行hadoop中的一个例子,终于验证系统都正常了。