翻译: http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
版本: 2.9.0
- 目标
- 先决条件
- 支持的平台
- 所需软件
- 安装软件
- 下载
- 准备启动Hadoop集群
- 独立模式
- 伪分布式
- 配置
- 设置passphraseless ssh
- 执行
- 单个节点YARN
- 全分布式
目的
本文档介绍如何搭建单节点Hadoop,以便您可以使用Hadoop MapReduce和Hadoop分布式文件系统(HDFS)快速执行简单的操作。
先决条件
支持的平台
支持GNU / Linux作为开发和生产平台。Hadoop已经在具有2000个节点的GNU / Linux集群上进行了演示。
Windows也是一个支持的平台,但以下步骤仅适用于Linux。要在Windows上设置Hadoop,请参阅Wiki页面。
所需软件
所需的Linux软件包括:
Java™必须安装。推荐的Java版本在HadoopJavaVersions中描述。
必须安装ssh,并且必须运行sshd,才能使用Hadoop脚本管理远程Hadoop守护程序。
安装软件
如果你的集群没有必要的软件,你需要安装它。
例如在Ubuntu Linux上:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
下载
要获得Hadoop发行版,请从其中一个Apache下载镜像下载最新的稳定版本。
准备启动Hadoop集群
解压下载的Hadoop发行版。在发行版中,编辑文件 etc/hadoop/hadoop-env.sh 来定义一些参数,如下所示:
# set to the root of your Java installation
export JAVA_HOME=/usr/java/latest
尝试以下命令:
$ bin/hadoop
这将显示hadoop脚本的使用文档。
现在可以以三种支持模式之一启动Hadoop集群:
- 本地(独立)模式
- 伪分布式模式
- 完全分布式模式
独立模式下的操作
默认情况下,Hadoop被配置为以非分布模式运行,作为单个Java进程。这对调试很有用。
以下示例将解压后的conf目录复制为输入,然后查找并显示给定正则表达式的每个匹配项。输出写入给定的输出目录。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar grep input output 'dfs[a-z.]+'
$ cat output/*
伪分布式操作
Hadoop也可以在单节点上以伪分布模式运行,其中每个Hadoop守护进程都在单独的Java进程中运行。
配置
在etc/hadoop/core-site.xml 中配置以下内容:
fs.defaultFS
hdfs://localhost:9000
在etc/hadoop/hdfs-site.xml中配置 :
dfs.replication
1
设置passphraseless ssh
现在检查是否可以在没有密码的情况下ssh到本地主机:
$ ssh localhost
如果您不能在没有密码的情况下ssh到本地主机,请执行以下命令:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
执行
以下说明是在本地运行MapReduce作业。如果要在YARN上执行作业,请参阅单节点上的YARN 。
- 格式化文件系统:
$ bin/hdfs namenode -format
- 启动NameNode守护进程和DataNode守护进程:
$ sbin/start-dfs.sh
hadoop守护进程日志输出被写入 $HADOOP_LOG_DIR 目录(默认为 $HADOOP_HOME/logs)。
-
浏览NameNode的Web界面; 默认情况下它可用于:
- NameNode - http://localhost:50070/
制作执行MapReduce作业所需的HDFS目录:
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/
- 将输入文件复制到分布式文件系统中:
$ bin/hdfs dfs -put etc/hadoop input
- 运行一些提供的例子:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar grep input output 'dfs[a-z.]+'
- 检查输出文件:将输出文件从分布式文件系统复制到本地文件系统并检查它们:
$ bin/hdfs dfs -get output output
$ cat output/*
或者 查看分布式文件系统上的输出文件:
$ bin/hdfs dfs -cat output/*
- 当你完成后,停止守护进程:
$ sbin/stop-dfs.sh
YARN在单个节点上
在伪分布模式下,可以在YARN上运行MapReduce作业 ,只需要配置几个参数并运行ResourceManager守护进程和NodeManager守护进程。
在已经执行了上述指令的情况下,执行如下 1〜4个步骤。
- 配置参数如下:etc/hadoop/mapred-site.xml:
mapreduce.framework.name
yarn
etc/hadoop/yarn-site.xml:
yarn.nodemanager.aux-services
mapreduce_shuffle
- 启动ResourceManager守护进程和NodeManager守护进程:
$ sbin/start-yarn.sh
-
浏览ResourceManager的Web界面; 默认情况下它可用于:
- ResourceManager - http://localhost:8088/
运行MapReduce作业。
当你完成后,停止守护进程:
$ sbin/stop-yarn.sh
全分布式操作
有关设置完全分布式集群的信息,请参阅集群设置。