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

简介: 在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 CLASSNAME
 or
  where COMMAND is one of:
  fs                   run a generic filesystem user client
  version              print the version
  jar <jar>            run a jar file
                       note: please use "yarn jar" to launch
                             YARN applications, not this command.
  checknative [-a|-h]  check native hadoop and compression libraries availability
  distcp <srcurl> <desturl> copy file or directories recursively
  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
  classpath            prints the class path needed to get the
  credential           interact with credential providers
                       Hadoop jar and the required libraries
  daemonlog            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 Counters
                FILE: Number of bytes read=1247674
                FILE: Number of bytes written=2324248
                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=37
                Map output materialized bytes=47
                Input split bytes=114
                Combine input records=0
                Combine output records=0
                Reduce input groups=2
                Reduce shuffle bytes=47
                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)=61
                Total committed heap usage (bytes)=263520256
        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=151
        File Output Format Counters
                Bytes Written=37

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

cat ~/grep_example/*
6       principal
1       principal.

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

结论

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


目录
相关文章
|
6天前
|
存储 Ubuntu Linux
关于实体机安装Ubuntu 22.04.3-desktop-amd64遇见的一些问题
【10月更文挑战第5天】本文介绍了Ubuntu安装过程中常见的四个问题及其解决方案,包括分区设置、驱动问题、软件安装问题和启动问题。对于分区,推荐新手选择自动分区,手动分区需了解基本概念。驱动问题可通过安装相应硬件的Linux驱动解决。软件安装问题可更换国内镜像源或修复依赖关系。启动问题则可尝试进入恢复模式修复或根据错误提示信息寻求帮助。
|
1天前
|
Ubuntu 网络安全 Apache
Ubuntu下安装Apache2.4.7遇到的问题及解决办法
Ubuntu下安装Apache2.4.7遇到的问题及解决办法
|
2天前
|
Kubernetes 网络安全 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
10 2
|
1天前
|
NoSQL Ubuntu Redis
Ubuntu安装redis
本文介绍了在Ubuntu系统上安装Redis的两种方法:一种是通过编译安装本地Redis包,包括下载、解压、编译安装、配置启动和测试连接的步骤;另一种是通过apt安装在线的Redis包,并提供了更新系统软件包列表、安装Redis服务器、检查Redis服务器状态和测试连接的命令。
6 0
Ubuntu安装redis
|
2天前
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
10 1
|
2天前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
9 1
|
1天前
|
Ubuntu Linux Windows
Ubuntu 14.04安装samba服务器
Ubuntu 14.04安装samba服务器
7 0
|
1天前
|
网络安全
Ubuntu14.04安装ssh服务器
Ubuntu14.04安装ssh服务器
11 0
|
1天前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 安装mysql和简单操作
Ubuntu 安装mysql和简单操作
13 0
|
2天前
|
Kubernetes 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
14 0