目标
本文档描述怎样安装和配置一个单节点的Hadoop,让你最快的使用MapReduce和HDFS来进行一些简单的操作。
需求
平台支持
- GNU/Linux可以用作开发和正式平台,Hadoop在GNU/Linux平台集群2000个节点已经被证实是可行的。
- windows平台也是支持的,不过下面文档中的步骤都是在Linux上的,如果要在windows上安装Hadoop,请查看wiki page
软件支持
linux平台上的软件
- java必须安装,推荐的版本请查看Hadoop java versions
- ssh必须安装并且使用Hadoop脚本执行sshd来管理远程Hadoop实例。
安装软件
如果你没有这些需求的软件,那么你需要安装他们,在Ubuntu Linux上实例如下:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
下载
从Apache Download Mirrors下载一个当前稳定的Hadoop版本.
准备启动Hadoop集群
解压已下载的Hadoop压缩包,然后编辑文件etc/hadoop/hadoop-env.sh,定义一些参数,如下:
export JAVA_HOME=/usr/java/latest
输入下面命令:
$ bin/hadoop
这个命令会展示出一些有用帮助说明,可以使用这些命令来操作hadoop。命令如下:
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
CLASSNAME run the class named CLASSNAME
or
where COMMAND is one of:
fs run a generic filesystem user client
version print the version
jar <jar> run a jar file
note: please use "yarn jar" to launch
YARN applications, not this command.
checknative [-a|-h] check native hadoop and compression libraries availability
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath prints the class path needed to get the
credential interact with credential providers
Hadoop jar and the required libraries
daemonlog get/set the log level for each daemon
trace view and modify Hadoop tracing settings
现在万事俱备,只欠东风,你可以开始你的Hadoop集群了。
单节点模式
默认的Hadoop配置运行在非分布式模式,运行在一个java进程下,这对于开发调试来说是有用的。
下面的例子拷贝一些xml文件到input目录下,从这些文件中找到并输出符合给定正则表达式的结果,结果输出到output目录中。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar grep input output 'dfs[a-z.]+'
$ cat output/*
伪分布模式
Hadoop也可以运行一个伪分布模式在单个节点上,每个Hadoop实例运行一个java进程。
配置
配置下面的文件:
etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
安装不需要密码验证的ssh
现在检查是否不需要密码就可以使用ssh访问localhost。
$ ssh localhost
如果提示你需要输入密码了,那么你需要执行下面的命令:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
启动
下面的实例在本地运行MapReduce任务,如果你想运行在YARN,下面在介绍。
1:格式化文件系统
$ bin/hdfs namenode -format
2:启动NameNode和DataNode
$ sbin/start-dfs.sh
hadoop日志输出在$HADOOP_LOG_DIR 目录中,默认就是安装目录下的logs目录中。
3:浏览NameNode的web接口
打开浏览器,输出http://localhost:50070/。
4:使HDFS目录可执行MapReduce任务
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
5:复制input文件到HDFS中
$ bin/hdfs dfs -put etc/hadoop input
6:执行提供好的实例
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar grep input output 'dfs[a-z.]+'
7:查看输出文件
先把HDFS中的结果复制到本地文件系统中然后查看。
$ bin/hdfs dfs -get output output
$ cat output/*
当然你也可以直接在HDFS中查看。
$ bin/hdfs dfs -cat output/*
8:停止
$ sbin/stop-dfs.sh
YARN
你可以使用YARN来运行伪分布模式,通过设置几个参数,启动ResourceManager进程和NodeManager 进程。
假设上面的1-4步骤已经执行完成。
5:配置文件
etc/hadoop/mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
etc/hadoop/yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6:启动ResourceManager 和NodeManager
$ sbin/start-yarn.sh
7:浏览ResourceManager的web接口
http://localhost:8088/
8:执行MapReduce任务
参考上面的6-7步骤
9:停止
$ sbin/stop-yarn.sh