欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 在Ubuntu 16.04上如何在独立模式下安装Hadoop

在Ubuntu 16.04上如何在独立模式下安装Hadoop

2024/11/30 8:34:59 来源:https://blog.csdn.net/rubys007/article/details/141109816  浏览:    关键词:在Ubuntu 16.04上如何在独立模式下安装Hadoop

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

介绍

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

Hadoop 2.7 由四个主要层组成:

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

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

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

先决条件

要按照本教程操作,您需要:

  • 一个具有 sudo 权限的非 root 用户的 Ubuntu 16.04 服务器:您可以在我们的《在 Ubuntu 16.04 上进行初始服务器设置》指南中了解如何设置具有这些权限的用户。

完成这些先决条件后,您就可以安装 Hadoop 及其依赖项了。

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

步骤 1 — 安装 Java

首先,我们将更新软件包列表:

sudo apt-get update

接下来,我们将安装 OpenJDK,这是 Ubuntu 16.04 上的默认 Java 开发工具包。

sudo apt-get install default-jdk

安装完成后,让我们来检查版本。

java -version
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~16.04.1-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)

此输出验证了 OpenJDK 已成功安装。

步骤 2 — 安装 Hadoop

有了 Java,我们将访问 Apache Hadoop 发行版页面,找到最新的稳定版本。跟随当前版本的二进制链接:

!Hadoop 发行版页面的屏幕截图,突出显示镜像页面的链接

在下一个页面,右键单击并复制最新稳定版本二进制文件的链接。

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

在服务器上,我们将使用 wget 来获取它:

wget http://apache.mirrors.tds.net/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

为了确保我们下载的文件没有被篡改,我们将使用 SHA-256 进行快速检查。返回发布页面,然后跟随 Apache 链接:

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

进入您下载的版本的目录:
!突出显示 .mds 文件的屏幕截图

最后,找到您下载的版本对应的 .mds 文件,然后复制相应文件的链接:

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

同样,右键单击复制文件位置,然后使用 wget 传输文件:

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

然后运行验证:

shasum -a 256 hadoop-2.7.3.tar.gz
d489df3808244b906eb38f4d081ba49e50c4603db03efd5e594a1e98b09259c2  hadoop-2.7.3.tar.gz

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

cat hadoop-2.7.3.tar.gz.mds
...
hadoop-2.7.3.tar.gz: SHA256 = D489DF38 08244B90 6EB38F4D 081BA49E 50C4603D B03EFD5E 594A1E98 B09259C2
...

您可以安全地忽略大小写和空格的差异。我们从镜像下载的文件运行的命令的输出应该与我们从 apache.org 下载的文件中的值匹配。

现在我们已经验证了文件没有被损坏或更改,我们将使用 tar 命令和 -x 标志来提取,-z 来解压缩,-v 用于详细输出,-f 用于指定我们正在从文件中提取。使用制表符补全或在下面的命令中替换正确的版本号:

tar -xzvf hadoop-2.7.3.tar.gz

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

sudo mv hadoop-2.7.3 /usr/local/hadoop

软件安装完成后,我们准备配置其环境。

步骤 3 — 配置 Hadoop 的 Java Home

Hadoop 要求您设置 Java 的路径,可以作为环境变量或在 Hadoop 配置文件中设置。

Java 的路径 /usr/bin/java 是一个符号链接,指向 /etc/alternatives/java,而后者又是默认 Java 二进制文件的符号链接。我们将使用 readlink 命令和 -f 标志来递归地跟随路径中的每个符号链接。然后,我们将使用 sed 命令从输出中修剪 bin/java,以获得 JAVA_HOME 的正确值。

查找默认的 Java 路径

readlink -f /usr/bin/java | sed "s:bin/java::"

/usr/lib/jvm/java-8-openjdk-amd64/jre/

您可以将此输出复制到 Hadoop 的 Java 主目录,以确保如果默认的 Java 更改,这个值也不会改变。另外,您也可以在文件中动态使用 readlink 命令,这样 Hadoop 将自动使用系统默认设置的 Java 版本。

首先,打开 hadoop-env.sh 文件:

sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh

然后,选择以下选项之一:

选项 1: 设置静态值

. . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/. . . 

选项 2: 使用 Readlink 动态设置值

. . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::"). . . 

步骤 4 — 运行 Hadoop

现在我们应该能够运行 Hadoop:

/usr/local/hadoop/bin/hadoop

Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]CLASSNAME            run the class named CLASSNAMEorwhere COMMAND is one of:fs                   run a generic filesystem user clientversion              print the versionjar <jar>            run a jar filenote: please use "yarn jar" to launchYARN applications, not this command.checknative [-a|-h]  check native hadoop and compression libraries availabilitydistcp <srcurl> <desturl> copy file or directories recursivelyarchive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archiveclasspath            prints the class path needed to get thecredential           interact with credential providersHadoop jar and the required librariesdaemonlog            get/set the log level for each daemon

这意味着我们已成功配置 Hadoop 以在独立模式下运行。我们将通过运行它附带的示例 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 程序将计算文字或正则表达式的匹配次数。最后,我们将提供一个正则表达式,以查找在陈述句中出现的单词 principal。该表达式区分大小写,因此如果单词在句子开头大写,我们将找不到它:

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

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

. . .File System CountersFILE: Number of bytes read=1247674FILE: Number of bytes written=2324248FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0Map-Reduce FrameworkMap input records=2Map output records=2Map output bytes=37Map output materialized bytes=47Input split bytes=114Combine input records=0Combine output records=0Reduce input groups=2Reduce shuffle bytes=47Reduce input records=2Reduce output records=2Spilled Records=4Shuffled Maps =1Failed Shuffles=0Merged Map outputs=1GC time elapsed (ms)=61Total committed heap usage (bytes)=263520256Shuffle ErrorsBAD_ID=0CONNECTION=0IO_ERROR=0WRONG_LENGTH=0WRONG_MAP=0WRONG_REDUCE=0File Input Format CountersBytes Read=151File Output Format CountersBytes Written=37

结果存储在输出目录中,可以通过在输出目录上运行 cat 命令来检查:

cat ~/grep_example/*

6       principal
1       principal.

MapReduce 任务找到了一个带有句点的单词 principal 的出现次数,以及六个没有句点的出现次数。运行示例程序验证了我们的独立安装是否正常工作,并且系统上的非特权用户可以运行 Hadoop 进行探索或调试。

结论

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com