现在的位置: 首页 > 综合 > 正文

win7中的eclipse连接虚拟机中Linux(Ubuntu)的Hadoop (附上配置时遇到的错误和解决的方法)

2013年05月22日 ⁄ 综合 ⁄ 共 4939字 ⁄ 字号 评论关闭

参考文档:

http://blog.csdn.net/hitwengqi/article/details/8008203

http://my.oschina.net/vigiles/blog/132289


Hadoop的运行模式共有三种:

1、单机模式(standalone

默认模式,安装简单,几乎不用作任何配置,但是仅限于调试用途


2、伪分布模式(Pseudo-DistributedMode

单节点上同时启动nn、dn、jt、tt、sn等5个进程,模拟分布式运行的各个节点


3、全分布模式(FullyDistributed Mode

正常的Hadoop集群,由多个各司其职的节点构成;一般我们要求至少要有三个节点,一个做Master,另外两个做slave(datanode,tasktraker);另外,datanode最好要有两个,如果只有一个datanode,那就没有冗余,这个根本就不叫集群,没有多大意思


版本:Ubuntu13.04  Hadoop_0.20.2

因为一些原因,我就不专门新增加用户用来测试hadoop了



一、安装jdk

Linux下安装JDK1.7


二、安装Hadoop

点击下载Hadoop_0.20.2


1.我的hadoop_0.20.2.tar.gz在"下载"里,现在将它复制到安装目录 /usr/local/下;


cd 下载


sudo cp hadoop-0.20.2.tar.gz /usr/local/

2. 解压hadoop-0.20.2.tar.gz;


cd /usr/local

sudo tar -zxf hadoop-0.20.2.tar.gz


3. 将解压出的文件夹改名为hadoop;


sudo mv hadoop-0.20.2 hadoop


4. (可选,如果之前建立了新的用户和组,则需要输入下面这条命令)将该hadoop文件夹的属主用户设为hadoop:

sudochown-R hadoop:hadoop hadoop



进入Hadoop的解压目录,编辑conf/hadoop-env.sh文件(注意0.23版后配置文件的位置有所变化)



让环境变量配置生效:source /usr/local/hadoop/conf/hadoop-env.sh



编辑conf目录下core-site.xml、hdfs-site.xml和mapred-site.xml三个核心配置文件

core-site.xml: Hadoop Core的配置项,例如HDFSMapReduce常用的I/O设置等。
hdfs-site.xml: Hadoop
守护进程的配置项,包括namenode,辅助namenodedatanode等。
mapred-site.xml
MapReduce守护进程的配置项,包括jobtrackertasktracker


首先在Hadooph目录下新建几个文件夹

jimmy@jimmy:/usr/local/hadoop$ sudo mkdir tmp
jimmy@jimmy:/usr/local/hadoop$ sudo mkdir hdfs
jimmy@jimmy:/usr/local/hadoop$ sudo mkdir hdfs/name
jimmy@jimmy:/usr/local/hadoop$ sudo mkdir hdfs/data


接着编辑三个核心配置文件 *-site.xml

sudo gedit conf/core-site.xml
sudo gedit conf/hdfs-site.xml
sudo gedit conf/mapred-site.xml




注意:这里设置了dfs.data.dir和dfs.name.dir两个属性,可能会出现两个问题:


一、提示不能创建 %HADOOP_HOME%/hdfs/name/current和%HADOOP_HOME%/hdfs/data/current这两个文件夹,自动手动创建即可!!


二、不能启动datanode,查看%HADOOP_HOME%/logs/下面的datanode的日志,发现提示“DataNode:
java.io.IOException: Incompatible namespaceIDs in /dfs/dfs/data: namenode namespaceID = 69”;

原因是namenode
与datanode的namespaceIDs 不一致,删除%HADOOP_HOME%/hdfs/name/current和%HADOOP_HOME%/hdfs/data/current目录下的VERSION文件,问题就可以解决子!还有一种方法就是比较namespaceID的值,如果不一致,先修改namenode的值,再修改datanode的值,保持一致,然后重启hadoop就ok了!




格式化HDFS(初次运行Hadoop时一定要有该操作)

source conf/hadoop-env.sh

bin/hadoop namenode -format

创建文件夹


格式化:hadoop namenode -format

提示successfully formatted表示格式化成功



启动Hadoop所有服务

用java的jps命令列出所有守护进程来验证安装是否成功,如果出现上图黄色框内的5个进程,说明Hadoop伪分布式模式已经配置好了!

摘自网络:千万要注意这里,我使用这个命令只能看到jps自己的进程,纠结了很长时间,忽然发现得用sudojps果然能出现6个进程,坑爹啊,大家千万要注意。


===== 补充内容:配置hadoop的环境变量   (Begin)=======

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin


==== 补充内容:配置hadoop的环境变量   (End)  ========



三、安装ssh(安全外壳协议)

这里的ssh并不是struts、s文件夹pring、hibernate;而是一种安全的通信协议,Hadoop便是基于这种协议进行通信的。

 安装ssh:sudo apt-get install openssh-server

安装期间需要回复‘y’以继续运行:您希望继续执行吗?[Y/n]y


安装完成后,我们启动ssh服务:sudo /etc/init.d/ssh start

启动后,通过命令查看是否已经正确启动:ps -e | grep ssh

ok,启动成功,接下来我们要配置免密码登录,要不然每次连接都需要输入密码,那还不累死人呀,不过免密码登录是存在安全隐患的,现在我们只是学习的目的,安全隐患并不是我们需要考虑的问题!!


以rsa算法生成公钥和私钥

注意:

1、首先用命令sudo -i,从$变成#;

$为普通用户的标识,#为超级管理员用户(root)的标识


2、命令“ssh-keygen -t rsa”中,“ssh-keygen”并没有空格分隔的,之前见到网友写成“ssh -keygen”,当然安装失败喇!


3、进入root后输入ssh-keygen -t rsa命令回车后,系统会询问存放的目录,按缺省值即可(即直接按“Enter”)


4、如果是第一次操作,会提示输入密码(Enter passphrase),也是直接按Enter跳过即可; 如果已经生成过私钥,则系统会提示是否覆盖当前私钥,直接覆盖即可!


设置免密码登录:进入~/.ssh目录下,将id_rsa.pub追加到authorized_keys授权文件中(一开始是没有authorized_keys文件的)

# cd .ssh

# cat id_rsa.pub >> authorized_keys


登录:ssh localhost


登出后再登录:

这样以后再登录就不需要输入密码了!!


===== 虚拟机hadoop部分已经配置完成,接下来配置Ubuntu的网络部分 ======


1、在终端输入命令:“ifconfig”查看ip地址和子网掩码等。


2、配置网卡参数到interfaces文件:

重启网卡:

sudo /etc/init.d/networking restart

注:如果在重启网卡后黑屏,强制重启后发现上不了网,请留言;因为我当时弄的时候,第一次重启是成功的,当我第二次弄的时候,重启网卡一直卡在黑屏处!!

重启后再次输入ifconfig查看网卡的配置是否已生效,一般来说已经设置好了!

3、配置Ubuntu的hosts文件:sudo gedit /etc/hosts


重启Ubuntu


(注意:这里我们虚拟机的网络方式是:桥接)


==== Ubuntu网络部分已经配置完毕,接下来配置物理机win7 ====


一、配置hosts文件

二、安装unix仿真工具cygwin


三、在“服务”中启动cygwin

四、打开 cygwin(生成密钥对和解压hadoop)


解压hadoop,这里就不贴出来了,请参照上面在Ubuntu解压hadoop的操作!!

安装hadoop的eclipse插件(实质上就是复制某个jar包到指定的位置就可),操作如下:

1、找到hadoop-eclipse插件jar包的位置

2、把jar包复制到eclipse安装目录下的plugins文件夹下面

重启eclipse

======== 配置win7下的eclipse ======

一、设置eclipse的Perspective


这里需要注意一下:在Package Explorer视图下是不显示“DFS Locations”的

二、调出MapRedue的视图

在Project Explorer窗口发现有报错,这个错误在之前就提及过的了:

解决这个问题,主要修改三处地方:

修改core-site.xml

修改mapred-site.xml

修改ubuntu的hosts文件

把这三处地方修改过后,win7下的eclipse应该可以连接到ubuntu下的hdfs了,连接成功可以在eclipse看到一目录树,如下:

这样说明连接成功了!



但是还会有一个权限的问题,如图所示:


org.apache.hadoop.security.AccessControlException: Permission denied: user=jimmy\jimmylincole, access=READ_EXECUTE

解决的方法是:
到服务器上修改hadoop的配置文件:conf/hdfs-site.xml, 找到 dfs.permissions 的配置项 , 将value值改为 false

<property>
<name>dfs.permissions</name>
<value>false</value>
<description>
If "true", enable permission checking in HDFS.
If "false", permission checking is turned off,
but all other behavior is unchanged.
Switching from one parameter value to the other does not change the mode,
owner or group of files or directories.
</description>
</property>

 
修改完要重启下hadoop的进程才能生效!!

另一种解决的方法,解释了错误出现的原因,原文地址如下:

http://hi.baidu.com/hontlong/blog/item/9ba50ddbd1e16270d0164ec4.html

修改完成后,重新在eclipse连接,如果如下图所示,那么,恭喜您,前面的辛苦没有白费,成功连接ubuntu的hdfs:


至此,所有工作已经完成了!

============ 快乐的分隔线 =============

ps:一路起来,不容易呀!能坚持下来,就是成功者;

上面所配置的ip地址和端口号,一定要参照按自己所配置的,不能照抄我的;还有一点需要说明的是,可能大伙在看这篇博客的时候,发现我的ip地址前后不一致,这是因为我在搭建的时候,ubuntu设置成静态的ip地址,突然上不了网,最后改了一下ip地址和设置了DNS才解决不能上网的问题!


附:解决Ubuntu设置静态IP地址后重启不能上网的问题


【上篇】
【下篇】

抱歉!评论已关闭.