前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 18.04上以独立模式安装Hadoop

如何在Ubuntu 18.04上以独立模式安装Hadoop

原创
作者头像
不会飞的蝴蝶
修改2018-10-09 17:30:59
8701
修改2018-10-09 17:30:59
举报
文章被收录于专栏:云计算教程系列

介绍

Hadoop是一个基于Java的编程框架,支持在廉价机器集群上处理和存储极大数据集。它是大数据竞争领域的第一个主要开源项目,由Apache Software Foundation赞助。

Hadoop由四个主要层组成:

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

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

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

准备

要学习本教程,您需要:

  • 具有sudo权限的非root用户的Ubuntu 18.04服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

完成此准备后,您就可以安装Hadoop及其依赖项了。

第1步 - 安装Java

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

代码语言:javascript
复制
sudo apt update

接下来,我们将在Ubuntu 18.04上安装OpenJDK,这是默认的Java Development Kit:

代码语言:javascript
复制
sudo apt install default-jdk

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

代码语言:javascript
复制
java -version
代码语言:javascript
复制
openjdk 10.0.1 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)

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

第2步 - 安装Hadoop

有了Java,我们将访问Apache Hadoop Releases页面以查找最新的稳定版本。

导航到您要安装的发行版的二进制文件。在本指南中,我们将安装Hadoop 3.0.3。

在下一页上,右键单击并将链接复制到发布二进制文件。

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

代码语言:javascript
复制
wget http://www-us.apache.org/dist/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz

注意: Apache网站将动态引导您访问最佳镜像,因此您的URL可能与上面的URL不匹配。

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

再次,我们将在我们的服务器上使用wget下载文件:

代码语言:javascript
复制
wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz.mds

然后运行验证:

代码语言:javascript
复制
shasum -a 256 hadoop-3.0.3.tar.gz
代码语言:javascript
复制
db96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a  hadoop-3.0.3.tar.gz

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

代码语言:javascript
复制
cat hadoop-3.0.3.tar.gz.mds
代码语言:javascript
复制
...
/build/source/target/artifacts/hadoop-3.0.3.tar.gz:
SHA256 = DB96E2C0 D0D5352D 8984892D FAC4E27C 0E682D98 A497B7E0 4EE97C3E 2019277A
...

您可以放心地忽略大小写和空格的区别。我们针对从镜像下载的文件运行的命令输出应该与我们从apache.org下载的文件中的值相匹配。

现在我们已经验证文件没有被破坏或更改,我们将使用带有-x标志的tar命令来提取,-zl来解压缩,-v来获得详细输出,而-f指定我们从文件中提取。使用tab-completion或在下面的命令中替换正确的版本号:

代码语言:javascript
复制
tar -xzvf hadoop-3.0.3.tar.gz

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

代码语言:javascript
复制
sudo mv hadoop-3.0.3 /usr/local/hadoop

有了这个软件,我们就可以配置它的环境了。

第3步 - 配置Hadoop的Java Home

Hadoop要求您将路径设置为Java,可以是环境变量,也可以是Hadoop配置文件。

Java的路径/usr/bin/java是一个与/etc/alternatives/java的符号链接,它是一个符号链接到默认的Java二进制文件。我们将使用有-f标志的readlink以递归方式跟踪路径的每个部分中的每个符号链接。然后,我们将使用sed从输出中调整bin/java为我们提供JAVA_HOME的正确的值。

查找默认Java路径

代码语言:javascript
复制
readlink -f /usr/bin/java | sed "s:bin/java::"
代码语言:javascript
复制
/usr/lib/jvm/java-11-openjdk-amd64/

您可以复制此输出以将Hadoop的Java主目录设置为此特定版本,这可确保如果默认Java更改,此值不会更改。或者,您可以在文件中动态使用readlink命令,以便Hadoop将自动使用设置为系统默认值的任何Java版本。

首先,打开hadoop-env.sh

代码语言:javascript
复制
sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh

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

选项1:设置静态值

代码语言:javascript
复制
 . . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
 . . . 

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

代码语言:javascript
复制
 . . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
 . . . 

注意:对于Hadoop,hadoop-env.sh中的JAVA_HOME 值将覆盖环境中/etc/profile或用户配置文件中设置的任何值。

第4步 - 运行Hadoop

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

代码语言:javascript
复制
/usr/local/hadoop/bin/hadoop
代码语言:javascript
复制
Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
  where CLASSNAME is a user-provided Java class
​
  OPTIONS is none or any of:
​
--config dir                     Hadoop config directory
--debug                          turn on shell script debug mode
--help                           usage information
buildpaths                       attempt to add class files from build tree
hostnames list[,of,host,names]   hosts to use in slave mode
hosts filename                   list of hosts to use in slave mode
loglevel level                   set the log4j level for this command
workers                          turn on worker mode
​
  SUBCOMMAND is one of:
. . .

帮助意味着我们已成功配置Hadoop以独立模式运行。我们将通过运行它附带的示例MapReduce程序来确保它正常运行。为此,请在我们的主目录中创建一个目录input,并将Hadoop的配置文件复制到其中,以将这些文件用作我们的数据。

代码语言:javascript
复制
mkdir ~/input
cp /usr/local/hadoop/etc/hadoop/*.xml ~/input

接下来,我们可以使用以下命令来运行MapReduce hadoop-mapreduce-examples程序,这是一个包含多个选项的Java归档文件。我们将调用它的grep程序,hadoop-mapreduce-examples中包括的许多示例之一,后跟输入目录input和输出目录grep_example。MapReduce grep程序将计算文字或正则表达式的匹配。最后,我们将提供正则表达式allowed[.]*以在陈述句的内部或末尾查找单词allowed的出现。表达式区分大小写,因此如果在句子开头大写,我们就找不到该单词:

代码语言:javascript
复制
/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep ~/input ~/grep_example 'allowed[.]*'

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

代码语言:javascript
复制
. . .
        File System Counters
        FILE: Number of bytes read=1330690
        FILE: Number of bytes written=3128841
        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=33
        Map output materialized bytes=43
        Input split bytes=115
        Combine input records=0
        Combine output records=0
        Reduce input groups=2
        Reduce shuffle bytes=43
        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)=3
        Total committed heap usage (bytes)=478150656
    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=147
    File Output Format Counters
        Bytes Written=34

注意:如果输出目录已经存在,程序将失败,而不是看到摘要,输出将类似于:

代码语言:javascript
复制
 . . .
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:244)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:158)

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

代码语言:javascript
复制
cat ~/grep_example/*
代码语言:javascript
复制
19  allowed.
1   allowed

MapReduce任务发现19个单词allowed出现后跟一个句点,一个出现不出现。运行示例程序已验证我们的独立安装正常运行,并且系统上的非特权用户可以运行Hadoop进行探索或调试。

结论

在本教程中,我们以独立模式安装了Hadoop,并通过运行它提供的示例程序对其进行了验证。

想要了解更多关于以独立模式安装Hadoop的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How to Install Hadoop in Stand-Alone Mode on Ubuntu 18.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第1步 - 安装Java
  • 第2步 - 安装Hadoop
  • 第3步 - 配置Hadoop的Java Home
    • 选项1:设置静态值
      • 选项2:使用Readlink动态设置值
      • 第4步 - 运行Hadoop
      • 结论
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档