启动hadoop时错误 。
(1) ./start-all.sh 提示 :JAVA_HOME is not set
解决这个问题的思路如此:
JAVA_HOME is not set 指的是找不到java_home
可以用java -version 看一下如果 ,可以出来java的有关版本问题说明 本地的环境变量是没有问题的。
那么还报 JAVA_HOME is not set 这个问题出在哪儿了 。既然本地的环境变量没有问题。那么就有可能出在
在hadoop conf 文件夹下的xml配置出了问题
看了一下 conf 下的 hadoop-env.sh 文件
export JAVA_HOME=C:\Program Files\Java\jdk1.6.0_05
貌似是没有问题的。我用 echo $JAVA_HOME 打印出来的是 C:\Program
也就是说,hadoop 中的JAVA_HOME 没有被识别。然后我又用
export JAVA_HOME=C:\Program Files\Java\jdk1.6.0_05 命令 。提示‘Files\Java\jdk1.6.0_05 ’ not a valid identifier
问题找出来了 也就是说 Program Files 带空格的这个路径 不认识。 所以 我就把jdk重新装了一下。路径改了一下。 测试后OK
一切顺利 。hadoop 启动成功。
这是上述容易出现的问题。如果这两个地方都没问题,还报这个错的话。 建议你检查一下你有没有犯一个巨2的问题
hadoop-env.sh 文件里的配置注释符#没有去掉
下边这种方法是我从网上找到了 试了一下也可以的。
在Cygwin上配置Hadoop的Java_home,首先到了${HADOOP_HOME}的conf目录下,修改hadoop-env.sh文件。主要分为如下几步:
1. 找到JAVA_HOME,修改JAVA_HOME的路径指向你本机安装的Jdk路径。注意,这里的路径不能以window的路径出现,应该用unix的形式出现,例如c:\Program Files\Java\jdk1.6.0,应该写成/cygdrive/c/Program Files/Java/jdk1.6.0.而且,还有一点要注意的是,如果路径有空格,如Program Files间的空格,则应该将路径用双引号括起("/cygdrive/c/Program Files/Java/jdk1.6.0")。
2. 修改完hadoop-env.sh文件后,如果马上启动Hadoop,仍会报错,出现“/bin/java: No such file or directoryva/jdk1.6.0_10 ”的错误。经过上网查证,发现是dos环境与Unix的字符编码的问题,可以用dos2unix来实现 DOS <=> UNIX text file 转换。所以切换到conf目录下,对hadoop-env.sh进行Unix文本转化:dos2unix hadoop-env.sh.如此就可以正常启动Hadoop了!
(2)./hadoop fs -ls / 提示INFO ipc.Client: Retrying connect to server: 10.142.111.60:9000
hadoop安装完成后,必须要用haddop namenode format格式化后,才能使用,如果重启机器
在启动hadoop后,用hadoop fs -ls命令老是报 10/09/25 18:35:29 INFO ipc.Client: Retrying connect to server: 10.142.111.60:9000. Already tried 0 time(s).的错误,
用jps命令,也看不不到namenode的进程, 必须再用命令hadoop namenode format格式化后,才能再使用
原因是:hadoop默认配置是把一些tmp文件放在/tmp目录下,重启系统后,tmp目录下的东西被清除,所以报错
解决方法:
在conf/core-site.xml (0.19.2版本的为conf/hadoop-site.xml)中增加以下内容
<property>
<name>hadoop.tmp.dir</name>
<value>/var/log/hadoop/tmp</value>
<description>A base for other temporary directories</description>
</property>
重启hadoop后,格式化namenode即可 ./hadoop namenode -format
方案2
c.Client: Retrying connect to server错误解决方案
运行Hadoop: The Definitive Guide 2nd Ediction第51页的例子里面的例子出现了如下错误:
* 12/01/10 16:29:32 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s).
* 12/01/10 16:29:33 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 1 time(s).
* 12/01/10 16:29:34 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 2 time(s).
* 12/01/10 16:29:35 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 3 time(s).
* 12/01/10 16:29:36 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 4 time(s).
* 12/01/10 16:29:37 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 5 time(s).
* 12/01/10 16:29:38 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 6 time(s).
* 12/01/10 16:29:39 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 7 time(s).
* 12/01/10 16:29:40 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 8 time(s).
* 12/01/10 16:29:41 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 9 time(s).
解决方案:
在命令行使用ifconfig查看本机IP,然后进入conf/core-site.xml将hdfs://localhost:9000改为hdfs://你的IP地址:9000
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.101:9000</value>
</property>
</configuration>
方案3:
1. <?xml version="1.0"?>
2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
3.
4. <!-- Put site-specific property overrides in this file. -->
5.
6. <configuration>
7.
8. <property>
9. <name>fs.default.name</name>
10. <value>hdfs://127.0.0.1:9000</value>
11. </property>
12.
13. <property>
14. <name>hadoop.tmp.dir</name>
15. <value>/home/hadoopdata/tmp</value>
16. <description>A base for other temporary directories.</description>
17. </property>
18.
19. <property>
20. <name>dfs.name.dir</name>
21. <value>/home/hadoopdata/filesystem/name</value>
22. <description>Determines where on the local filesystem the DFS name node should store the name table. If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy. </description>
23. </property>
24.
25. <property>
26. <name>dfs.data.dir</name>
27. <value>/home/hadoopdata/filesystem/data</value>
28. <description>Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored.</description>
29. </property>
30.
31. <property>
32. <name>dfs.replication</name>
33. <value>1</value>
34. <description>Default block replication. The actual number of replications can be specified when the file is created. The default isused if replication is not specified in create time.</description>
35. </property>
36.
37. </configuration>
dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。