启动hadoop时常见错误

本文解决了Hadoop启动时遇到的JAVA_HOME未设置问题及hadoop fs -ls /命令提示连接重试错误。通过调整环境变量与配置文件,确保Hadoop能够正确启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启动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格式化时会自动创建,如果预先创建反而会有问题。



### Hadoop 集群或单机版启动指南 在启动 Hadoop 集群或单机版,需要确保所有配置文件正确设置,并按照特定的步骤执行启动命令。以下是关于如何启动 Hadoop 的详细说明: #### 单机版 Hadoop 启动 1. 确保环境变量已正确配置。例如,在 `profile` 文件中添加以下内容并刷新环境变量: ```bash export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source /etc/profile ``` 这些命令用于定义 Hadoop 的安装路径并将其添加到系统路径中[^2]。 2. 启动 HDFS 和 YARN 服务: ```bash start-dfs.sh start-yarn.sh ``` 这两个脚本分别用于启动分布式文件系统(HDFS)和资源管理器(YARN)[^1]。 3. 验证 Hadoop 是否正常运行。可以使用以下命令创建测试目录并运行 MapReduce 示例程序: ```bash cd /usr/local/hadoop313 mkdir ./input cp ./etc/hadoop/*.xml ./input ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output &#39;dfs[a-z.]+&#39; cat ./output/* ``` 上述命令将验证 Hadoop 的基本功能是否正常工作[^1]。 #### Hadoop 集群启动 1. 在集群模式下,首先需要确保所有节点的配置文件一致。特别是 `core-site.xml`、`hdfs-site.xml`、`yarn-site.xml` 和 `mapred-site.xml` 文件的内容必须正确无误。例如,`yarn-site.xml` 中应包含以下配置以支持 MapReduce 任务: ```xml <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value> </property> ``` 这些配置项确保 MapReduce 环境变量正确传递给任务[^3]。 2. 启动 HDFS 和 YARN 服务: ```bash start-dfs.sh start-yarn.sh ``` 3. 检查集群状态。可以通过以下命令查看 NameNode 和 ResourceManager 的状态: ```bash jps ``` 正常情况下,应该能看到以下进程:`NameNode`、`DataNode`、`ResourceManager` 和 `NodeManager`。 4. 如果遇到问题,可以参考常见错误处理方法。 ```python # 示例 Python 脚本用于与 Hadoop 集成 from subprocess import call call(["hdfs", "dfs", "-mkdir", "/user/test"]) call(["hdfs", "dfs", "-put", "local_file.txt", "/user/test/"]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值