加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 教程文章 > NOSQL数据库

HadoopStable版1.04的安装与测试(原创)

时间:2014-04-13 21:52:13  来源:  作者:
2013年5月16日 00:26:42    增加jps显示进程状

Hadoop的安装其实是很简单的,只有有一点Linux操作系统的使用经验,安装Hadoop是轻而易举的事情。
 
下面参考官方文档介绍Hadoop的安装。
 
安装环境:Ubuntu 12.04 Desktop 64位操作系统,Hadoop 1.04,jdk-7u21-linux-x64.tar.gz
(Ubuntu请到Ubuntu的官网下载,Hadoop请到hadoop.apache.org下载,JDK请到Oracle的官网下下载)

 
Hadoop的安装分为单节点的安装和集群方式的安装,分别参考文献:
http://hadoop.apache.org/docs/stable/single_node_setup.html     单节点安装
http://hadoop.apache.org/docs/stable/cluster_setup.html    集群方式安装
 
0. 先决条件
 Ubuntu用下面的命令安装SSH和rsync两个软件包:
 
$ sudo apt-get install ssh
$ sudo apt-get install rsync

 如果是Redhat、CentOS之类的发行版用:
 
$ yum install openssh-server   openssh
$ yum install rsync
 
1.单节点安装
 
单节点安装又分为本地模式安装(Local Mode)和伪分布式安装(Pseudo-Distributed Mode)(集群方式安装则属于完全分布式安装)
 
1.1 本地模式安装
 
这种方式的安装最简单,主要用来debug之类的,实际生产环境肯定不会这样用的。下面解压缩下载的JDK和Hadoop1.04:
 
root@localhost:~/soft# tar zxvf jdk-7u21-linux-x64.tar.gz 
root@localhost:~/soft# tar zxvf hadoop-1.0.4.tar.gz
(注:我喜欢用root用户,来的方便)

 
把夹压缩后JDK和Hadoop放到/opt目录(这是我的习惯,什么地方都可以,只要你喜欢。。。。)
 
编辑Hadoop环境配置文件:
root@localhost:~# vim /opt/hadoop-1.0.4/conf/hadoop-env.sh
修改下面的内容(JDK的目录):
 # export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export JAVA_HOME=/opt/jdk1.7.0_21
 
至此,单机版的Local Mode的Hadoop安装完毕。
为了操作方便可以将hadoop下的bin目录,和jdk的bin目录加到PATH环境变量中,编辑/etc/profile或者/root/.profile,添加如下的内容:
export PATH=/opt/hadoop-1.0.4/bin:/opt/jdk1.7.0_21/bin:$PATH
下次登录时,直接输入hadoop和jdk的指令,就不需要加路径了。
 
下面测试下,是否能够工作(用文档中的例子):
 
# mkdir /root/input       (我把它建在了当前用户的主目录下,input用来保存需要输入hadoop进行处理的文档)
# cp /opt/hadoop-1.0.4/conf/*.xml   input  (拷贝一些现成文本文件,这里用了hadoop的配置文件)
# /opt/hadoop-1.0.4/bin/hadoop jar /opt/hadoop-1.0.4/hadoop-examples-1.04.jar grep input output 'dfs[a-z.]+'    (启动hadoop执行文本处理任务,会输出很多信息,先不用管它) 
# cat /root/output/*   (这个output目录是hadoop上一步的命令自动生成的,用于保存输出结果)  可以显示:
 
root@localhost:~# cat output/*
1 dfsadmin
 
恭喜您,成功了。

1.2 伪分布式模式安装
 
学会了这种模式的安装,那么完全分布式模式的安装也不在话下。
需要修改的几个配置文件及内容如下:
conf/core-site.xml:
 
<configuration>
     <property>
         <name>fs.default.name</name>
         <value>hdfs://localhost:9000</value>
     </property>
</configuration>
conf/hdfs-site.xml:(注意这里配置保存在hdfs内的文件的份数,这里是1份,因为只有一个节点)
 
<configuration>
     <property>
         <name>dfs.replication</name>
         <value>1</value>
     </property>
</configuration>
conf/mapred-site.xml:

 <configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>localhost:9001</value>
     </property>
