Hadoop完全分布式配置及常见错误集合

JDK配置和Hadoop安装网上教程比较多,就不多说了。

1.ssh配置(实现在主机之间执行指令时不需要输入密码)。

     1).在所有机器上建立.ssh目录(假设在/home/user下)
       $mkdir .ssh
     2).在namenode上生成密钥对,$ssh-keygen -t rsa
     3).然后一直【Enter】,即默认保存在~/.ssh/id_rsa文件中。
     4).接着$cd ~/.ssh  (这几个个命令只需在NameNode上执行就OK了)
        $cp id_rsa.pub authorized_keys  
        $scp authorized_keys DataNode1:/home/user/.ssh 
        $scp authorized_keys DataNode2:/home/user/.ssh
     5).进入所有机器的.ssh目录,改变authorized_keys文件的许可权限:$chmod 644 authorized_keys
     这时从NameNode向其他机器(DataNode)发起SSH连接,只在第一次登录时需要输入密码。另外ssh连接过程中时出现
     " Agent admitted failure to sign using the key" 时,在windows下"服务"启动VMware Agent Service这个服务。再重启VMware即可。

2.DataNode和NameNode未启动
     1).格式化分布式文件系统 $bin/hadoop namenode -format;
     2).启动hadoop守护进程  $bin/start-all.sh:
       Q: 可能会出现"chown: changing ownership of  ‘/hadoop-0.20.203.0/bin/../logs’: Operation not permitted"的错误,
       A:不能自动创建或读取文件夹,跟权限有关系:可能文件或目录是用root用户创建的,先用root登录把logs目录删了,然后换成普通账户,再运行bin/start-all.sh
     3).用jps命令检测启动情况 $bin/jps
     正常情况下,在NameNode上会启动NameNode、JobTracker、Secondary NameNode进程
        

  在DataNode上启动DataNode和TaskTracker进程;

  否则打开hadoop的日志文件logs查看对应未启动进程的log文件。检查conf下的三个配置文件(对于端口被占用同样适用)。
     附: 查看端口是否启动:netstat -tnl

3.  1)浏览器访问时如http://NameNode:50070 Live Nodes是否为0(注意:进程启动正常,而Live Nodes也可能为0),
        可能是因为防火墙的原因,需要到所有的节点上执行service iptables stop 来关闭防火墙;
     2)还有http://NameNode:50030 的Nodes是否为0——>
      解决1:将各机器的tmp目录下的内容删除,再重新格式化文件系统,就可以正常运转了。
      解决2:可能是因为子节点的mapred-site.xml的配置错误,一定要配置成namenode的ip

4. 最后运行WordCount实例,查看分布式部署结果图(1个master,1个slave):

     1).查看JobTracker运行状态(50030)

Hadoop完全分布式配置及常见错误集合_第1张图片

  2).查看NameNode状态(50070):

  

Hadoop完全分布式配置及常见错误集合_第2张图片

 

总结:hadoop单机和伪分布配置都比较简单,但是完全的分布式在配置过程中各种各样的情况都会出现,也希望大家能少走一些弯路。

  注意linux下的权限机制,还有最重要的log文件~

其他错误:

     1)Hadoop报错“could only be replicated to 0 nodes, instead of 1”

     2) Source name ugi already exists   (这个不知道怎么回事??)

你可能感兴趣的:(hadoop)