如何在Debian9上以单机模式安装Hadoop

来自菜鸟教程
跳转至:导航、​搜索

介绍

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

Hadoop由四个主要层组成:

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

Hadoop集群搭建起来比较复杂,所以项目包含一个单机模式,适合学习Hadoop、进行简单操作和调试。

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

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

先决条件

要遵循本教程,您将需要:

第 1 步 — 安装 Hadoop

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

导航到您要安装的版本的 binary。 在本指南中,我们将安装 Hadoop 3.0.3。

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

在您的服务器上,使用 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 进行快速检查。 返回 发布页面 ,然后右键单击并将链接复制到您下载的发布二进制文件的校验和文件:

同样,在您的服务器上使用 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
Outputdb96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a  hadoop-3.0.3.tar.gz

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

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 解压缩,[ X159X] 用于详细输出,-f 用于指定您正在从文件中提取存档。 使用制表符补全或在以下命令中替换正确的版本号:

tar -xzvf hadoop-3.0.3.tar.gz

最后,将解压后的文件移动到/usr/local,适合本地安装软件的地方。 如果需要,更改版本号以匹配您下载的版本。

sudo mv hadoop-3.0.3 /usr/local/hadoop

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

第 2 步 — 运行 Hadoop

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

/usr/local/hadoop/bin/hadoop

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

OutputUsage: 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[.]*'

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

Output . . .
        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 目录中。

如果这个输出目录已经存在,程序将会失败,你会看到如下内容,而不是看到摘要:

Output . . .
    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/*

你会看到这个输出:

Output19  allowed.
1   allowed

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

结论

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