</configuration>
下面要设置ssh面密码登录:
 
# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

 
用ssh  localhost测试,如果不用提示输入密码即可登录,则成功!
 
下面需要格式化分布式文件系统:
root@localhost:/opt/hadoop-1.0.4# /opt/hadoop-1.0.4/bin/hadoop namenode -format
13/05/07 22:44:24 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = localhost/127.0.0.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 1.0.4
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290; compiled by 'hortonfo' on Wed Oct  3 05:13:58 UTC 2012
************************************************************/
13/05/07 22:44:24 INFO util.GSet: VM type       = 64-bit
13/05/07 22:44:24 INFO util.GSet: 2% max memory = 19.33375 MB
13/05/07 22:44:24 INFO util.GSet: capacity      = 2^21 = 2097152 entries
13/05/07 22:44:24 INFO util.GSet: recommended=2097152, actual=2097152
13/05/07 22:44:24 INFO namenode.FSNamesystem: fsOwner=root
13/05/07 22:44:24 INFO namenode.FSNamesystem: supergroup=supergroup
13/05/07 22:44:24 INFO namenode.FSNamesystem: isPermissionEnabled=true
13/05/07 22:44:24 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
13/05/07 22:44:24 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
13/05/07 22:44:24 INFO namenode.NameNode: Caching file names occuring more than 10 times 
13/05/07 22:44:25 INFO common.Storage: Image file of size 110 saved in 0 seconds.
13/05/07 22:44:25 INFO common.Storage: Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted.
13/05/07 22:44:25 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1
************************************************************/

 
最后是启动hadoop守护进程:
root@localhost:/opt/hadoop-1.0.4# /opt/hadoop-1.0.4/bin/start-all.sh 
starting namenode, logging to /opt/hadoop-1.0.4/libexec/../logs/hadoop-root-namenode-localhost.out
localhost: starting datanode, logging to /opt/hadoop-1.0.4/libexec/../logs/hadoop-root-datanode-localhost.out
localhost: starting secondarynamenode, logging to /opt/hadoop-1.0.4/libexec/../logs/hadoop-root-secondarynamenode-localhost.out
starting jobtracker, logging to /opt/hadoop-1.0.4/libexec/../logs/hadoop-root-jobtracker-localhost.out
localhost: starting tasktracker, logging to /opt/hadoop-1.0.4/libexec/../logs/hadoop-root-tasktracker-localhost.out
root@localhost:/opt/hadoop-1.0.4# 
 
打开本机(Ubuntu)的浏览器访问NameNode和JobTracker:
NameNode - http://localhost:50070/
JobTracker - http://localhost:50030/
 
 下面,通过wordcount示例验证mapreduce能否正常工作。
 
