Hadoop启动不了Namenode进程,出现IllegalArgumentException异常

这次的问题乍看起来很奇怪,在本机完成配置启动Hadoop的时候,首先,我们需要对namenode进行format,但是在执行了命令之后,却出现了如下的异常:FATAL namenode.NameNode: Exception in namenode join java.lang.IllegalArgumentException: URI has an authority component。别的不管,就冲着这个 authority,我义无反顾地在 format命令前加上了 sudo,结果发现…………木有起到半点作用。 那么,直接跳过format环节执行start-all呢?结果看起来有点神奇,几个进程居然还都跑起来了。不过明眼一看……怪了,唯独没有namenode进程(如下图所示)。通过namenode上50070端口的 Web UI也发现无法打开网页。于是查看namenode的log文件,发现又出现了上述的IllegalArgumentException异常;而在datanode的log文件里,也发现了一大串Retrying connect to server。嗯……好吧……看来得耗上了。 经过几番查找、尝试,终于发现了问题的原因。这个异常的出现主要与这么两个文件有关:core-site.xml和hdfs-site.xml。想必进行过Hadoop配置的人对这两个文件都有着很深的印象,而这两个文件中,与本问题关系最直接的就是这么几个Property: [html] view plaincopy在CODE上查看代码片派生到我的代码片 在core-site.xml里,我们配置了hadoop.tmp.dir属性,以我这里的配置为例:hadoop.tmp.dirfile:/home/hdusr/hadoop-2.2.0/tmp/[html] view plaincopy在CODE上查看代码片派生到我的代码片 在hdfs-site.xml里,我们通过如下的方式使用了hadoop.tmp.dir的属性值(以下的写法也是Hadoop 2.2中hdfs-site的默认配置值):dfs.namenode.name.dirfile://${hadoop.tmp.dir}/dfs/namedfs.datanode.data.dirfile://${hadoop.tmp.dir}/dfs/data这样的配置看似没有什么大的问题,而且还包含着${hadoop.tmp.dir}这种高端大气上档次的灵活性写法。但问题就出在了这里,经过实际操作确认,如果我们用这种变量式的方法对hdfs-site文件中的属性进行配置就会出现关于URI的权限问题。个人猜测可能因为Hadoop安装在hdusr目录,所以启动hadoop服务过程中,对hdfs-site文件进行载入时,解析变量式配置信息的中间过程遇到了权限问题(在下对Linux实在是菜鸟中的菜鸟,止步于此,不敢多加妄言)。。 总而言之,IllegalArgumentException出现在本人的这种配置情况中时,可以通过把hdfs-site.xml修改为如下形式解决。 [html] view plaincopy在CODE上查看代码片派生到我的代码片 为了解决这个出现的异常,我们把hdfs-site.xml中的以下两个属性修改为:dfs.namenode.name.dirfile:/home/hdusr/hadoop-2.2.0/tmp/dfs/name(即使用完整的绝对地址)dfs.datanode.data.dirfile:/home/hdusr/hadoop-2.2.0/tmp/dfs/name(即使用完整的绝对地址)进过对hdfs-site.xml文件的修改后,终于……namenode成功格式化,并且也能够正常启动Hadoop服务,启动后的进程显示见下图。 以上只是本人作为菜鸟的一些不成熟的见解,所言不实之处还请见谅,望各位高人指点,感激不尽。

时间: 2024-10-05 22:36:02

Hadoop启动不了Namenode进程,出现IllegalArgumentException异常的相关文章

启动hadoop,没有启动namenode进程。log4j:ERROR setFile(null,true) call faild.

解决办法: cd /home/hadoop/hadoop-env/hadoop-1.0.1/log less hadoop-hadoop-namenode-localhost.localdomain.log  --查看该日志,发现是权限问题 chmod 777 hadoop-hadoop-namenode-localhost.localdomain.log --root用户下操作,赋权限 关闭hadoop后在启动hadoop,发现虽然没有报错,但还是没有启动namenode进程. 则还是进入ha

Hadoop启动没有namenode进程

Hadoop问题:启动hadoop时报namenode未初始化:java.io.IOException: NameNode is not formatted.1.启动Hadoop [email protected]:~/hadoop-1.0.4/bin$ ./start-all.sh  starting namenode, logging to /home/ubuntu/hadoop-1.0.4/libexec/../logs/hadoop-ubuntu-namenode-ubuntu.out

hadoop启动后jps没有namenode(转)

hadoop启动后jps没有namenode 一般都是由于两次或两次以上格式化NameNode造成的,有两种方法可以解决: 1.删除DataNode的所有资料 2.修改每个DataNode的namespaceID(位于/home/hdfs/data/current/VERSION文件中)或修改NameNode的namespaceID(位于/home/hdfs/name/current/VERSION文件中), 目的是两者一致. 但是查看后,两者的ID是一样的, 于是查看/usr/local/ha

hadoop启动守护进程报JAVA_HOME is not set and could not be found

hadoop启动守护进程 sbin/start-dfs.sh 报如下错误:JAVA_HOME is not set and could not be found 解决办法(JAVA_HOME修改为具体的路径):vim etc/hadoop/hadoop-env.sh

hadoop启动start-all.sh出错(master: ssh: connect to host master port 22: Connection refused)

当我们打开系统输入hadoop启动命令start-all.sh时出现以下错误: [[email protected] ~]# start-all.sh starting namenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-namenode-master.out master: ssh: connect to host master port 22: Network is unreachable master: ss

Hadoop启动脚本分析

1 基本概述 Hadoop的命令位于${HADOOP_HOME}/bin.${HADOOP_HOME}/sbin.${HADOOP_HOME}/libexec下面.包含了Linux的shell脚本和windows的批处理文件.本文主要解析linux下的shell脚本. 2 脚本详解 2.1 start-all.sh 要启动Hadoop的各节点和其他服务,这是一个绕不开的启动脚本,该脚本位于${HADOOP_HOME}/sbin下.不过在Hadoop的2.x版本中,Hadoop官方已经宣布被弃用了

hadoop源码解读namenode高可靠:HA;web方式查看namenode下信息;dfs/data决定datanode存储位置

点击browserFilesystem,和命令查看结果一样 当我们查看hadoop源码时,我们看到hdfs下的hdfs-default.xml文件信息 我们查找${hadoop.tmp.dir}这是引用变量,肯定在其他文件有定义,在core-default.xml中查看到,这两个配置文件有个共同点: 就是不要修改此文件,但可以复制信息到core-site.xml和hdfs-site.xml中修改 usr/local/hadoop 是我存放hadoop文件夹的地方 几个关于namenode的重要文

Hadoop 2.6.0 Namenode HA,ResourceManager HA

先启动所有的zookeeper zkServer.sh start 在所有节点上启动JournalNode: sbin/hadoop-daemon.sh start journalnode 格式化第一个NameNode bin/hdfs namenode –format 启动第一个的NameNode sbin/hadoop-daemon.sh start namenode 在第二个NameNode上同步元数据 bin/hdfs namenode -bootstrapStandby 启动第二个Na

hadoop启动,DataNode报错”Incompatible clusterIDs“

启动namenode,通过50070端口查看,发现livenode只有一个--namenode,查看datanode日志,发现有”Incompatible clusterIDs“错误,提示很明显,namenode和datanode的集群id不一致 解决办法:找到core-site.xml配置文件,进入”dfs.datanode.data.dir“配置项下的目录,在current目录下有一VERSION文件,比较namenode和datanode里这个文件中的clusterID,发现不一致,因此只