LINUX下配置HADOOP过程总结

来源:互联网 发布:2017最新网络语言大全 编辑:程序博客网 时间:2024/06/06 04:37
首先是JAVA的安装问题。
我用APT-GET INSTALL来获得的JDK,
安装完以后并不像自己解压安装那样会在安装目录下产生一个相应的安装文件夹,这让我对JAVA_HOME的设置问题苦恼了,
找不到安装文件夹,到哪里支设置JAVAHOME啊!!
然后我去查了一下,有一些帖子说,安装在/OPT目录下,可我去看了,没有;

然后又有一位大大给了很好的提示(见)说是用下面的命令:


代码:
$ which java
/usr/bin/java
$ ls -l /usr/bin/java
/usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
/etc/alternatives/java -> /usr/lib/jvm/java-6-sun/jre/bin/java
复制代码

可以找到。我试了一下,找到了这么一个位置:

/usr/bin/gij-4.5

本来很高兴以为找到地方了,可是想进去看的时候,提示说这个不是一个目录。

我迷茫了,求问到底如何设置JAVAHOME啊!


以前用过另外一个版本的linux,redflag,在上面习惯了使用RPM的安装包。

用UBUNTU之后,误以为它也是用RPM包的,于是在ORACLE的官方网站上下了一个RPM的安装包,

结果发现无法安装,
先是得到一个RPM命令无法执行的错误,安装了RPM命令之后,
又提示说不能直接使用RPM命令,而应该使用ALIEN命令,搞得我一头雾水。


在查找解决办法的时候我又见到一个帖子说,UBUNTU的JDK都是用APT-GET来直接安装的,不用按有些教程上来。


于是我就去试APT-GET,结果在查找结果里面除了OPENJDK就是一个什么GIJ-JDK。


我以为在软件搜索库中有自己定义的名字,与其它的JDK名字不一样,可能这个GIJ-JDK就是我所需要的JDK吧,于是就把它装了。


结果就是我在帖子里向大家提问的那样了,JAVA指向了GIJ这个东西。


后来才在另一个帖子的留言中得知UBUNTU不使用RPM的,才明白过来,


去官网上下了那个jdk-2u25-i586.bin这样的一个文件,安装成功了



JAVA_HOME已经设置好了,但是还有一个让人头疼的问题。。。


是这样的,我们要做一个使用HADOOP进行MAPREDUSE功能实现与性能分析的作业,使用HADOOP的开源包,本来是件很简单的事情,跑一下就行了,

但是:
我按照老师提供的配置说明一步一步来进行,首先是发现在使用ssh登录localhost的时候说是在22号端口上连接失败,

这个后来发现是因为没有安装ssh-server造成的(汗),已经改好了;


第二个问题最要命:


我确定已经把JAVA_HOME设置好了,在终端里使用$JAVA_HOME会返回正确的JDK位置,使用java -version也能显示出最新安装的sun java版本号,而不是之前安装不成功时的openjava版本号。


然后我在本机上设置了两个本地回路用于建立一个伪分布式 的环境,一个是master,一个是localhost。

然后又设置了公钥,可以不输密码进行访问;


接下来问题来了,我在初始化完namenode之后,按说明上写的运行start-all.sh

却返回两个错误结果,分别是从master和localhost返回的,都说java_home没有设置!!

这让我情何以堪啊,我去查hadoop-config.sh的内容,里面有对JAVA_HOME的设置部分,我运行这个脚本,成功了。

然后我又登录两个本地的机器,在登录状态下输入$java_home返回了正确的结果。


然后我就去一一找那些跟start-all.sh有关的所有脚本文件,没有找到其它地方有设置JAVAHOME的。


最后的结果是,只有namenode运行成功了,可以执行hadoop fs -ls <dir>命令来查看hdfs系统下的文件,但不知道为什么对它使用-put参数总是说io错误,无法向我在dhfs系统中建立的文件夹中放入文件。



首先是我的JAVAHOME设置问题,这里主要涉及两个文件,一个是家目录下的.profile,一个是/etc/profile,下面分别是两个文件的关键部分的内容。



这是我的jdk安装位置,按老师给的说明设置的,在我的家目录下。有点不太合理,因为其它用户访问不到。


代码:
neo@neo-laptop:~/jdk1.6.0_25$ ls
bin include man register_zh_CN.html
COPYRIGHT jre README.html sample
db lib register.html src.zip
demo LICENSE register_ja.html THIRDPARTYLICENSEREADME.txt
复制代码

下面是/etc/profile文件:


代码:
#set java environment

export JAVA_HOME=/home/neo/jdk1.6.0_25

export JRE_HOME=/home/neo/jdk1.6.0_25/jre

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
复制代码

下面是~/.profile文件的最后几行:


代码:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

PATH="$HOME/jdk1.6.0_25/bin:$PATH"
PATH="$HOME/hadoop/bin:$PATH"
复制代码

这个是输入$JAVA_HOME的返回结果:


代码:
neo@neo-laptop:~$ $JAVA_HOME
bash: /home/neo/jdk1.6.0_25: 是一个目录
复制代码

这个是我登录localhost之后输入JAVAHOME的返回结果,在master里也是一样的。


代码:
neo@neo-laptop:~$ ssh localhost
Linux neo-laptop 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/

Last login: Thu May 12 08:53:27 2011 from localhost.localdomain
neo@neo-laptop:~$ $JAVA_HOME
-bash: /home/neo/jdk1.6.0_25: 是一个目录
复制代码

这个是在格式化namenode之后,执行start-all.sh得到的结果,上面我提到的JAVAHOME问题:


代码:
neo@neo-laptop:~$ start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-mapred.sh
starting namenode, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-namenode-neo-laptop.out
localhost: Error: JAVA_HOME is not set.
master: Error: JAVA_HOME is not set.
starting jobtracker, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-jobtracker-neo-laptop.out
localhost: Error: JAVA_HOME is not set.
复制代码

然后查了一下,决定自己把HADOOP-CONFIG。SH文件给改一下,直接把里面的JAVA——HOME给设成我的JAVA安装路径,总算成功了。


下面是跑MAPREDUCE的过程:
neo@neo-laptop:~$ start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-mapred.sh
starting namenode, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-namenode-neo-laptop.out
localhost: starting datanode, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-datanode-neo-laptop.out
master: starting secondarynamenode, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-secondarynamenode-neo-laptop.out
starting jobtracker, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-jobtracker-neo-laptop.out
localhost: starting tasktracker, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-tasktracker-neo-laptop.out
neo@neo-laptop:~$ jps
7653 SecondaryNameNode
7950 TaskTracker
7754 JobTracker
8045 Jps
7252 NameNode
7445 DataNode
neo@neo-laptop:~$ hadoop fs -ls
11/05/12 17:15:00 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/05/12 17:15:00 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
Found 3 items
drwxr-xr-x - neo supergroup 0 2011-05-12 16:56 /user/neo/myinput
drwxr-xr-x - neo supergroup 0 2011-05-12 16:59 /user/neo/output
drwxr-xr-x - neo supergroup 0 2011-05-12 16:07 /user/neo/user

复制代码


此文章是对我在中国LINUX社区里的一系列问题的总结,特在此感谢中国LINUX社区里给于关心与帮助的人。谢谢。

原创粉丝点击