如何在Debian 9上以独立模式安装Hadoop

在本教程中,您将在Debian 9服务器上以独立模式安装Hadoop。您还将运行一个示例MapReduce程序来搜索文本文件中正则表达式的出现。

介绍

Hadoop是一个基于Java的编程框架,支持在廉价机器集群上处理和存储极大数据集。 它是大数据竞争领域的第一个主要开源项目,由Apache Software Foundation赞助。

Hadoop由四个主要层组成:

  • Hadoop Common是支持其他Hadoop模块的实用程序和库的集合。
  • HDFS代表Hadoop分布式文件系统,负责将数据保存到磁盘。
  • YARN是Yet Another Resource Negotiator的缩写,是HDFS的“操作系统”。
  • MapReduce是Hadoop集群的原始处理模型。 它在集群或映射中分配工作,然后将节点的结果组织并减少为对查询的响应。 许多其他处理模型可用于3.x版本的Hadoop。

Hadoop集群的设置相对复杂,因此该项目包含一个独立模式,适用于学习Hadoop,执行简单操作和调试。

在本教程中,您将以独立模式安装Hadoop并运行其中包含的示例示例MapReduce程序之一来验证安装。

在开始之前,您可能还想看看“ 大数据概念和术语 简介”“Hadoop简介”

先决条件

要学习本教程,您需要:

第1步 - 安装Hadoop

要安装Hadoop,请首先访问Apache Hadoop Releases页面以查找最新的稳定版本。

导航到您要安装的发行版的二进制文件 在本指南中,我们将安装Hadoop 3.0.3。

Hadoop发布页面的屏幕截图,突出显示最新稳定二进制文件的链接

在下一页上,右键单击并将链接复制到发布二进制文件。

Hadoop镜像页面的屏幕截图

在您的服务器上,使用wget获取它:

wget http://www-us.apache.org/dist/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz

注意: Apache网站将动态引导您访问最佳镜像,因此您的URL可能与上面的URL不匹配。

为了确保您下载的文件没有被更改,请使用SHA-256进行快速检查。 返回版本页面 ,然后右键单击并将链接复制到您下载的发布二进制文件的校验和文件:

突出显示.mds文件的屏幕截图

再次,在您的服务器上使用wget下载文件:

wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz.mds

然后运行验证:

sha256sum hadoop-3.0.3.tar.gz
db96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a  hadoop-3.0.3.tar.gz

将此值与.mds文件中的SHA-256值进行.mds

cat hadoop-3.0.3.tar.gz.mds | grep SHA256
〜/ Hadoop的3.0.3.tar.gz.mds
...
SHA256 = DB96E2C0 D0D5352D 8984892D FAC4E27C 0E682D98 A497B7E0 4EE97C3E 2019277A

您可以放心地忽略大小写和空格的区别。 您针对我们从镜像下载的文件运行的命令输出应与您从apache.org下载的文件中的值相匹配。

既然您已经验证文件没有损坏或更改,请使用带-x标志的tar命令解压缩, -z解压缩, -v用于详细输出, -f指定您正在解压缩从文件归档。 使用tab-completion或在下面的命令中替换正确的版本号:

tar -xzvf hadoop-3.0.3.tar.gz

最后,将提取的文件移动到/usr/local ,这是本地安装软件的适当位置。 如果需要,请更改版本号以匹配您下载的版本。

sudo mv hadoop-3.0.3 /usr/local/hadoop

有了这个软件,我们就可以配置它的环境了。

第3步 - 运行Hadoop

让我们确保Hadoop运行。 执行以下命令以启动Hadoop并显示其帮助选项:

/usr/local/hadoop/bin/hadoop

您将看到以下输出,它可以让您知道您已成功配置Hadoop以在独立模式下运行。

Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
  where CLASSNAME is a user-provided Java class

  OPTIONS is none or any of:

--config dir                     Hadoop config directory
--debug                          turn on shell script debug mode
--help                           usage information
buildpaths                       attempt to add class files from build tree
hostnames list[,of,host,names]   hosts to use in slave mode
hosts filename                   list of hosts to use in slave mode
loglevel level                   set the log4j level for this command
workers                          turn on worker mode

  SUBCOMMAND is one of:
. . .

我们将通过运行它附带的示例MapReduce程序来确保它正常运行。 为此,在主目录中创建一个名为input目录,并将Hadoop的配置文件复制到其中,以将这些文件用作我们的数据。

mkdir ~/input
cp /usr/local/hadoop/etc/hadoop/*.xml ~/input

接下来,我们将运行MapReduce hadoop-mapreduce-examples程序,这是一个包含多个选项的Java归档文件。 我们将调用它的grep程序,这是hadoop-mapreduce-examples包含的众多示例之一,后面是输入目录, input和输出目录grep_example MapReduce grep程序将计算文字或正则表达式的匹配。 最后,我们将提供正则表达式allowed[.]*来查找声明性句子内或结尾处allowed的单词的出现。 表达式区分大小写,因此如果在句子开头大写,我们就找不到该单词。

执行以下命令:

/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep ~/input ~/grep_example 'allowed[.]*'

任务完成后,它会提供已处理内容和遇到的错误的摘要,但这不包含实际结果:

 . . .
        File System Counters
        FILE: Number of bytes read=1330690
        FILE: Number of bytes written=3128841
        FILE: Number of read operations=0
        FILE: Number of large read operations=0
        FILE: Number of write operations=0
    Map-Reduce Framework
        Map input records=2
        Map output records=2
        Map output bytes=33
        Map output materialized bytes=43
        Input split bytes=115
        Combine input records=0
        Combine output records=0
        Reduce input groups=2
        Reduce shuffle bytes=43
        Reduce input records=2
        Reduce output records=2
        Spilled Records=4
        Shuffled Maps =1
        Failed Shuffles=0
        Merged Map outputs=1
        GC time elapsed (ms)=3
        Total committed heap usage (bytes)=478150656
    Shuffle Errors
        BAD_ID=0
        CONNECTION=0
        IO_ERROR=0
        WRONG_LENGTH=0
        WRONG_MAP=0
        WRONG_REDUCE=0
    File Input Format Counters
        Bytes Read=147
    File Output Format Counters
        Bytes Written=34

结果存储在~/grep_example目录中。

如果此输出目录已存在,程序将失败,而不是看到摘要,您将看到如下内容:

 . . .
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:244)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:158)

通过在输出目录上运行cat来检查结果:

cat ~/grep_example/*

你会看到这个输出:

19  allowed.
1   allowed

MapReduce任务发现了19个出现的单词,后跟一个句点,一个出现在不出现的位置。 运行示例程序已验证我们的独立安装正常运行,并且系统上的非特权用户可以运行Hadoop进行探索或调试。

结论

在本教程中,我们以独立模式安装了Hadoop,并通过运行它提供的示例程序对其进行了验证。 要了解如何编写自己的MapReduce程序,请访问Apache Hadoop的MapReduce教程 ,该教程将介绍您在本教程中使用的示例背后的代码。 准备好设置集群时,请参阅Apache Foundation Hadoop集群设置指南。