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

介绍

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

Hadoop 由四个主要层组成:

  • Hadoop Common 是支持其他 Hadoop 模块的实用程序和库的集合。
  • HDFS ,即Hadoop 分布式文件系统,负责将数据存储到磁盘上。
  • YARN ,简称 Yet Another Resource Negotiator,是 HDFS 的操作系统
  • MapReduce 是 Hadoop 集群的原始处理模型。

Hadoop 集群是相对复杂的设置,所以该项目包括一个独立的模式,适合学习有关 Hadoop,执行简单操作和调试。

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

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

前提条件

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

第1步:安装Hadoop

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

在此指南中,我们将安装 Hadoop 3.0.3.

Screenshot of the Hadoop releases page highlighting the link to the latest stable binary

在下一页上,右键单击并复制释放二进制的链接。

Screenshot of the Hadoop mirror page

在您的服务器上,使用wget来检索它:

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

<$>[注] 注: Apache网站将动态引导您到最佳镜子,因此您的URL可能不匹配上面的URL。

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

Screenshot highlighting the .mds file

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

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

然后运行验证:

1sha256sum hadoop-3.0.3.tar.gz
1[secondary_label Output]
2db96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a hadoop-3.0.3.tar.gz

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

1cat hadoop-3.0.3.tar.gz.mds | grep SHA256
1[label ~/hadoop-3.0.3.tar.gz.mds]
2...
3SHA256 = DB96E2C0 D0D5352D 8984892D FAC4E27C 0E682D98 A497B7E0 4EE97C3E 2019277A

您可以安全地忽略案例和空格的差异. 您对我们从镜子中下载的文件执行的命令的输出应匹配您从apache.org下载的文件中的值。

现在你已经验证了该文件没有被破坏或更改,使用tar命令与-x标志提取,-z解压缩,-v用于语音输出,和-f来指定你正在从文件中提取档案。

1tar -xzvf hadoop-3.0.3.tar.gz

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

1sudo mv hadoop-3.0.3 /usr/local/hadoop

有了软件,我们准备好配置它的环境。

第2步:运行Hadoop

请执行以下命令启动 Hadoop 并显示其帮助选项:

1/usr/local/hadoop/bin/hadoop

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

 1[secondary_label Output]
 2Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 3 or hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
 4  where CLASSNAME is a user-provided Java class
 5
 6  OPTIONS is none or any of:
 7
 8--config dir Hadoop config directory
 9--debug turn on shell script debug mode
10--help usage information
11buildpaths attempt to add class files from build tree
12hostnames list[,of,host,names]   hosts to use in slave mode
13hosts filename list of hosts to use in slave mode
14loglevel level set the log4j level for this command
15workers turn on worker mode
16
17  SUBCOMMAND is one of:
18. . .

要做到这一点,在您的主目录中创建一个名为输入的目录,并将Hadoop的配置文件复制到其中,以便将这些文件作为我们的数据。

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

接下来,我们将运行MapReduce的hadoop-mapreduce-examples程序,一个具有多个选项的Java档案。我们将召唤其grep程序,其中一个包含在hadoop-mapreduce-examples中的许多例子,其次是输入目录,输入和输出目录grep_example。MapReduce grep程序将计算一个字母字或常规表达式的匹配。最后,我们将提供常规表达式允许[.]*,以便在声明句中或句子结束时找到允许字的出现。

执行以下命令:

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

当任务完成时,它提供了所处理的内容和遇到的错误的摘要,但不包含实际结果:

 1[secondary_label Output]
 2 . . .
 3    	File System Counters
 4    	FILE: Number of bytes read=1330690
 5    	FILE: Number of bytes written=3128841
 6    	FILE: Number of read operations=0
 7    	FILE: Number of large read operations=0
 8    	FILE: Number of write operations=0
 9    Map-Reduce Framework
10    	Map input records=2
11    	Map output records=2
12    	Map output bytes=33
13    	Map output materialized bytes=43
14    	Input split bytes=115
15    	Combine input records=0
16    	Combine output records=0
17    	Reduce input groups=2
18    	Reduce shuffle bytes=43
19    	Reduce input records=2
20    	Reduce output records=2
21    	Spilled Records=4
22    	Shuffled Maps =1
23    	Failed Shuffles=0
24    	Merged Map outputs=1
25    	GC time elapsed (ms)=3
26    	Total committed heap usage (bytes)=478150656
27    Shuffle Errors
28    	BAD_ID=0
29    	CONNECTION=0
30    	IO_ERROR=0
31    	WRONG_LENGTH=0
32    	WRONG_MAP=0
33    	WRONG_REDUCE=0
34    File Input Format Counters
35    	Bytes Read=147
36    File Output Format Counters
37    	Bytes Written=34

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

如果这个输出目录已经存在,程序将失败,而不是查看摘要,你会看到这样的东西:

1[secondary_label Output]
2 . . .
3    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
4    at org.apache.hadoop.util.RunJar.run(RunJar.java:244)
5    at org.apache.hadoop.util.RunJar.main(RunJar.java:158)

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

1cat ~/grep_example/*

你会看到这个输出:

1[secondary_label Output]
219	allowed.
31	allowed

MapReduce 任务发现了 19 个允许一词的发生,然后是一个时间段和一个没有发生的发生,运行示例程序验证了我们的独立安装正常工作,并且系统上的非特权用户可以运行 Hadoop 进行探索或调试。

结论

在本教程中,我们在独立模式下安装了 Hadoop,并通过运行其提供的示例程序来验证它。 要了解如何编写自己的 MapReduce 程序,请访问 Apache Hadoop 的 MapReduce 教程,它通过您在本教程中使用的示例背后的代码。

Published At
Categories with 技术
Tagged with
comments powered by Disqus