一、hadoop - 创建单个节点集群
这篇文档描述了如何创建和配置一个单一节点的hadoop,于是你可以很快地利用Hadoop的MapReduce和Hadoop的分布式文件系统(HDFS,Hadoop Distributed File System)做一些简单的操作。
支持的平台
- GNU/Linux 作为开发和生产平台都是支持的。hadoop在GNU/Linux上已经发布了2000个节点。
- Windows也是一个支持的平台,但是接下来的步骤都只对于Linux平台。
需要的软件
Linux需要的软件包括:
- Java平台是必须安装的。
- ssh必须安装,并且sshd必须运行,因为要利用它来运行Hadoop的脚本从而管理远程hadoop守护进程
安装软件
如果你的集群没有这些软件,你就需要去安装它们。
比如,在Ubuntu Linux上:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
可以从Apache官方维护镜像文件来下载最新的稳定的Hadoop发布版本。
将下载的hadoop进行解压。编辑文件/etc/hadoop/hadoop-env.sh来定义如下一些属性:
#设置你的Java安装根目录
export JAVA_HOME=/usr/java/latest
#假设你的Hadoop安装目录为/usr/local/hadoop
export HADOOP_PREFIX=/usr/local/hadoop
尝试如下命令:
$ bin/hadoop
现在,我们既可以以下面的一种模式来开始我们的Hadoop集群:
默认情况下,Hadoop是以非分布式模式进行配置的,即一个Java进程。这种情形对于debug是非常有用的。
下面的例子将解压目录下的conf目录作为输入,然后找到并展示符合正则表达式的匹配串。输出是写入到一个output的目录。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.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
如果你不能没有密码连通localhost主机,那么执行下面的命令:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
执行
下面的指令是本地运行一个MapReduce作业。
1、格式化文件系统:
$ bin/hdfs namenode -format
2、开始NameNode守护进程和DataNode守护进程:
$ sbin/start-dfs.sh
Hadoop守护进程的日志信将会输入到$HADOOP_LOG_DIR目录下(默认为$HADOOP_HOME/logs)
3、根据web接口来浏览NameNode,默认是:
NameNode - http://localhost:50070/
4、创建HDFS目录来执行MapReduce作业:
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
5、将input文件拷贝到分布式文件系统中:
$ bin/hdfds dfs -put etc/hadoop input
6、运行提供的一些例子:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
7、检查输出文件
将输出文件从分布式文件系统中拷贝到本地文件系统,并且检查它们:
$ bin/hdfs dfs -get output output
$ cat output/*
或者
在分布式文件系统中浏览:
$ bin/hdfs dfs -cat output/*
8、当你做完你所做的后,就可以停止守护进程:
$ sbin/stop-dfs.sh
YARN在单个节点
你能够通过设置一些参数以伪分布式模式将MapReduce作业运行在YARN上,并且运行ResourceManager守护进程和NodeManager守护进程。
下面的指令是假设你已经完成了上面指令的1~4:
1、配置参数如下:
etc/hadoop/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
etc/hadoo/yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
2、运行ResourceManager守护进程和NodeManager守护进程:
$ sbin/start-yarn.sh
3、在web接口当中浏览ResourceManager,默认是在:
ResourceManager - http://localhost:8088/
4、运行MapReduce作业
5、当你完成你所做的,就可以停止守护进程:
$ sbin/stop-yarn.sh
关于完全分布式的相关信息,可以参考“集群创建”。