- 内容提要
- 序
- 前言
- 第一部分 背景知识
- 第 1 章 Spring Data 项目
- 第 2 章 Repository:便利的数据访问层
- 第 3 章 使用 Querydsl 实现类型安全的查询
- 第二部分 关系型数据库
- 第 4 章 JPA Repository
- 第 5 章 借助 Querydsl SQL 实现类型安全的 JDBC 编程
- 第三部分 NoSQL
- 第 6 章 MongoDB: 文档存储
- 第 7 章 Neo4j:图数据库
- 第 8 章 Redis:键/值存储
- 第四部分 快速应用开发
- 第 9 章 使用 Spring Roo 实现持久层
- 第 10 章 REST Repository 导出器
- 第五部分 大数据
- 第 11 章 Spring for Apache Hadoop
- 第 12 章 使用 Hadoop 分析数据
- 第 13 章 使用 Spring Batch 和 Spring Integration 创建大数据管道
- 第六部分 数据网格
- 第 14 章 分布式数据网格:GemFire
- 关于封面
11.1 Hadoop 开发面临的挑战
在开发 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 的应用程序就能够保持一致的风格。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论