centos7开发java体验_同样的Java,完全不一样的HDInsight大数据开发体验

大数据的热潮一直居高不下,每个人都在谈。你也许不知道,早些年这个领域可是有个非常「惹眼球」的段子:

05a0cbf0fd8afff7e43b69e31d0eb903.png
b660b7f9df509a292915bd0e6711f4a4.png
d7b21b72b1a1ca104b62afe535ae47c8.png

简单翻译一下:大数据就像青少年之间的【敏感词】:每个人都在谈,可没人真正知道该怎么做,但每个人都认为其他人正在做,所以所有人都说自己也正在做……反正前美国麻省理工大学(MIT)教授,现美国杜克大学(Duke University)教授 Dan Ariely 是这么说的

c990be1c24b2f30b74b17e11c5254d7b.png

那么,具体该怎么做呢?今天,我要教教大家如何运用 Java 语言,为 HDInsight 上的 Hadoop 开发一个 MapReduce 程序,借此玩转大数据。

1首先开始科普

  • 什么是 HDInsight

Azure HDInsight 是 Hortonworks Data Platform (HDP) 提供的 Hadoop 组件的云发行版,适用于对计算机集群上的大数据集进行分布式处理和分析。目前 HDInsight 可提供以下集群类型:Apache Hadoop、Apache Spark、Apache HBase、Apache Storm、Apache 交互式 Hive(预览版),以及其他包含脚本操作的自定义集群。

  • 什么是 Hadoop

Hadoop 技术堆栈包括相关的软件和实用程序(Apache Hive、HBase、Spark 等),通常包含 Hadoop 分布式文件系统 (HDFS)、适用于作业计划和资源管理的 YARN、适用于并行处理的 MapReduce。Hadoop 最常用于已存储数据的批处理。

92c2718dac9e899c3d181b63401a003d.png
  • 什么是 MapReduce

MapReduce 是一个旧软件框架,用于编写并行批量处理大数据集的应用程序。MapReduce 作业将分割大型数据集,并将数据组织成键值对进行处理。MapReduce作业在 YARN 上运行。

  • 什么是 Java
422bc98ecf89ca995e1c23aa6f106c2b.png

这个真有必要解释?

71de2f495d225e94b6bba194f2c3273e.gif

通过 Azure HDInsight 服务使用 Hadoop,可以获得很多便利,例如:减少了设置和配置工作,提高了可用性和可靠性,可在不中断作业的情况下进行动态缩放,可灵活使用组件更新和当前版本,并且能与其他 Azure 服务(包括 Web 应用和 SQL 数据库)集成。

机智的你理解这些概念了么,接下来我们一起来用 Java 开发一个 MapReduce 程序,然后通过 HDInsight 服务运行吧。

2前期准备

首先你需要准备好 Java JDK 8 或更高版本以及 Apache Maven,随后按照下列方式配置开发环境:

1

设置环境变量

请在安装 Java 和 JDK 时设置以下环境变量(同时请注意检查这些环境变量是否已经存在并且包含正确的值):

  • JAVA_HOME -应该指向已安装 Java 运行时环境 (JRE)的目录。例如在macOS、Unix 或 Linux 系统上,值应该类似于 /usr/lib/jvm/java-7-oracle;在Windows 中,值类似于 c:ProgramFiles (x86)Javajre1.7。
  • PATH - 应该包含以下路径:

JAVA_HOME(或等效路径)

JAVA_HOMEbin(或等效路径)

安装 Maven 的目录

2

创建 Maven 项目

1、在开发环境中,通过中断会话或命令行将目录更改为要存储此项目的位置。

2、使用随同 Maven 一起安装的 mvn 命令,为项目生成基架。

f437d16e5e6a2b794156a5f233f1290e.png

此命令将使用 artifactID 参数指定的名称(此示例中为 wordcountjava)创建目录。此目录包含以下项:

pom.xml - 项目对象模型 (POM),其中包含用于生成项目的信息和配置详细信息。

src - 包含应用程序的目录。

3、删除 src/test/java/org/apache/hadoop/examples/apptest.java 文件,此示例不使用该文件。

3

添加依赖项

1、编辑 pom.xml 文件,并在部分中添加以下文本:

4601b462bcd3d866fc8321b080c56f30.png

