介绍
Hadoop是一个基于Java的编程框架,支持在一组廉价机器上处理和存储极大数据集,这是大数据游戏领域的第一个主要开源项目,由Apache软件基金会赞助。
Hadoop 由四个主要层组成:
- Hadoop Common 是支持其他 Hadoop 模块的实用程序和库的集合。
- HDFS ,即Hadoop 分布式文件系统,负责将数据存储到磁盘上。
- YARN ,简称 Yet Another Resource Negotiator,是 HDFS 的
操作系统
。 - MapReduce 是 Hadoop 集群的原始处理模型。
Hadoop 集群是相对复杂的设置,所以该项目包括一个独立的模式,适合学习有关 Hadoop,执行简单操作和调试。
在本教程中,您将在独立模式下安装Hadoop,并运行其中一个示例MapReduce程序,以验证安装。
在您开始之前,您可能还想看看 大数据概念和术语的介绍或 Hadoop的介绍
前提条件
要遵循本教程,您将需要:
- **一个拥有
sudo
特权的非根用户的 Debian 9 服务器和防火墙,您可以通过遵循Debian 9 初始服务器设置
(https://andsky.com/tech/tutorials/initial-server-setup-with-debian-9)教程来设置。 - Java 安装如下 如何在 Debian 9 上安装 Java 与 Apt。
第1步:安装Hadoop
要安装 Hadoop,请先访问 Apache Hadoop 发布页面以查找最新的稳定版本。
在此指南中,我们将安装 Hadoop 3.0.3.
在下一页上,右键单击并复制释放二进制的链接。
在您的服务器上,使用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 快速检查。 返回 发布页面,然后右键单击并复制您下载的版本二进制版本的计量文件链接:
再次,在您的服务器上使用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 教程,它通过您在本教程中使用的示例背后的代码。