1、Hadoop:设置单节点集群
1.1、目的
本文档介绍了如何安装和配置单节点Hadoop,使您可以快速地使用Hadoop MapReduce和HDFS进行简单的操作。
1.2、先决条件
1.2.1、支持的平台
- GNU/Linux支持作为开发和生产平台。Hadoop已经在拥有2000个节点的GNU/Linux集群上进行了演示。
- Windows也是一个受支持的平台,但下面的步骤仅适用于Linux。要在Windows上设置Hadoop,请参阅wiki页面
1.2.2、所需软件
Linux操作系统所需软件包括:
- 必须安装Java™。推荐的Java版本在hadoopjavaverversions中有描述。
- 如果要使用可选的启动和停止脚本,必须安装ssh并运行sshd来使用管理远程Hadoop守护进程的Hadoop脚本。此外,还建议安装pdsh,以便更好地进行ssh资源管理。
1.2.3、安装软件
如果您的集群没有必要的软件,那么您将需要安装它。
例如在Ubuntu Linux上:
$ sudo apt-get install ssh
$ sudo apt-get install pdsh
1.3、下载
要获得Hadoop发行版,请从Apache下载镜像下载一个最近的稳定发行版。
1.4、准备启动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集群了:
- 本地(独立)模式
- 伪分布模式
- 全分布模式
1.5、单机操作
默认情况下,Hadoop被配置为以非分布式模式运行,即作为单个Java进程。这对调试很有用。
下面的示例将unpacked conf目录复制为输入,然后查找并显示给定正则表达式的每个匹配项。输出被写入给定的输出目录。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output 'dfs[a-z.]+'
$ cat output/*
1.6、伪分布操作
Hadoop还可以以伪分布式模式运行在单节点上,其中每个Hadoop守护进程运行在单独的Java进程中。
1.6.1、配置
使用以下:
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>
1.6.2、设置免密登录
现在检查你是否可以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
1.6.3、执行
以下说明是在本地运行MapReduce作业。如果你想在YARN上执行一个作业,请参阅Single Node上的YARN。
- 格式化文件系统:
$ bin/hdfs namenode -format
- 启动NameNode和DataNode守护进程:
$ sbin/start-dfs.sh
浏览网页界面的NameNode;默认情况下,它在以下地方可用:
NameNode - http://localhost:9870/制作执行MapReduce任务所需的HDFS目录:
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
- 将输入文件复制到分布式文件系统中:
$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input
- 运行所提供的一些示例:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output 'dfs[a-z.]+'
- 检查输出文件:将输出文件从分布式文件系统复制到本地文件系统并检查它们:
$ bin/hdfs dfs -get output output
$ cat output/*
或
查看分布式文件系统上的输出文件:
$ bin/hdfs dfs -cat output/*
- 当你完成时,停止守护进程:
$ sbin/stop-dfs.sh
1.6.4、单节点上的YARN
通过设置一些参数,再运行ResourceManager守护进程和NodeManager守护进程,可以在YARN上以伪分布式模式运行MapReduce作业。
下面的说明假设1.~ 4.上述指令的步骤已经执行。
- 配置参数如下:
etc/hadoop/mapred-site.xml
:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
etc/hadoop/yarn-site.xml
:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
- 启动ResourceManager和NodeManager守护进程:
$ sbin/start-yarn.sh
浏览ResourceManager的web界面;默认情况下,它在以下地方可用:
ResourceManager http://localhost:8088运行MapReduce作业。
当你完成时,停止守护进程:
$ sbin/stop-yarn.sh
1.7、全分布操作
有关设置完全分布的、重要的集群的信息,请参见集群设置。