使用 Hadoop 开发企业级应用

来源:互联网 发布:yum安装的软件在哪里 编辑:程序博客网 时间:2024/05/22 21:01

面对着大数据带来的挑战, 我们需要重新思考为数据分析构建应用的方法了。 构建应用的传统方式是将数据保存在数据库中, 而这通常无法适用于大数据处理。 其原因如下:

? 传统应用建立在事务型数据库访问的基础上, 这一点 Hadoop 并不支持。
? 鉴于Hadoop中保存数据的量级,实时访问仅对存储在集群上的局部数据具有可行性。
? Hadoop的海量数据存储能力允许将数据集的各个版本保存起来,与传统的覆盖数据的方式截然相反。
其结果是, 典型的基于 Hadoop 的企业级应用看上去类似于图 1-2 所示。 在这些应用中, 有数据存储层、 数据处理层、 实时访问层和安全层。 实现这样一个架构不仅需要了解相关 Hadoop 组件的 API, 而且还要了解它们的功能和局限性, 以及每个组件在整个架构中所扮演的角色

如图 1-2 所示, 数据存储层由源数据和中间数据两部分组成。 源数据是可以从外部数据源获取的数据, 外部数据源包括企业级应用、 外部数据库、 执行日志和其他数据源。 中间数据是 Hadoop 执行得到的结果。 它可以用于 Hadoop 实时应用, 也可以发送给其他应用和最终用户

可以使用不同的机制将源数据传输到 Hadoop, 包括 Sqoop、 Flume、 直接将 HDFS 挂载为网络文件系统(NFS)以及 Hadoop 实时服务和应用。 在 HDFS 中, 新数据不会覆盖已有数据, 而是创建数据的新版本。 了解这点很重要, 因为 HDFS 是“ 一次性写入” 文件系统。
对于数据处理层来说, Oozie 用于组合 MapReduce 作业, 处理源数据并将其转换为中间数据。 与源数据不同, 中间数据不是版本化的, 而是会被覆盖的, 因此只存在有限数量的中间数据。

对于实时访问层来说,Hadoop 实时应用同时支持对数据的直接访问和基于数据集的程序执行。 这些应用可以用于读取基于 Hadoop 的中间数据以及将源数据保存到 Hadoop 中。
它们还可以用于服务用户, 以及将 Hadoop 与企业的其他应用进行集成。由于源数据和中间数据的清晰分离(源数据用于存储和初步处理, 中间数据用于发送和集成), 该架构没有任何对事务的要求, 允许开发人员构建几乎任意复杂的应用。 同时, 中间预处理显著减少了所需要的数据量, 这让实时数据访问具备了可行性


0 0
原创粉丝点击