以伪分布式模式安装Hadoop

时间:2020-01-09 10:34:30  来源:igfitidea点击:

在本文中,我们将介绍如何以伪分布式模式(单节点集群)安装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脚本,可以使用一个脚本停止所有守护程序,但是不建议使用此脚本。