在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 集群设置指南。


目录
相关文章
|
1月前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
3266 3
|
7天前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
94 50
|
29天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
109 4
Linux系统之Ubuntu安装cockpit管理工具
|
1月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
140 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
1月前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
83 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
|
3天前
|
Ubuntu Java
Ubuntu之jdk安装
以下是Ubuntu之jdk安装的详细内容
10 0
|
7天前
|
分布式计算 资源调度 Hadoop
【赵渝强老师】部署Hadoop的本地模式
本文介绍了Hadoop的目录结构及本地模式部署方法,包括解压安装、设置环境变量、配置Hadoop参数等步骤,并通过一个简单的WordCount程序示例,演示了如何在本地模式下运行MapReduce任务。
|
30天前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
113 1
|
1月前
|
Ubuntu Linux
软件安装(五):Ubuntu 18.04安装Teamviewer 看一遍就会
这篇文章介绍了在Ubuntu 18.04系统上通过图形界面和命令行两种方法安装TeamViewer远程控制软件的步骤。
28 2
|
16天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka