伪分布式模式即单节点集群模式,所有的守护进程都运行在同一台机器上。这种模式下增加了代码调试功能,可以查看内存、HDFS文件系统的输入/输出,以及与其他守护进程交互。以Hadoop用户远程登录K-Master服务器,在单机模式安装的基础上,我们增加对core-site.xml、hdfs-site.xml、mapred-site.xml核心文件的配置步骤。
开发环境硬件环境:CentOS 6.5 服务器4台(一台为Master节点,三台为Slave节点)
软件环境:Java 1.7.0_45、hadoop-1.2.1
1)配置core-site.xml
修改Hadoop核心配置文件/usr/hadoop/conf/core-site.xml,通过fs.default.name指定 NameNode 的 IP 地址和端口号,通过hadoop.tmp.dir指定hadoop数据存储的临时文件夹。
[hadoop@K-Master hadoop] vi conf/core-site.xml <configuration> <property> <name>fs.default.name</name> <value>hdfs://K-Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/tmp</value> </property> </configuration>特别注意:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。
2)配置hdfs-site.xml
修改HDFS核心配置文件/usr/hadoop/conf/hdfs-site.xml,通过dfs.replication指定HDFS的备份因子为1,通过dfs.name.dir指定namenode节点的文件存储目录,通过dfs.data.dir指定datanode节点的文件存储目录。
[hadoop@K-Master hadoop] vi conf/hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>/usr/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/hadoop/hdfs/data</value> </property> </configuration>2)配置mapred-site.xml
修改MapReduce核心配置文件/usr/hadoop/conf/mapred-site.xml,通过mapred.job.tracker属性指定JobTracker的地址和端口。
[hadoop@K-Master hadoop] vi conf/mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>:9001</value> </property> </configuration> 2、 格式化HDFS文件系统格式化HDFS文件系统需要在namenode节点上通过hadoop用户执行,而且只需要执行一次,下次启动时不需要再格式化,直接启动HDFS文件管理系统和MapReduce服务即可。
[hadoop@K-Master ~]$ hadoop namenode -format 14/07/24 16:37:57 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = K-Master/192.168.100.147 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.2.1 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013 STARTUP_MSG: java = 1.7.0_65 ********************a****************************************/ 14/07/24 16:37:57 INFO util.GSet: Computing capacity for map BlocksMap 14/07/24 16:37:57 INFO util.GSet: VM type = 64-bit 14/07/24 16:37:57 INFO util.GSet: 2.0% max memory = 932184064 14/07/24 16:37:57 INFO util.GSet: capacity = 2^21 = 2097152 entries 14/07/24 16:37:57 INFO util.GSet: recommended=2097152, actual=2097152 14/07/24 16:37:58 INFO namenode.FSNamesystem: fsOwner=hadoop 14/07/24 16:37:58 INFO namenode.FSNamesystem: supergroup=supergroup 14/07/24 16:37:58 INFO namenode.FSNamesystem: isPermissionEnabled=true 14/07/24 16:37:58 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100 14/07/24 16:37:58 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) 14/07/24 16:37:58 INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0 14/07/24 16:37:58 INFO namenode.NameNode: Caching file names occuring more than 10 times 14/07/24 16:37:58 INFO common.Storage: Image file /usr/hadoop/hdfs/name/current/fsimage of size 112 bytes saved in 0 seconds. 14/07/24 16:37:59 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/usr/hadoop/hdfs/name/current/edits 14/07/24 16:37:59 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/usr/hadoop/hdfs/name/current/edits 14/07/24 16:37:59 INFO common.Storage: Storage directory /usr/hadoop/hdfs/name has been successfully formatted. 14/07/24 16:37:59 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at K-Master/192.168.100.147 ************************************************************/ 3、 启动HDFS文件管理系统1)通过start-dfs.sh命令启动HDFS文件管理系统,启动后通过如下日志信息可以看到在K-Master服务器上分别启动了namenode、datanode和secondarynamenode。
[hadoop@K-Master ~]$ start-dfs.sh starting namenode, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-namenode-K-Master.out K-Master: starting datanode, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-datanode- K-Master.out K-Master: starting secondarynamenode, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-secondarynamenode-K-Master.out2)在K-Master节点上查看启动进程
若打印如下日志信息,表明K-Master服务器上启动了NameNode、SecondaryNameNode2、DataNode服务进程,即K-Master服务器上HDFS文件管理系统启动成功。
[hadoop@K-Master ~]$ jps 6164 Jps 5971 NameNode 6108 SecondaryNameNode 1265 DataNode 4、 启动MapReduce1)通过start-mapred.sh命令启动MapReduce分布式计算服务,启动后通过以下日志信息可以看到在K-Master服务器上启动了jobtracker、tasktracker进程。
[hadoop@K-Master ~]$ start-mapred.sh starting jobtracker, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-jobtracker-K-Master.out K-Master: starting tasktracker, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-tasktracker- K-Master.out2)K-Master节点上查看启动进程
若打印如下日志信息,表明K-Master服务器上新启动了JobTracker、TaskTracker服务进程,即K-Master服务器上MapReduce启动成功。
[hadoop@K-Master ~]$ jps 1342 NameNode 1726 Jps 1619 JobTracker 1480 SecondaryNameNode 1549 TaskTracker 1265 DataNode完成上述4步,表明我们成功的完成了Hadoop伪分布式环境的部署,伪分布式模式也叫单节点集群模式,所有的守护进程都运行在同一台机器上,上述实验也证明了这一点,NameNode、SecondaryNameNode、DataNode、JobTracker、TaskTracker所有的守护进程全部运行在K-Master节点之上。