返回介绍

11.1 Hadoop 开发面临的挑战

发布于 2025-04-22 19:57:21 字数 1370 浏览 0 评论 0 收藏

在开发 Hadoop 应用程序时会面临几项挑战。首先是 Hadoop 集群的安装。搭建并管理 Hadoop 集群需要花费大量的时间并且需要具备专业的知识技能,这超出了本书的范围。好在目前许多公司都在这方面积极努力并提供协助,例如亚马逊的 Elastic Map Reduce,不用投入大量的前期成本便可使用 Hadoop。其次,通常开发一个 Hadoop 应用程序并非仅编写一个单独的 MapReduce、Pig 或 Hive job,需要开发一个完整的数据处理管道(pipeline)。这个数据处理管道包括以下几个 步骤。

1.从大量远程计算机或设备采集原始数据。

2.将数据加载到 HDFS,通常它来自各种资源(例如,应用程序日志)以及事件流的持续处理过程。

3.在数据经过系统并且被载入 HDFS 时对它执行实时分析。

4.数据清洗(data cleansing, http://en.wikipedia.org/wiki/Data_cleansing )并转换原始数据来为分析做好准备。

5.选择一个框架和编程模型来编写数据分析的 job。

6.协调多个数据分析 job(例如工作流),每个 job 分别代表一个产生最终分析结果的步骤。

7.从 HDFS 将最终的分析结果导入到结构化数据存储中,例如关系型数据库或者像 MongoDB 或 Redis 这样的 NoSQL 数据库,用于展示或提供更进一步的分析。

Spring for Apache Hadoop 还有另外两个 Spring 项目,即 Spring Integration 和 Spring Batch,为构建具有一致配置和编程模型的数据处理管道提供了完整的解决方案,这个主题将在第 13 章中介绍。在本章中我们须从基础开始:如何与 HDFS 和 MapReduce 进行交互,这个主题本身就有一些挑战性了。

目前在 Hadoop 文档和培训课程中都建议以命令行工具作为与 HDFS 交互以及执行数据分析 job 的主要方式。在逻辑上,这就相当于使用 SQL*Plus 来操作 Oracle。使用命令行工具可以使得应用程序变成 bash、Perl、Python 或 Ruby 脚本的一个松散集合。命令行工具也要求为不同的应用环境创建特定参数,以及从一个处理步骤将信息传到另一个步骤。如果使用其他文件系统或者数据访问技术的话,也有简便的方法,通过程序来与 Hadoop 交互。

Spring for Apache Hadoop 旨在简化使用 Java 构建 Hadoop 应用程序的过程。它基于 Spring 框架来提供编写 Hadoop 应用程序的结构。它使用了熟知的基于 Spring 的配置模型,就可以充分利用强大的 Spring 容器配置功能,例如可替换的属性占位符和便利的数据访问异常体系,这样编写的 Hadoop 应用程序和编写其他基于 Spring 的应用程序就能够保持一致的风格。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。