Hadoop环境搭建(Linux + Eclipse开发)问题总结----伪分布模式

最近老大让看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。我也不敢细说这部分内容,怕误导了人,下面这个步骤是我在网上找到的,暂时这么用的,但是我不能保证合理性

转自:http://blog.163.com/shixw_2000/blog/static/183884421201211492215617/

首先,介绍如何在VMWARE中设置LINUX的网络。一般网络选项有Bridged, NAT, host-only几种。本次以我实现的host-only为样本来做详细说明,如下图:

关于win7与虚拟机LINUX互通ping的网络设置 - shixw_2000 - 春风沉醉的凝望
 在选择host-only模式之后,打开VMWARE的网络属性编辑窗口,就可以看到VMnet1网卡已经可见。
此处VMnet1可以设置Subnet的IP为192.168.0.0, mask为255.255.255.0。
关于DHCP选项,此处可以不管,因为我在LINUX虚拟机上是用yast来配置静态的ip,如:192.168.0.222(注意:这个静态IP地址必须与Subnet上设置的IP地址在同一网段),如图:
关于win7与虚拟机LINUX互通ping的网络设置 - shixw_2000 - 春风沉醉的凝望
 
关于选项中的NAT设置,我是严格按照网络上的建议,设置Gateway IP Address为192.168.0.1(实际上,我也尝试过使用192.168.0.*的任一IP,只要不与主机及linux虚拟机的ip冲突,都没问题)。如下图
关于win7与虚拟机LINUX互通ping的网络设置 - shixw_2000 - 春风沉醉的凝望
 

 基本上做完上述VMWARE虚拟机的配置,LINUX侧的基于host-only模式的网络配置就可以了。

然后再配置WINDOW本机上新增的网络接口卡VMnet1。此处也只需设置其ip地址为192.168.0.2(必须与之前Subnet ip在同一网段)。如下图:

关于win7与虚拟机LINUX互通ping的网络设置 - shixw_2000 - 春风沉醉的凝望

 至此,WINDOWS本机与LINUX虚拟机之间的网络设置就完成了。

当然,仅是如上的设置,可能还不能保证就可以实现WINDOWS与LINUX的ping互通问题。这其中就涉及到双方的防火墙问题了。

1、WINDOS侧存在防火墙。如果你发现WINDOWS可以ping通LINUX,而LINUX不能ping通WINDOWS,则应该是你WINDOWS本机上防火墙策略导致的问题。我本次也是被这个问题折磨了好长一段时间,直到关闭了WINDOSW本机的防火墙,终于就实现ping互通了。关闭本机WINDOWS防火墙的关闭方法如下:

开始 -> 控制面板 -> 系统和安全 -> Windows防火墙 -> 打开或关闭Windows防火墙 -> 关闭Windows防火墙

关于win7与虚拟机LINUX互通ping的网络设置 - shixw_2000 - 春风沉醉的凝望
2、LINUX侧存在防火墙。此时可能出现LINUX能ping通WINDOWS,但是windows却不能ping通LINUX。
检查LINUX是否有防火墙的方法是:
iptables -L 命令查看当前LINUX系统的策略。
 
我这里不需要各种防火墙策略,因此直接简单设置防火墙规则如下:
iptables -F   //清空当前防火墙规则
iptables -X   //删除系统配置的所有防火墙规则
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
只要配置成开机自动执行上述命令,则启动后LINUX系统当前的防火墙策略就如下:
关于win7与虚拟机LINUX互通ping的网络设置 - shixw_2000 - 春风沉醉的凝望
 这样,就解除了LINUX的防火墙设置。
现在,就可以实现WINDOWS <-> LINUX系统之间的IP互通了。在LINUX上开启ssh服务,samba服务,都可以从WINDOWS上正常登陆了。

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问题(防火墙)

      使用Eclipse(Windows环境下)连接到Linux时,本人遇到了两个问题,导致连不上,一个是由于Linux的防火墙设置导致的,我参照第三步的防火墙设置可以解决问题,但是显然不太好,有更好的处理方式,就用更好的吧。第二个问题是由于权限不够,这个问题,在我另一篇hadoop搭建篇有详细的介绍。再次就不累述了~

猜你喜欢

转载自february30thcf.iteye.com/blog/1766484