3

当尝试根据这个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)

4

0 回答 0