最近老大让看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连接并且不需要密码连接
如果还是需要密码,那就是权限问题,将权限设置如下:
问题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为样本来做详细说明,如下图:
基本上做完上述VMWARE虚拟机的配置,LINUX侧的基于host-only模式的网络配置就可以了。
然后再配置WINDOW本机上新增的网络接口卡VMnet1。此处也只需设置其ip地址为192.168.0.2(必须与之前Subnet ip在同一网段)。如下图:
至此,WINDOWS本机与LINUX虚拟机之间的网络设置就完成了。
当然,仅是如上的设置,可能还不能保证就可以实现WINDOWS与LINUX的ping互通问题。这其中就涉及到双方的防火墙问题了。
1、WINDOS侧存在防火墙。如果你发现WINDOWS可以ping通LINUX,而LINUX不能ping通WINDOWS,则应该是你WINDOWS本机上防火墙策略导致的问题。我本次也是被这个问题折磨了好长一段时间,直到关闭了WINDOSW本机的防火墙,终于就实现ping互通了。关闭本机WINDOWS防火墙的关闭方法如下:
开始 -> 控制面板 -> 系统和安全 -> Windows防火墙 -> 打开或关闭Windows防火墙 -> 关闭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搭建篇有详细的介绍。再次就不累述了~