ynkgyangxw 2014-04-20
最近在需诶Hadoop的,尝试着将环境搭起来,真是不搭不知道,一搭下一跳啊,几乎步步都出错啊。网上不少人的回答也是灰常的坑人啊比(如最典型的就是命令的大小写问题,如hadoop命令是小写的,很多人写出Hadoop,所以大家在遇到Command not found这类错误时,先看看是不是大小写的问题),总之过程很痛苦,好在终于搭建起来了。
我不打算重述搭建的步骤,在别的文章我也简单的介绍下,这样步骤在网络上有太多了,只是记录下自己搭建遇到的问题,备忘。
本人几乎没有在Linux环境下编过程,对于Linux也不熟悉,所以会有很多地方不对,后续慢慢更正。
相关阅读:
环境:RedHat6(企业版)
Hadoop版本:1.04
Eclipse:3.4
模式:hadoop有三种模式,本地模式、伪分布模式、分布模式。由于只是用于学习,(条件也不允许搭建分布模式),只搭建了伪分布模式下的环境。
今天暂时把问题mark下,后续补上。
1:hadoop版本选择问题
2:ssh免密码登陆问题
3:Windows 与Linux 互ping
4:hadoop服务启动问题(start-all.sh)
5:Eclipse连接Hadoop问题(防火墙)
先mark到这吧,Linux相关的知识急需恶补~~~
问题1:版本选择问题
第一次打环境的时候用的是hadoop 0.22.0版本,后来发现这个版本少了部分jar包(不知道为何?)于是又去Apache官网上下了1.04版本,官网上介绍的时候,也提到了此版本是稳定版本。
问题2:SSH免密码登陆问题
对于这个问题,我至今也没搞定,我在同事的机器上试验了,没有问题,可是自己的机器死活还是要密码,也上网查了一些资料,大致的步骤如下,
root@localhost hadoop]# ssh-keygen -t rsa 一直按enter,就会按默认的选项将生成的密钥对保存在.ssh/id_rsa文件中
Generating public/private dsa key pair.
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
74:79:98:eb:fa:e0:53:aa:e3:1b:e4:a4:16:7a:6b:31 root@localhost
执行以下命令
[root@localhost hadoop]# cp id_rsa.pub authorized_keys
然后执行ssh localhost,可以实现用ssh连接并且不需要密码连接
如果还是需要密码,那就是权限问题,将权限设置如下:
chmod 700 /.ssh/(对应自己安装的ssh路径)
chmod 600 /.ssh/authorized_keys
一般情况下,如上操作就可以实现本机的ssh免密码登陆了(还是不行,我也不知道了,因为我自己至今还是要密码,郁闷中)
我写ssh的目的不是为了说如何设置SSH免密码登陆,而是为了说明这一步在单机模式或者伪分布模式下并不是非得必要的,因为这里没有大量集群,即使连接的时候需要密码,也只要输入几次(我在伪分布模式下只需要输入3次即可)。很多人说这个必须要需设置免密码,个人觉得这话有点误导人,至少误导了我,我在ssh设置上花了大概一天的时候,还没搞定。其实如果只是出于学习Hadoop 的需要,如果在这一步上卡壳了,那就先别管他了吧,后续自己看看能不能再解决。(当然,如果能成功的设置的ssh免密码登陆那是最好的了)
问题3:Windows 与Linux 互ping
如果你跟我一样,习惯在Windows下进行开发,想在Windows-Eclipse下开发程序,那么这一步是必须的,至少要保证在Windows下ping通Linux。我也不敢细说这部分内容,怕误导了人,下面这个步骤是我在网上找到的,暂时这么用的,但是我不能保证合理性
4:hadoop服务启动问题(start-all.sh)
在hadoop1.0后,已经不建议使用start-all.s和stop-all.sh命令了,而是用start-dfs.sh start-mapred.sh 和stop-dfs.sh stop-mpared.sh这两组命令来实现服务的启动和关闭。
提示:在hadoop第一次启动之前,需要格式化namenode。(只有安装好环境第一次使用才进行此操作,如果后续又格式化了,那么会出现datanode于namenode命名空间不一致的错误,解决的方法也很简单,只需要手动的修改其中的任何一个使其一致就可以了,如何修改,也请看网上吧,很多的)
5:Eclipse连接Hadoop问题(防火墙)