如何在Ubuntu 16.04单机模式下安装Hadoop

介绍

Hadoop是一个基于Java的编程框架,支持在一组廉价机器上处理和存储极大数据集。它是大数据游戏领域的第一个主要开源项目,由Apache软件基金会赞助。 Hadoop 2.7由四个主要层组成:
  • Hadoop Common是支持其他Hadoop的模块工具和库集合。
  • HDFS,它代表Hadoop分布式文件系统,负责数据持久化到磁盘。
  • YARN ,短的又一资源谈判,是“操作系统”的HDFS。
  • MapReduce是Hadoop集群原来的处理模型。它在集群或映射中分配工作,然后组织并将节点的结果减少为对查询的响应。许多其他处理模型可用于2.x版本的Hadoop。
Hadoop集群的设置相对复杂,因此该项目包括一个独立的模式,适合学习Hadoop,执行简单的操作和调试。 在本教程中,我们将以独立模式安装Hadoop,并运行其中包含的示例MapReduce程序之一来验证安装。

先决条件

要遵循本教程,您需要: 一旦你完成了这个先决条件,你就可以安装Hadoop及其依赖项。 在开始之前,你可能也想看看 介绍大数据概念和术语到Hadoop的介绍

第1步 - 安装Java

要开始使用,我们将更新我们的软件包列表:
sudo apt-get update
接下来,我们将安装OpenJDK,Ubuntu 16.04上的默认Java开发工具包。
sudo apt-get install default-jdk
一旦安装完成,让我们检查版本。
java -version
Outputopenjdk 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
注:Apache的网站将引导您进入动态的最好的镜像,让您的网址可能不符合上面的网址。 为了确保我们下载的文件没有被更改,我们将使用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
Outputd489df3808244b906eb38f4d081ba49e50c4603db03efd5e594a1e98b09259c2  hadoop-2.7.3.tar.gz
比较中的SHA-256值这个值 .mds文件:
cat hadoop-2.7.3.tar.gz.mds
〜/ 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::"
Output/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:设置静态值

/usr/local/hadoop/etc/hadoop/hadoop-env.sh
 . . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
 . . . 

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

/usr/local/hadoop/etc/hadoop/hadoop-env.sh
 . . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
 . . . 
注:对于Hadoop的,价值JAVA_HOMEhadoop-env.sh将覆盖在环境下设置的任何值/etc/profile或在用户的个人资料。

第4步 - 运行Hadoop

现在我们应该能够运行Hadoop:
/usr/local/hadoop/bin/hadoop
OutputUsage: 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[.]*'
任务完成后,它会提供已处理的内容和遇到的错误的摘要,但不包含实际结果。
Output . . .
        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
注意:如果输出目录已经存在,该程序会失败,而不是看到综上所述,输出中看起来是这样的:
Output . . .
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
结果存储在输出目录,并可以通过运行检查 cat的输出目录:
cat ~/grep_example/*
Output6       principal
1       principal.
MapReduce的任务找到的一个词出现 principal后跟一个句点和六个出现的地方不是。运行示例程序已验证我们的独立安装正常工作,并且系统Hadoop上的非特权用户可以运行Hadoop进行探查或调试。

结论

在本教程中,我们已经将Hadoop安装在独立模式下,并通过运行它提供的示例程序来验证它。要了解如何编写自己的MapReduce程序,你可能要访问的Apache Hadoop的 MapReduce的教程它通过例子代码。 当你准备建立一个群集,请参阅Apache基金会 的Hadoop集群搭建指南。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