Hadoop在我的项目中派上用场吗?

时间:2014-01-13 21:24:30

标签: php mysql apache hadoop bigdata

几天前,我的公司要求我找到启动项目的要求。该项目正在创建一个电子书商店。术语简单,但数据总量约为4TB,文件数约为500,000。

由于我的团队成员使用php和mysql,我试图查看apache以获取大数据。我显然面对apache haadoop和mysql-cluster用于大数据。但经过几天的谷歌搜索,我现在只是完全糊涂了!我现在有这些问题:

  1. 这些数据量(4-5TB)是否被视为大数据? (有些消息称,至少5TB的数据应该使用hadoop,其他一些说hadoop的大数据意味着Zetabytes和Petabytes)

  2. hadoop是否附带了自己的特殊数据库,还是应该与mysql等一起使用?

  3. hadoop是否仅适用于群集,或者它在单节点服务器上工作正常?

  4. 由于我最近面对这些条款,我相信我的部分或全部问题可能真的很愚蠢......但如果您对此类型项目有其他建议,我将非常感激。

2 个答案:

答案 0 :(得分:3)

以下是我的简短答案

  • 这些数据量(4-5TB)是否被视为大数据? (有些消息称,至少5TB的数据应该使用hadoop,其他一些说hadoop的大数据意味着Zetabytes和Petabytes)

    • 是和否。对于某些用例,这不是足够大的数据,而对于其他用户,则是。应该提出并回答的问题

    • 此数据是否正在增长。增长率是多少。

    • 您是否会不时对此数据进行一些分析
  • hadoop是否附带了自己的特殊数据库,还是应该与mysql等一起使用?

    • 是的,Hadoop有HDFS文件系统,可以存储flatfile,可以像数据存储库一样对待。但这可能不是最好的解决方案。您可能希望查看像Cassandra,HBase,MongoDB
    • 这样的NoSQL DB
  • hadoop是否仅适用于群集,或者它在单节点服务器上工作正常?

    • 从技术上讲,是的,hadoop可以在Pseudo集群或独立模式下单点运行。但这仅用于学习或测试开发目的。对于任何生产环境,您应该考虑跨越多个VM的Hadoop集群....我在prod中看到的最小值为6 VM。

因此,5TB对于关系数据库(支持群集)来说不是很大的数量。但支持关系数据库的成本随容量呈指数增长。虽然使用Hadoop和HDFS,但成本非常低....添加Cassandra或HBase ......差别不大。但请记住,只需使用hadoop,您就会看到一个高延迟系统。如果您希望Hadoop能够实时回答您的问题......请留意其他解决方案。 (例如:查询列出所有已签出的书籍到Xyz",然后从DB中获取...不要使用Hadoop进行查询)。

总的来说,我的建议是,从youtube,cloudera参加Hadoop的速成课程,尝试获得有关Hadoop和什么不是Hadoop的专业知识然后再决定。你的问题给人的印象是,你有很长的学习历史,值得接受这个挑战。

答案 1 :(得分:0)

这应该是一个评论,但它太长了。

Hadoop是一个编写并行软件的框架,最初由Yahoo编写。它基于20世纪90年代Google开发的框架,而后者又是Lisp语言中map-reduce原语的并行实现。您可以将Hadoop视为一组库,这些库可以在您拥有的硬件上运行,也可以在云上的硬件上运行。这些库为java和其他语言提供了编程接口。它允许您利用一组处理器和磁盘(使用HDFS)。它的主要特性是可扩展性和容错能力,对于大数据问题都非常重要。

Hadoop实现了一种围绕map-reduce并行实现的编程方法。那是原始的应用程序。如今,很多东西都建立在Hadoop上。您应该从Apache project descriptionWikipedia page开始了解详情。

有几个数据库支持Hadoop接口(Asterdata可以想到)。通常当人们想到“数据库”和“Hadoop”时,人们会想到Pig或Hive或者一些相关的开源项目。

至于你的问题。如果您的数据自然地符合关系数据库(具有按键连接的列的表),则使用关系数据库。如果您需要具有分层数据的Web应用程序的快速性能,那么请了解NoSQL解决方案,例如MongoDB。如果您的数据具有复杂的结构并且需要可扩展性,那么您的团队就具备了编程技能,那么请考虑基于Hadoop的组件。而且,对于大型项目,不同组件通常需要多种技术 - 使用NoSQL的实时操作,使用SQL进行报告,使用SQL和Hadoop的组合进行临时查询(例如)。