root@localhost:~# hadoop fs -mkdir input                                   //(在hdfs的根目录下创建/user/root/input目录,这是因为没有使用绝对路径的原因,系统自动创建user/your_user_name/input) 
root@localhost:~# hadoop fs -put  /opt/hadoop-1.0.4/conf/*  input         (//随便拷贝一下文件到input目录,用于统计单词数目)                             
root@localhost:~# hadoop fs -ls /user/root/input                                       (//查看拷贝的文本文件列表)
Found 17 items
-rw-r--r--   1 root supergroup       7457 2013-05-07 23:12 /user/root/input/capacity-scheduler.xml
drwxr-xr-x   - root supergroup          0 2013-05-07 23:12 /user/root/input/conf
-rw-r--r--   1 root supergroup        535 2013-05-07 23:12 /user/root/input/configuration.xsl
-rw-r--r--   1 root supergroup        272 2013-05-07 23:12 /user/root/input/core-site.xml
-rw-r--r--   1 root supergroup        327 2013-05-07 23:12 /user/root/input/fair-scheduler.xml
-rw-r--r--   1 root supergroup       2271 2013-05-07 23:12 /user/root/input/hadoop-env.sh
-rw-r--r--   1 root supergroup       1488 2013-05-07 23:12 /user/root/input/hadoop-metrics2.properties
-rw-r--r--   1 root supergroup       4644 2013-05-07 23:12 /user/root/input/hadoop-policy.xml
-rw-r--r--   1 root supergroup        275 2013-05-07 23:12 /user/root/input/hdfs-site.xml
-rw-r--r--   1 root supergroup       4441 2013-05-07 23:12 /user/root/input/log4j.properties
-rw-r--r--   1 root supergroup       2033 2013-05-07 23:12 /user/root/input/mapred-queue-acls.xml
-rw-r--r--   1 root supergroup        291 2013-05-07 23:12 /user/root/input/mapred-site.xml
-rw-r--r--   1 root supergroup         10 2013-05-07 23:12 /user/root/input/masters
-rw-r--r--   1 root supergroup         10 2013-05-07 23:12 /user/root/input/slaves
-rw-r--r--   1 root supergroup       1243 2013-05-07 23:12 /user/root/input/ssl-client.xml.example
-rw-r--r--   1 root supergroup       1195 2013-05-07 23:12 /user/root/input/ssl-server.xml.example
-rw-r--r--   1 root supergroup        382 2013-05-07 23:12 /user/root/input/taskcontroller.cfg
下面运行wordcount示例(这是hadoop自带的一个测试例子)
root@localhost:~# hadoop jar /opt/hadoop-1.0.4/hadoop-examples-1.0.4.jar wordcount input output
13/05/08 00:40:25 INFO input.FileInputFormat: Total input paths to process : 16
13/05/08 00:40:25 INFO util.NativeCodeLoader: Loaded the native-hadoop library
13/05/08 00:40:25 WARN snappy.LoadSnappy: Snappy native library not loaded
13/05/08 00:40:25 INFO mapred.JobClient: Running job: job_201305072246_0001
13/05/08 00:40:26 INFO mapred.JobClient:  map 0% reduce 0%
13/05/08 00:40:43 INFO mapred.JobClient:  map 12% reduce 0%
13/05/08 00:40:59 INFO mapred.JobClient:  map 25% reduce 0%
13/05/08 00:41:08 INFO mapred.JobClient:  map 37% reduce 8%
13/05/08 00:41:14 INFO mapred.JobClient:  map 37% reduce 12%
13/05/08 00:41:17 INFO mapred.JobClient:  map 50% reduce 12%
13/05/08 00:41:26 INFO mapred.JobClient:  map 62% reduce 12%
13/05/08 00:41:29 INFO mapred.JobClient:  map 62% reduce 16%
13/05/08 00:41:35 INFO mapred.JobClient:  map 75% reduce 16%
13/05/08 00:41:38 INFO mapred.JobClient:  map 75% reduce 20%
13/05/08 00:41:44 INFO mapred.JobClient:  map 87% reduce 25%
13/05/08 00:41:53 INFO mapred.JobClient:  map 100% reduce 29%
13/05/08 00:42:02 INFO mapred.JobClient:  map 100% reduce 100%
13/05/08 00:42:07 INFO mapred.JobClient: Job complete: job_201305072246_0001
13/05/08 00:42:07 INFO mapred.JobClient: Counters: 29
13/05/08 00:42:07 INFO mapred.JobClient:   Job Counters 
13/05/08 00:42:07 INFO mapred.JobClient:     Launched reduce tasks=1
13/05/08 00:42:07 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=134049
13/05/08 00:42:07 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
13/05/08 00:42:07 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
13/05/08 00:42:07 INFO mapred.JobClient:     Launched map tasks=16
13/05/08 00:42:07 INFO mapred.JobClient:     Data-local map tasks=16
13/05/08 00:42:07 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=76403
13/05/08 00:42:07 INFO mapred.JobClient:   File Output Format Counters 
13/05/08 00:42:07 INFO mapred.JobClient:     Bytes Written=15481
13/05/08 00:42:07 INFO mapred.JobClient:   FileSystemCounters
13/05/08 00:42:07 INFO mapred.JobClient:     FILE_BYTES_READ=22793
13/05/08 00:42:07 INFO mapred.JobClient:     HDFS_BYTES_READ=28788
13/05/08 00:42:07 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=412239
13/05/08 00:42:07 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=15481
13/05/08 00:42:07 INFO mapred.JobClient:   File Input Format Counters 
13/05/08 00:42:07 INFO mapred.JobClient:     Bytes Read=26874
13/05/08 00:42:07 INFO mapred.JobClient:   Map-Reduce Framework
13/05/08 00:42:07 INFO mapred.JobClient:     Map output materialized bytes=22883
13/05/08 00:42:07 INFO mapred.JobClient:     Map input records=761
13/05/08 00:42:07 INFO mapred.JobClient:     Reduce shuffle bytes=22883
13/05/08 00:42:07 INFO mapred.JobClient:     Spilled Records=2204
13/05/08 00:42:07 INFO mapred.JobClient:     Map output bytes=35847
13/05/08 00:42:07 INFO mapred.JobClient:     Total committed heap usage (bytes)=2580611072
13/05/08 00:42:07 INFO mapred.JobClient:     CPU time spent (ms)=5850
13/05/08 00:42:07 INFO mapred.JobClient:     Combine input records=2599
13/05/08 00:42:07 INFO mapred.JobClient:     SPLIT_RAW_BYTES=1914
13/05/08 00:42:07 INFO mapred.JobClient:     Reduce input records=1102
13/05/08 00:42:07 INFO mapred.JobClient:     Reduce input groups=795
13/05/08 00:42:07 INFO mapred.JobClient:     Combine output records=1102
13/05/08 00:42:07 INFO mapred.JobClient:     Physical memory (bytes) snapshot=2717745152
13/05/08 00:42:07 INFO mapred.JobClient:     Reduce output records=795
13/05/08 00:42:07 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=16452190208
13/05/08 00:42:07 INFO mapred.JobClient:     Map output records=2599
root@localhost:~# /opt/hadoop-1.0.4/bin/hadoop fs -cat output/*                                 (//显示统计的单词出现的次数)
'default' 2
'man 1
(%F:%M(%L)) 2
(fs, 1
(maximum-system-jobs 2
30-day 2
<body> 1
<configuration> 8
<description> 4
<description>ACL 10
<description>If 2
A 12
ACL 13
Add 1

也可以吧输出结果从hadoop的hdfs中拷贝出来,使用shell中的cat命令查看结果:
root@localhost:~# hadoop fs -get output output
root@localhost:~# cat output/*

 
2.Hadoop集群安装
首先关闭所有目标Hadoop集群主机的防火墙(当然也可以打开需要的端口,简单期间就是关闭防火墙)
具体安装过程:
安装一个小型的Hadoop集群,这里需要三台机器,主机名和IP地址关系如下:
    master.hadoop      192.168.0.65     (运行NameNode JobTracker)
    slave-1.hadoop      192.168.0.66    (运行DataNode TaskTracker)
    slave-2.hadoop      192.168.0.67    (运行DataNode TaskTracker)
以后需要添加新的机器,就slave-XXX即可。
首先完成单机版Hadoop的安装,也就是上面单机版伪分布式方式的安装。 下面的安装就接着上面的过程来继续。
如果是做、Hadoop的集群实验的话,没有必要使用物理机器,使用VMwrae Workstation装几个Ubuntu即可。当然了物理机器的内存要大一点。我的机器内存8G,每个虚拟机内存1G。凑活做实验够了。
Ubuntu 用的是 12.04 Server版的。(三台机器可以使用虚拟机的clone,如果不会的话那就直接装三个虚拟机也行,过程有点麻烦而已)
设置三台机器的IP地址,这个都是Ubuntu的基本操作,省略了。
设置主机的主机名,192.168.0.65中用vi或者其它编辑器修改/etc/hostname,删除原有内容输入master.hadoop,重启系统后命令行提示符为:root@master:~#。其它连个的设置跟这个没啥区别。省略了。
设置域名解析:为了操作方便使用域名解析,为了简化操作不实用bind之类的域名服务器,直接修改/etc/hosts文件。三个机器上的/etc/hosts中添加的内容一样,如下所示:
192.168.0.65 master.hadoop
192.168.0.66 slave-1.hadoop
192.168.0.67 slave-2.hadoop
测试,在三台机器上分别ping这按个域名,能ping通,就OK了。不通的话先把这一步搞定再往下。
SSH免密码登录设置(在Master机器上):
# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
# scp ~/.ssh/authorized_keys   slave-1.hadoop:/root/.ssh/                     (注意,我用的是root用户安装的,所以三个主机都必须是root用户的主目录)
# scp ~/.ssh/authorized_keys   slave-2.hadoop:/root/.ssh/                     (注意,我用的是root用户安装的,所以三个主机都必须是root用户的主目录)
在master主机上ssh登录两个slave主机看是否让输入密码,如果不让输入面则OK,可以继续。
修改配置文件:
/opt/hadoop-1.04/conf/hadoop-env.sh          中的JAVA_HOME的设置。(3台机器都要设置的)
/opt/hadoop-1.04/conf/core-site.xml              三台主机上的设置必须一样(分别设置,不再赘述)。内容如下所示:
<?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://master.hadoop:9000</value>
        </property>
</configuration>
/opt/hadoop-1.04/conf/mapred-site.xml       三台主机上的设置必须一样(分别设置,不再赘述)。内容如下所示:
<?xml version="1.0"?>   
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>master.hadoop:9001</value>
     </property>
</configuration>
为了清除前面配置单台主机的伪集群设置,执行下面的指令(为了保险期间,三台主机都执行一下):
#rm /tmp/* -rf
#rm /opt/hadoop-1.04/logs/* -rf       (删除原来的日志,这样可以定位后面启动的错误信息)
启动3个节点的Hadoop集群:
/opt/hadoop-1.04/bin/start-all.sh
查看端口监听,如果有下面红色的端口已经启动LISTEN,则OK了,如果没有或者有的端口没有起来,则要看日志了(这个就比较麻烦了),遇到的错误信息放到最后给出。
查看后台网络进程:netstat -an | less
激活Internet连接 (服务器和已建立连接的)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 192.168.0.65:22         192.168.0.8:3609        ESTABLISHED
tcp        0     52 192.168.0.65:22         192.168.0.8:2058        ESTABLISHED
tcp6       0      0 :::50030                :::*                    LISTEN     
tcp6       0      0 :::46516                :::*                    LISTEN     
tcp6       0      0 :::32916                :::*                    LISTEN     
tcp6       0      0 :::50070                :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 192.168.0.65:9000       :::*                    LISTEN     
tcp6       0      0 :::50184                :::*                    LISTEN     
tcp6       0      0 192.168.0.65:9001       :::*                    LISTEN     
tcp6       0      0 :::50090                :::*                    LISTEN     
tcp6       0      0 192.168.0.65:9001       192.168.0.67:54950      ESTABLISHED
tcp6       0      0 192.168.0.65:9001       192.168.0.66:41245      ESTABLISHED
tcp6       0      0 192.168.0.65:9000       192.168.0.67:57371      ESTABLISHED
tcp6       0      0 192.168.0.65:9000       192.168.0.66:57348      ESTABLISHED
tcp6       0      0 192.168.0.65:50070      192.168.0.8:4807        ESTABLISHED
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
 
我是在windows上测试的,首先编辑c:windowssystem32driversetchosts,,添加如下内容:
192.168.0.65 master.hadoop
192.168.0.66 slave-1.hadoop
192.168.0.67 slave-2.hadoop
 
下面可以在浏览器中输入http://master.hadoop:50070查看了。如下图所示:
70c9448d79baba745bd6e03457a8ad14.jpg
到此安装全部完成了。下面可以测试一下安装情况。向集群中添加些文件试试。。。。。
在命令行中输入jps命令(显示当前java程序运行的进程状态)三台机器的输出结果如下:
root@master:~# jps
7347 NameNode
7844 Jps
7633 SecondaryNameNode
7707 JobTracker

root@slave-1:~# jps
3453 Jps
2776 TaskTracker
2568 DataNode
 
root@slave-2:~# jps
3377 DataNode
4047 Jps
3585 TaskTracker

目的:安装、配置和管理具有多节点的集群系统。(建议先学会安装但节点的Hadoop)
Hadoop有两类重要的配置文件:
      只读的默认配置文件: src/core/core-default.xml, src/hdfs/hdfs-default.xml and src/mapred/mapred-default.xml
(这些文件保存路径相对于Haddoop的解压路径)
      特定站点的配置文件:conf/core-site.xml, conf/hdfs-site.xml and conf/mapred-site.xml
特定站点环境变量相关的配置在conf/hadoop-env.sh里面(如JDK的目录)
关于Hadoop守护进程的执行环境配置
守护进程执行环境的配置都在配置文件:conf/hadoop-env.sh里面。(守护进程包括:NameNode,DataNode,JobTracker,TaskTracker)
最基本的必须指定JAVA_HOME为你的JDK的目录。
管理员可以配置单个守护进程,在conf/hadoop-env.sh配置文件中以HADOOP_*_OPTS来设置。这些东西看看配置文件就一目了然了。
举个例子:配置NameNode使用parallelGC,在hadoop-env.sh文件最后添加 : 
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}" 
(注意默认的HADOOP_NAMENODE_OPTS不要修改,在文件最后添加上面的配置)
另外,在hadoop-env.sh文件中还可以设置守护进程的日志存放位置(HADOOP_LOG_DIR), 使用的最大heapsize(HADOOP_HEAPSIZE以MB为单位).
 
3.安装中遇到的问题及解决方法
安装完后能够启动测试,但是重启系统或者重启服务后,如果遇到不能启动,则需要查看日志文件,
root@master:/opt/hadoop-1.0.4/logs# cat /opt/hadoop-1.0.4/logs/hadoop-root-namenode-master.hadoop.log
2013-05-12 11:46:11,800 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:303)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:100)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:388)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:362)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:276)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)
2013-05-12 11:46:11,801 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:303)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:100)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:388)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:362)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:276)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)

 2013-05-12 11:46:11,802 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master.hadoop/192.168.0.65
