有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将Java应用程序迁移到Hadoop:架构/设计障碍?

Alrite。。所以以下是一种情况: 我负责设计基于java的ETL软件(EAI)的迁移。 我必须将其迁移到Hadoop(apache版本)。现在,从技术上讲,这更像是重新启动,而不是迁移——因为我没有要迁移的数据库。这是关于利用Hadoop的,因此,(ETL)的转换阶段是并行的iz-ed。这将使我的ETL软件

  1. 更快-使用并行转换-iz-ed
  2. 可扩展—处理更多数据/大数据意味着添加更多节点
  3. 可靠-Hadoop的冗余性和可靠性将增加我的产品的功能

我已经测试了这个配置——将我的转换算法改为mapreduce模型,在高端Hadoop集群上进行了测试,并对性能进行了台架测试。现在,我正试图理解并记录所有可能阻碍应用程序重新设计/研究/迁移的因素。以下是我能想到的几个:

  1. 其他两个阶段:提取和加载-我的ETL工具可以处理各种数据源-那么,我是否重新设计数据适配器以从这些数据源读取数据,将其加载到HDFS,然后将其转换并加载到目标数据源?这一步是否会成为整个体系结构的巨大瓶颈
  2. 反馈:所以我的转换在记录上失败了——我如何让最终用户知道ETL在特定记录上出错?简言之,在所有映射/减少/合并和排序发生的情况下,我如何跟踪应用程序级别的实际情况?默认的Hadoop web界面不是为最终用户提供的,而是为管理员提供的。那么,我应该从Hadoop web界面上构建一个新的web应用程序吗?(我知道这是不推荐的)
  3. 安全性:如何在Hadoop级别处理授权?谁可以运行作业,谁不允许运行作业-如何支持ACL
我期待着听到您对以上问题的可能解答和更多的问题/事实,我将根据您的Hadoop /问题分析的经验来考虑。 像往常一样,我感谢你们的帮助,并提前向你们表示感谢


共 (1) 个答案

  1. # 1 楼答案

    1. 我不认为加载到HDFS会是一个瓶颈,因为负载分布在数据节点之间,所以网络接口将是唯一的瓶颈。将数据加载回数据库可能是一个棘手的问题,但我认为现在情况并没有那么糟。我会设计作业,让它们的输入和输出位于HDF中,然后将一些大容量的结果加载到数据库中
    2. 反馈是一个有问题的问题,因为实际上MR只有一个结果,那就是转换数据。所有其他技巧,比如将失败的记录写入HDFS文件,都缺乏MR的“功能”可靠性,因为这是一个副作用。缓解此问题的方法之一是,您应该设计软件,以便为重复的失败记录做好准备。还有专门用于在SQL数据库和Hadoop之间迁移数据的工具http://www.cloudera.com/downloads/sqoop/ 同时,我会考虑使用蜂箱——如果你的SQL转换不是那么复杂,那么创建CSV文件可能会很实际,并用HIVE进行初始预聚合,这是在到达(也许是单节点)数据库之前减少数据量。李>