Hadoop的安装有三种运行模式:
这里的准备工作可以查看Hadoop单机模式部署准备工作。
总结一下就是:
修改$HADOOP_HOME/etc/hadoop/core-site.xml
文件。在默认情况下,这个文件为空,没有任何配置,这里需要指定NameNode
的ip和端口(默认端口是8020)。
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.134:9000</value> </property> </configuration>
192.168.1.134是我的本机地址,可以写localhost或127.0.0.1。但是如果需要Eclipse远程调用Hadoop的时候,需要些具体的ip地址,否则调不通。
HDFS是分布式文件系统,为了安全性考虑,会将上传至HDFS的文件的每个分块拷贝到N个节点上,即复制N次(这里的N成为复制因子)。这里将复制因子改为1。
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
经过上面的最小配置后,Hadoop已经可以启动伪分布式模式了。
第一次运行Hadoop的时候需要格式化其文件系统:
$ bin/hdfs namenode -format
如果成功,会打印:
。。。 14/10/14 19:09:05 INFO common.Storage: Storage directory /tmp/hadoop-lxh/dfs/name has been successfully formatted. 。。。
直接通过Hadoop提供的脚本start-dfs.sh
即可:
$ sbin/start-dfs.sh
启动日志保存在$HADOOPLOGDIR目录中(默认是$HADOOP_HOME/logs)。
可以通过jps
查看已经启动的进程:
31536 SecondaryNameNode 31381 DataNode 31254 NameNode 31643 Jps
说明DataNode
、NameNode
、SecondaryNameNode
已经启动成功。
通过默认的NameNode的web接口http://localhost:50070/,可以查看NameNode收集的信息,相当于关于Hadoop提供的一个信息查询系统。
执行官网提供的验证程序。
$ hdfs dfs -mkdir /input $ hdfs dfs -put $HADOOP_HOME/etc/hadoop/* /input $ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar grep /input /output 'dfs[a-z.]+' $ hdfs dfs -cat /output/*
最后一条命令是显示最后的执行结果:
6 dfs.audit.logger 4 dfs.class 3 dfs.server.namenode. 2 dfs.period 2 dfs.audit.log.maxfilesize 2 dfs.audit.log.maxbackupindex 1 dfsmetrics.log 1 dfsadmin 1 dfs.servers 1 dfs.replication 1 dfs.file
伪分布式模式中的第一个Hello World执行成功后,可以关闭进程了。
$ stop-dfs.sh
通过配置一些参数,并启动ResourceManager守护进程和NodeManager守护进程,可以在伪分布式模式中,在YARN
上运行MapReduce任务。
上面的最小配置不变。
在默认的Hadoop安装包中,没有mapred-site.xml文件,可以复制mapred-site.xml.template,并修改,指定在YARN中运行MapReduce任务:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
指明需要向MapReduce应用提供的Shuffle服务。
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
可以通过start-yarn.sh
启动ResourceManager守护进程和NodeManager守护进程,通过stop-yarn.sh
停止。
Hadoop默认将HDFS文件系统写在/tmp/hadoop-中,因为系统重启会清理/tmp目录,所以需要保证重启系统不丢失数据,需要修改默认数据保存位置。
<property> <name>hadoop.tmp.dir</name> <value>file:/home/lxh/hadoop/tmp/hadoop</value> </property>
<property> <name>dfs.namenode.name.dir</name> <value>file:/home/lxh/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/lxh/hadoop/hdfs/data</value> </property>