このhttp://www.thegeekstuff.com/2012/02/hadoop-pseudo-distributed-installation/ Web サイトに従って、ラップトップに疑似配布モードで 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) で at 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(ネイティブメソッド) 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:ERROR "EventCounter" という名前のアペンダーをインスタンス化できませんでした。 12/10/31 10:58:42 INFO namenode.NameNode: STARTUP_MSG: /**************************************************** ************ STARTUP_MSG: NameNode を開始しています STARTUP_MSG: ホスト = host220/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; Tue Aug 17 01:02:28 EDT 2010 に「tomwhite」が編集 ****************************************************** ************/ 12/10/31 10:58:43 INFO namenode.FSNamesystem: defaultReplication = 3 12/10/31 10:58:43 INFO namenode.FSNamesystem: maxReplication = 512 12/10/31 10:58:43 INFO namenode.FSNamesystem: minReplication = 1 12/10/31 10:58:43 INFO namenode.FSNamesystem: maxReplicationStreams = 2 12/10/31 10:58:43 INFO namenode.FSNamesystem: shouldCheckForEnoughRacks = false 12/10/31 10:58:43 INFO security.Groups: グループ マッピング impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000 12/10/31 10:58:43 INFO namenode.FSNamesystem: fsOwner=hadoop 12/10/31 10:58:43 INFO namenode.FSNamesystem: スーパーグループ = スーパーグループ 12/10/31 10:58:43 INFO namenode.FSNamesystem: isPermissionEnabled=true 12/10/31 10:58:43 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 分、accessTokenLifetime=0 分 12/10/31 10:58:43 INFO common.Storage: サイズ112の画像ファイルを0秒で保存。 12/10/31 10:58:43 INFO common.Storage: ストレージ ディレクトリ /tmp/hadoop-hadoop/dfs/name が正常にフォーマットされました。 12/10/31 10:58:43 INFO 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) で at java.lang.Class.forName0(ネイティブメソッド) java.lang.Class.forName(Class.java:169) で localhost: mkdir: ディレクトリ `/var/run/hadoop' を作成できません: 権限が拒否されました localhost: データノードを開始し、/var/log/hadoop/hadoop/hadoop-hadoop-datanode-host220.out にログを記録します localhost: /home/hadoop/hadoop-0.21.0/bin/hadoop-daemon.sh: 127 行目: /var/run/hadoop/hadoop-hadoop-datanode.pid: そのようなファイルやディレクトリはありません localhost: log4j:ERROR クラス [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) で localhost: at java.lang.Class.forName0(ネイティブ メソッド) ローカルホスト: java.lang.Class.forName(Class.java:169) で localhost: mkdir: ディレクトリ `/var/run/hadoop' を作成できません: 権限が拒否されました localhost: secondarynamenode を開始し、/var/log/hadoop/hadoop/hadoop-hadoop-secondarynamenode-host220.out にログを記録します localhost: /home/hadoop/hadoop-0.21.0/bin/hadoop-daemon.sh: 127 行目: /var/run/hadoop/hadoop-hadoop-secondarynamenode.pid: そのようなファイルまたはディレクトリはありません localhost: log4j:ERROR クラス [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) で localhost: at 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) で at java.lang.Class.forName0(ネイティブメソッド) java.lang.Class.forName(Class.java:169) で localhost: mkdir: ディレクトリ `/var/run/hadoop' を作成できません: 権限が拒否されました localhost: tasktracker の開始、/var/log/hadoop/hadoop/hadoop-hadoop-tasktracker-host220.out へのログ記録 localhost: /home/hadoop/hadoop-0.21.0/bin/hadoop-daemon.sh: 127 行目: /var/run/hadoop/hadoop-hadoop-tasktracker.pid: そのようなファイルまたはディレクトリはありません localhost: log4j:ERROR クラス [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) で localhost: at java.lang.Class.forName0(ネイティブ メソッド) ローカルホスト: java.lang.Class.forName(Class.java:169) で