这会定义具有特定版本(在 中列出)的库(在 中列出)。编译时会从默认 Maven 存储库下载这些依赖项,此外也可使用 Maven 存储库搜索来查看详细信息。

provided会告知 Maven 这些依赖项不应与此应用程序一起打包,因为它们在运行时由 HDInsight 集群提供。

注意:使用的版本应与集群上存在的 Hadoop 版本匹配。有关版本的详细信息,请参阅 HDInsight 组件版本控制文档。

2、将以下内容添加到 pom.xml 文件中。 此文本必须位于文件中的 ...标记内;例如 和 之间。

3dc498707ab1ddb098f28a4f4887bd85.png

第一个插件配置 Maven Shade Plugin,用于生成 uberjar(有时称为 fatjar),其中包含应用程序所需的依赖项。 它还可以防止在 jar 包中复制许可证,复制许可证在某些系统中可能会导致问题。

第二个插件配置目标 Java 版本。

注意:HDInsight 3.4 及更早版本使用 Java 7,HDInsight3.5 使用 Java 8。

3、保存 pom.xml 文件。

33c79ca13e9004ff0675f65fa340d983.png

3创建 MapReduce 应用程序

1、转到 wordcountjava/src/main/java/org/apache/hadoop/examples 目录,并将App.java 文件重命名为 WordCount.java。

2、在文本编辑器中打开 WordCount.java 文件,然后将其内容替换为以下文本:

bdac94491fe339b67f05d7890939e98b.png

请注意,包名称为 org.apache.hadoop.examples,类名称为 WordCount。提交MapReduce 作业时需要使用这些名称。

3、保存文件。

4构建应用程序

1、如果尚未到达此目录,请更改为 wordcountjava 目录。

2、使用以下命令生成包含该应用程序的 JAR 文件:

741898a03e43f30ba70e480589d1c107.png

此命令将清除任何以前构建的项目,下载任何尚未安装的依赖项,然后生成并打包应用程序。

3、命令完成后,wordcountjava/target 目录将包含一个名为 wordcountjava-1.0-SNAPSHOT.jar 的文件。

注意:wordcountjava-1.0-SNAPSHOT.jar 文件是一种 uberjar,其中不仅包含 WordCount 作业,还包含作业在运行时需要的依赖项。

5上传 jar 运行 MapReduce 作业

使用以下命令将该jar 文件上传到 HDInsight 头节点:

e36c5acc7d2888fe802990fecc3dbe5b.png

USERNAME 替换为集群的 SSH 用户名,将 CLUSTERNAME 替换为 HDInsight 集群名称。

此命令会将文件从本地系统复制到头节点。

随后通过下列步骤运行这个 MapReduce 作业:

1、使用 SSH 连接到 HDInsight。详细信息请参阅将 SSH 与 HDInsight 配合使用。

2、在 SSH 会话中,使用以下命令运行 MapReduce 应用程序:

00b8ccc89080ffcba62ecc91efe5001a.png

此命令将启动 WordCountMapReduce 应用程序。输入文件是/example/data/gutenberg/davinci.txt,输出目录是 /example/data/wordcountout。输入文件和输出均存储到集群的默认存储中。

3、作业完成后,请使用以下命令查看结果:

6a192350869f9adbecaede25866cb5f1.png

用户会收到单词和计数列表,其包含的值类似于以下文本:

3f71e1517cdab838084e783f100fb323.png

搞定收工!

我有一条不成熟的小建议

你看,使用 Java语言开发 MapReduce 程序也不是很难。

如果你更喜欢用其他语言,或者希望开发其他类型的 HDInsight 应用,那么这些资源应该能提供一些帮助:

  • 开发 C# 流式处理 MapReduce 程序
  • 开发 Scalding MapReduce 作业
  • 使用 HDInsight 工具创建 Spark 应用
  • 开发 Python 流式处理程序

最后的最后,这篇教程大家看着可还满意?想看其他任务的教程,或者想要学习了解某项 Azure 服务的话,你知道该怎么办的!

最后说一下,想要学习大数据的限时领取免费资料及课程

领取方法:

还是那个万年不变的老规矩

1.评论文章,没字数限制,一个字都行!

2.成为小编成为的粉丝!

3.私信小编:“大数据开发教程”即可!

谢谢大家,祝大家学习愉快!(拿到教程后一定要好好学习,多练习哦!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值