hadoop初学者的问题

时间:2010-03-19 23:00:02

标签: java oracle hadoop

我已经阅读了一些关于hadoop的文档并看到了令人印象深刻的结果。我得到了更大的图片,但我觉得它是否适合我们的设置很难。问题与编程无关,但我很想获得目前使用hadoop的人的意见以及它如何适合我们的设置:

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

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

hadoop在哪里适合这张照片?即使在hadoop之后我们还能继续使用Oracle吗?

3 个答案:

答案 0 :(得分:4)

通过一些简单的调整,您可以大大减少批处理过程的耗用时间。我基于过去的经验简单地提供了这种分析。批处理过程往往写得很差,正是因为它们是自治的,所以不要让愤怒的用户要求更好的响应时间。

当然,我认为投入大量时间和精力来重新实施我们在新技术中的应用 - 无论多么新鲜和冷静 - 直到我们已经用尽了我们目前的架构。

如果您需要有关如何调整批量查询的一些具体建议,那么这将是一个新问题。

答案 1 :(得分:2)

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

  • 我有很多可以运行Hadoop的机器,还是我愿意花钱买EC2这样的东西?

  • 我的工作是否可以并行化? (如果您的5小时批处理过程包含30个必须按顺序运行的10分钟任务,Hadoop将无法帮助您。)

  • 我的数据是否需要随机访问? (这实际上非常重要 - Hadoop非常适合顺序访问,而且随机访问非常糟糕。在后一种情况下,您将看不到足够的加速来证明额外的工作/成本。

就“适合”的地方而言 - 你给Hadoop一堆数据,它会给你回输。想到它的一种方法就像一个巨大的Unix进程 - 数据进入,数据出来。你用它做什么是你的事。 (这当然是一个过于简化的视图,但你明白了。)所以是的,你仍然可以将数据写入你的Oracle数据库。

答案 2 :(得分:0)

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

因此,您当前的流程需要5个小时来汇总数据。在蝙蝠中,一般的摘要任务是MapReduce擅长的工作的“类型”之一。但是,您需要了解天气,您的处理要求将转换为MapReduce作业。我的意思是,你能用MapReduce限制你使用的键/值对来实现你需要的摘要吗?

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

您仍然可以使用Oracle。您可以使用Hadoop / MapReduce进行数据处理,然后使用自定义代码将摘要数据插入到oracle DB中。