首先是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
复制代码