当尝试根据这个http://www.thegeekstuff.com/2012/02/hadoop-pseudo-distributed-installation/网站在我的笔记本电脑上以伪分发模式安装 hadoop 0.21.0 时,我遇到了这个异常来格式化名称节点:
hadoop@host220:~/hadoop-0.21.0$ bin/hadoop namenode -format
不推荐使用:不推荐使用此脚本执行 hdfs 命令。
而是使用 hdfs 命令。
log4j:错误无法实例化类 [org.apache.hadoop.log.metrics.EventCounter]。
java.lang.ClassNotFoundException:org.apache.hadoop.log.metrics.EventCounter
在 java.net.URLClassLoader$1.run(URLClassLoader.java:202)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
在 java.lang.Class.forName0(本机方法)
在 java.lang.Class.forName(Class.java:169)
在 org.apache.log4j.helpers.Loader.loadClass(Loader.java:179)
在 org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:320)
在 org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:121)
在 org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:664)
在 org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:647)
在 org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:544)
在 org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:440)
在 org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:476)
在 org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:471)
在 org.apache.log4j.LogManager.(LogManager.java:125)
在 org.apache.log4j.Logger.getLogger(Logger.java:105)
在 org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:289)
在 org.apache.commons.logging.impl.Log4JLogger.(Log4JLogger.java:109)
在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
在 java.lang.reflect.Constructor.newInstance(Constructor.java:513)
在 org.apache.commons.logging.impl.LogFactoryImpl.createLogFromClass(LogFactoryImpl.java:1116)
在 org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:914)
在 org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:604)
在 org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:336)
在 org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:310)
在 org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
在 org.apache.hadoop.conf.Configuration.(Configuration.java:153)
在 org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:137)
log4j:错误无法实例化名为“EventCounter”的附加程序。
12/10/31 10:58:42 信息 namenode.NameNode: STARTUP_MSG:
/************************************************* ***********
STARTUP_MSG:启动 NameNode
STARTUP_MSG:主机=主机220/127.0.0.1
STARTUP_MSG:args = [-format]
STARTUP_MSG:版本 = 0.21.0
STARTUP_MSG:类路径 = /etc/hadoop:/usr/lib/jvm/java-6-sun/lib/tools.jar:/home/hadoop/hadoop-0.21.0/bin/../lib/*.jar
STARTUP_MSG:构建 = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.21 -r 985326;由“tomwhite”于 2010 年 8 月 17 日星期二 01:02:28 EDT 编译
****************************************************** **********/
12/10/31 10:58:43 INFO namenode.FSNamesystem: defaultReplication = 3
12/10/31 10:58:43 信息 namenode.FSNamesystem: maxReplication = 512
12/10/31 10:58:43 信息 namenode.FSNamesystem: minReplication = 1
12/10/31 10:58:43 信息 namenode.FSNamesystem: maxReplicationStreams = 2
12/10/31 10:58:43 信息 namenode.FSNamesystem: shouldCheckForEnoughRacks = false
12/10/31 10:58:43 INFO security.Groups:组映射 impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping;缓存超时=300000
12/10/31 10:58:43 信息 namenode.FSNamesystem: fsOwner=hadoop
12/10/31 10:58:43 INFO namenode.FSNamesystem: supergroup=supergroup
12/10/31 10:58:43 信息 namenode.FSNamesystem: isPermissionEnabled=true
12/10/31 10:58:43 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
12/10/31 10:58:43 INFO common.Storage: 0 秒内保存的大小为 112 的图像文件。
12/10/31 10:58:43 INFO common.Storage: 存储目录/tmp/hadoop-hadoop/dfs/name 已格式化成功。
12/10/31 10:58:43 信息 namenode.NameNode: SHUTDOWN_MSG:
/************************************************* ***********
SHUTDOWN_MSG:在host220/127.0.0.1关闭NameNode
****************************************************** **********/
最后它成功格式化了namenode,尽管有例外。然后我尝试使用“start-all.sh”启动 dfs 和 mapreduce,但失败了。下面是控制台输出:
hadoop@host220:~/hadoop-0.21.0$ bin/start-all.sh
此脚本已弃用。而是使用 start-dfs.sh 和 start-mapred.sh
mkdir:无法创建目录`/var/run/hadoop':权限被拒绝
启动namenode,登录到/var/log/hadoop/hadoop/hadoop-hadoop-namenode-host220.out
/home/hadoop/hadoop-0.21.0/bin/../bin/hadoop-daemon.sh:第127行:/var/run/hadoop/hadoop-hadoop-namenode.pid:没有这样的文件或目录
log4j:错误无法实例化类 [org.apache.hadoop.log.metrics.EventCounter]。
java.lang.ClassNotFoundException:org.apache.hadoop.log.metrics.EventCounter
在 java.net.URLClassLoader$1.run(URLClassLoader.java:202)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
在 java.lang.Class.forName0(本机方法)
在 java.lang.Class.forName(Class.java:169)
本地主机:mkdir:无法创建目录`/var/run/hadoop':权限被拒绝
localhost:启动datanode,登录到/var/log/hadoop/hadoop/hadoop-hadoop-datanode-host220.out
本地主机:/home/hadoop/hadoop-0.21.0/bin/hadoop-daemon.sh:第 127 行:/var/run/hadoop/hadoop-hadoop-datanode.pid:没有这样的文件或目录
本地主机:log4j:错误无法实例化类 [org.apache.hadoop.log.metrics.EventCounter]。
本地主机:java.lang.ClassNotFoundException:org.apache.hadoop.log.metrics.EventCounter
本地主机:在 java.net.URLClassLoader$1.run(URLClassLoader.java:202)
本地主机:在 java.security.AccessController.doPrivileged(本机方法)
本地主机:在 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
本地主机:在 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
本地主机:在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
本地主机:在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
本地主机:在 java.lang.Class.forName0(本机方法)
本地主机:在 java.lang.Class.forName(Class.java:169)
本地主机:mkdir:无法创建目录`/var/run/hadoop':权限被拒绝
localhost:启动secondarynamenode,登录到/var/log/hadoop/hadoop/hadoop-hadoop-secondarynamenode-host220.out
本地主机:/home/hadoop/hadoop-0.21.0/bin/hadoop-daemon.sh:第 127 行:/var/run/hadoop/hadoop-hadoop-secondarynamenode.pid:没有这样的文件或目录
本地主机:log4j:错误无法实例化类 [org.apache.hadoop.log.metrics.EventCounter]。
本地主机:java.lang.ClassNotFoundException:org.apache.hadoop.log.metrics.EventCounter
本地主机:在 java.net.URLClassLoader$1.run(URLClassLoader.java:202)
本地主机:在 java.security.AccessController.doPrivileged(本机方法)
本地主机:在 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
本地主机:在 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
本地主机:在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
本地主机:在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
本地主机:在 java.lang.Class.forName0(本机方法)
本地主机:在 java.lang.Class.forName(Class.java:169)
mkdir:无法创建目录`/var/run/hadoop':权限被拒绝
启动jobtracker,记录到/var/log/hadoop/hadoop/hadoop-hadoop-jobtracker-host220.out
/home/hadoop/hadoop-0.21.0/bin/../bin/hadoop-daemon.sh:第127行:/var/run/hadoop/hadoop-hadoop-jobtracker.pid:没有这样的文件或目录
log4j:错误无法实例化类 [org.apache.hadoop.log.metrics.EventCounter]。
java.lang.ClassNotFoundException:org.apache.hadoop.log.metrics.EventCounter
在 java.net.URLClassLoader$1.run(URLClassLoader.java:202)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
在 java.lang.Class.forName0(本机方法)
在 java.lang.Class.forName(Class.java:169)
本地主机:mkdir:无法创建目录`/var/run/hadoop':权限被拒绝
localhost:启动tasktracker,登录到/var/log/hadoop/hadoop/hadoop-hadoop-tasktracker-host220.out
本地主机:/home/hadoop/hadoop-0.21.0/bin/hadoop-daemon.sh:第 127 行:/var/run/hadoop/hadoop-hadoop-tasktracker.pid:没有这样的文件或目录
本地主机:log4j:错误无法实例化类 [org.apache.hadoop.log.metrics.EventCounter]。
本地主机:java.lang.ClassNotFoundException:org.apache.hadoop.log.metrics.EventCounter
本地主机:在 java.net.URLClassLoader$1.run(URLClassLoader.java:202)
本地主机:在 java.security.AccessController.doPrivileged(本机方法)
本地主机:在 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
本地主机:在 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
本地主机:在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
本地主机:在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
本地主机:在 java.lang.Class.forName0(本机方法)
本地主机:在 java.lang.Class.forName(Class.java:169)