有 Java 编程相关的问题?

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

java hadoop初学者问题

我阅读了一些关于hadoop的文档,看到了令人印象深刻的结果。我了解更大的情况,但很难确定它是否适合我们的设置。这个问题与编程无关,但我很想了解目前使用hadoop的人的意见,以及它如何适合我们的设置:

  • 我们使用Oracle作为后端
  • 用于前端的Java(Struts2/Servlets/iBatis)
  • 每晚我们都会得到需要汇总的数据。这是一个批处理过程(需要5小时)

我们正在寻找一种方法,将这5个小时缩短为更短的时间

hadoop在这幅图中的位置如何?即使在hadoop之后,我们还能继续使用Oracle吗


共 (3) 个答案

  1. # 1 楼答案

    Hadoop旨在跨多台机器并行化作业。要确定它是否适合您的设置,请问自己以下问题:

    • 我有很多可以运行Hadoop的机器吗,或者我愿意在EC2之类的东西上花钱吗

    • 我的工作可以并行吗?(如果您的5小时批处理过程包含30个10分钟的任务,这些任务必须按顺序运行,Hadoop将不会帮助您)

    • 我的数据需要随机访问吗?(这实际上非常重要——Hadoop在顺序访问方面很好,在随机访问方面很糟糕。在后一种情况下,你不会看到足够的加速来证明额外的工作/成本是合理的)

    至于它“适合的地方”——你给Hadoop一堆数据,它会给你返回输出。有一种方式认为它就像一个巨大的Unix进程——数据进入,数据出来。你用它做什么是你的事。(这当然是一个过于简化的视图,但你明白了。)因此,是的,您仍然能够将数据写入Oracle数据库

  2. # 2 楼答案

    Hadoop分布式文件系统支持使用MapReduce对数据进行高度并行的批处理

    因此,您当前的流程需要5个小时来总结数据。在bat中,一般摘要任务是MapReduce擅长的工作类型之一。不过,您需要了解您的处理需求是否会转化为MapReduce作业。我的意思是,你能通过使用键/值对MapReduce来实现你需要的总结吗

    Hadoop需要一组机器才能运行。您有支持群集的硬件吗?这通常取决于HDF上存储的数据量以及处理数据的速度。通常,在Hadoop上运行MapReduce时,机器越多,可以存储的数据越多,或者运行作业的速度越快。了解一下你每天晚上处理的数据量会有很大帮助吗

    你仍然可以使用甲骨文。可以使用Hadoop/MapReduce进行数据处理,然后使用自定义代码将摘要数据插入到oracle数据库中

  3. # 3 楼答案

    通过一些简单的调整,您很可能会大大缩短批处理过程的运行时间。我在过去经验的简单基础上进行了这一分析。批处理过程往往写得很差,正是因为它们是自治的,因此没有愤怒的用户要求更好的响应时间

    当然,我认为,在我们耗尽当前架构的能力之前,花大量时间和精力在一项新技术中重新实现我们的应用程序是毫无意义的——不管它可能多么新鲜和酷

    如果您想要一些关于如何优化批处理查询的具体建议,那么这将是一个新问题