************************************************************/
解决方法:
1.hadoop namenode -format
2.重启hadoop
bin/hadoop/start-all.sh
查看后台网络进程:netstat -an | less
激活Internet连接 (服务器和已建立连接的)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 192.168.0.65:22         192.168.0.8:3609        ESTABLISHED
tcp        0     52 192.168.0.65:22         192.168.0.8:2058        ESTABLISHED
tcp6       0      0 :::50030                :::*                    LISTEN     
tcp6       0      0 :::46516                :::*                    LISTEN     
tcp6       0      0 :::32916                :::*                    LISTEN     
tcp6       0      0 :::50070                :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 192.168.0.65:9000       :::*                    LISTEN     
tcp6       0      0 :::50184                :::*                    LISTEN     
tcp6       0      0 192.168.0.65:9001       :::*                    LISTEN     
tcp6       0      0 :::50090                :::*                    LISTEN     
tcp6       0      0 192.168.0.65:9001       192.168.0.67:54950      ESTABLISHED
tcp6       0      0 192.168.0.65:9001       192.168.0.66:41245      ESTABLISHED
tcp6       0      0 192.168.0.65:9000       192.168.0.67:57371      ESTABLISHED
tcp6       0      0 192.168.0.65:9000       192.168.0.66:57348      ESTABLISHED
tcp6       0      0 192.168.0.65:50070      192.168.0.8:4807        ESTABLISHED
udp        0      0 0.0.0.0:68              0.0.0.0:*       
3. 永久解决方法
这不是一个永久的解决方法,这是因为,hadoop默认的临时文件目录在/tmp下,而/tmp下的内容有可能会被系统自动删除的,每次要解决问题都需要重新format一下namenode。为了永久解决这个问题,可以修改hadoop的配置文件,将hadoop的临时文件位置改到别处。
编辑core-site.xml文件,添加hadoop.tmp.dir属性:
 <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/hadoop-1.0.4/tmp/hadoop-${user.name}</value>
</property>
再格式化namenode后,启动hadoop服务即可。
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
在CentOS下搭建Android 开发环境
在CentOS下搭建Androi
轻松搭建属于自己的Ubuntu发行版
轻松搭建属于自己的Ub
利用SUSE Studio 打造自己的个性化Linux发行版
利用SUSE Studio 打造
那些采用PHP技术的IT大企业
那些采用PHP技术的IT大
相关文章
    无相关信息
栏目更新
栏目热门