以伪分布式模式安装Hadoop
在本文中,我们将介绍如何以伪分布式模式(单节点集群)安装Hadoop。通过此处给出的Hadoop安装步骤,我们将安装Hadoop common,HDFS,MapReduce和YARN。
Hadoop release used for installation is Hadoop 2.9.0 and it is installed on Ubuntu 16.04.
Hadoop中的模式
这里给出了以伪分布式模式安装Hadoop的步骤,但是还有其他模式。 Hadoop可以以下任何一种模式运行。
- 本地(独立)模式–默认情况下,Hadoop配置为以非分布式模式运行。在这种模式下,没有守护程序在运行,并且Hadoop作为单个Java进程运行。此模式易于设置,对调试很有用。
- 伪分布式模式–我们还可以以伪分布式模式在单个节点上运行Hadoop。在这种模式下,所有守护程序都在单独的Java进程中运行。由于所有守护程序都在本地运行,因此伪分布式模式可以在较小程度上模拟集群。
- 完全分布式模式–在这种模式下,Hadoop在计算机集群上运行。群集的范围从几个节点到具有数千个节点的超大型群集。
Hadoop安装的前提条件
- 必须安装Java,要检查Java版本,请参阅https://wiki.apache.org/hadoop/HadoopJavaVersions
- 必须安装ssh并且sshd必须正在运行。
Hadoop安装步骤
我们必须执行以下步骤才能安装伪分布式Hadoop。
- 确保已安装Java。
- 下载Hadoop tarball。
- 安装和配置SSH。
- 配置XML文件。
- 格式化HDFS文件系统。
在单个节点上安装Hadoop
现在,我们按照步骤进行操作,并进行必要的更改和配置,以便以伪分布式模式安装Hadoop。
1确保已安装Java
Hadoop需要安装Java。如果不确定是否已安装Java,请使用java -version命令进行检查。如果输出是已安装的Java的版本,则我们已经安装了Java。
2下载Hadoop
从此处下载Hadoop的稳定版本– http://hadoop.apache.org/releases.html
我们可以从给定位置下载二进制压缩包。
现在,我们可以决定要为Hadoop创建新用户还是要使用现有用户帐户。我使用现有的用户帐户只是为Hadoop文件创建目录。
创建目录
我们可以使用以下命令创建新目录/ usr / hadoop。我们可以在其中保留Hadoop安装文件。
移动和解压缩文件
默认情况下,Hadoop tarball将下载到Downloads目录中,然后从该目录移动到/ usr / hadoop并解压缩安装文件。
要解压缩压缩后的tar文件,请运行以下命令。
cd /usr/hadoop tar zxvf hadoop-2.9.0.tar.gz
此时,我们应该在/ usr / hadoop位置有一个目录hadoop-x.x.x(我使用的tar球为hadoop-2.9.0)。
设定路径
Hadoop需要知道它必须使用哪种Java安装,然后通过编辑文件etc / hadoop / hadoop-env.sh来定义JAVA_HOME参数,如下所示。
export JAVA_HOME=/usr/java/jdk1.8.0_151
我们还可以创建一个环境变量以指向Hadoop安装。我们可以将其命名为HADOOP_HOME。还将bin和sbin目录添加到PATH。运行以下命令以打开环境文件。
sudo gedit /etc/environment
然后将以下内容添加到已经存在的PATH变量中
:/usr/hadoop/hadoop-2.9.0/bin:/usr/hadoop/hadoop-2.9.0/sbin
并在末尾添加HADOOP_HOME环境变量–
HADOOP_HOME="/usr/hadoop/hadoop-2.9.0"
请确保根据Hadoop安装目录更改路径。
用于运行守护程序的脚本(start-dfs.sh和start-yarn.sh)位于sbin目录中,通过将其添加到PATH,我们可以从任何位置执行这些脚本,而无需每次都进入$ HADOOP_HOME / sbin需要启动守护程序。
运行以下命令以重新加载环境。
source /etc/environment
我更喜欢将它们添加到/ etc / environment中,如果我们愿意,也可以将它们添加到〜/ .bashrc文件中–
export HADOOP_HOME=/usr/hadoop/hadoop-2.9.0 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
只是为了确保到目前为止一切都很好,我们可以运行Hadoop版本命令。我们应该获得与此处给出的输出类似的输出。
3-安装和配置SSH
即使在伪分布式模式下,Hadoop也将连接到主机并在那里启动守护进程。尽管在伪分布式模式下,主机始终是localhost。为此,它将使用ssh命令来连接到远程主机。因此,我们需要确保Hadoop可以ssh到localhost并在不输入密码的情况下进行连接。
要安装ssh,请运行以下命令–
现在,要确保登录到主机时不需要密码,请生成带有空密码的SSH密钥。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
将生成的SSH密钥添加到授权密钥列表中。
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
立即尝试ssh到localhost,不应该要求我们输入密码。
4配置XML文件
我们将需要更改Hadoop安装中/ etc / hadoop目录中放置的配置文件。
coresite.xml
<property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/tmp</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
这里hadoop.tmp.dir是tmp目录的路径。根据用户帐户特权,我们可能需要自己创建指定的目录,并使用chmod命令为其授予读写权限。
hdfs-site.xml
在<configuration> </ configuration>标记之间添加以下内容。当我们具有单节点群集时,这会将复制因子更改为1.
<property> <name>dfs.replication</name> <value>1</value> </property>
mapred-site.xml
由于我们将使用YARN运行MapReduce作业,因此需要在<configuration> </ configuration>标记之间添加以下内容。
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
yarn-site.xml
在<configuration> </ configuration>标记之间添加以下内容。
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
5格式化HDFS文件系统
我们还需要先格式化文件系统,然后才能使用HDFS。
为此运行以下命令-
hdfs namenode -format
6启动守护程序
运行sbin / start-dfs.sh以启动NameNode守护程序,次要NameNode守护程序和DataNode守护程序:
theitroad:sbin$ start-dfs.sh
运行sbin / start-yarn.sh以启动ResourceManager守护程序和NodeManager守护程序。
theitroad:sbin$ start-yarn.sh
我们可以使用start-all.sh脚本通过一个脚本启动所有守护程序,但是不建议使用此脚本。
我们可以使用jps命令来验证所有守护程序是否正在运行。
theitroad:sbin$ jps 14370 NodeManager 14020 SecondaryNameNode 13655 NameNode 13817 DataNode 14234 ResourceManager 14698 Jps
我们应该获得给定的5个守护程序,它们作为Java进程运行。
要编写第一个MapReduce程序,请参考Hadoop中使用MapReduce的字数统计程序
浏览Web界面以查找NameNode;默认情况下,它可用于
- NameNode – http:// localhost:50070 /
浏览Web界面以找到ResourceManager;默认情况下,它可用于-
- ResourceManager – http:// localhost:8088 /
停止守护程序
我们可以使用stop-dfs.sh和stop-yarn.sh脚本来停止正在运行的守护程序。还有一个stop-all.sh脚本,可以使用一个脚本停止所有守护程序,但是不建议使用此脚本。