2015-04-16 57 views
-3

我是一位经验丰富的LAMP开发人员,并且具有丰富的php,nginx,haproxy,redis,mongodb和aws服务经验。每当有大量数据需求时,我就会使用aws web服务,最近开始阅读大数据,希望能够自己使用该技术,而不是使用托管服务进行大数据处理,流处理等。Apache项目和大数据世界

但是这与学习LAMP并不一样,因为用例的性质,很难为新手找到好的资源。特别适合没有参与过Java生态系统的人。 (据我的理解,Java软件几乎涵盖了流行的大数据堆栈)。在讨论大数据时,下面列出了几乎所有的软件弹出窗口,但很难理解每个项目的概念,每个项目主页上的描述都非常模糊。

例如“卡桑德拉”,对地表它是一个很好的数据库来存储时间序列数据,但阅读时更多的分析则其他堆栈上来,Hadoop的,猪,动物园管理员等

  • 卡桑德拉
  • 弗林克
  • 水槽
  • Hadoop的
  • HBase的
  • 蜂巢
  • 卡夫卡
  • 星火
  • 动物园管理员

所以,简而言之,这是什么这些软件呢?在大数据背景下,这些项目中的一些共享相同的方面,为什么它们共存?有什么优势?什么时候用什么?

+1

请求书籍或离线资源在计算器中被视为offtopic – Panther

回答

1

至于hadoop,你必须明白,根据上下文的不同,Hadoop可能意味着两件事情。有点像“Linux”这个词,如果你熟悉的话。

  • 只有核心:真正的“Hadoop”只是一个文件系统,用于分散存储超大文件+通过Map/Reduce向这些文件请求框架。
  • 整个生态系统:这包括核心和所有其他工具,已被放到hadoop进行数据分析。 Flume,Hbase,Hive,Kafka,Spark,Zookeeper是属于这个类别的术语。 Flink也可能是,我不确定。

卡桑德拉也可能属于第二类,因为"Hadoop integration was added way back in version 0.6 of Cassandra"

了解整个生态系统的更好,你必须understand how this is all structured

从底部到顶部:

  • 底层:在这里,你有你的分布式文件系统和Map/Reduce的要求框架。 HDFS是文件系统的名称,您也会看到这个术语很多。在HDFS之上,您可以使用HBase,这是一个面向列的数据库,位于HDFS¹之上。
  • 中间层,执行引擎:在中间我们有几个不同的引擎,可以查询hadoop文件系统的信息。实际上,有些人把Map/Reduce放在第二层,因为Hadoop环境现在还包括Tez和Spark。我认为,Tez通过使用图表来缩短查询速度,以实现map/reduce执行。而Spark是一款内存引擎。
  • 顶层,用户抽象:在执行引擎之上,您拥有用户API /抽象。这包括apache Hive(SQL like查询)和Pig(在我眼中是SQL和编程语言的混合体)。但是也有更多专门的抽象,如MLlib,它是一个使用Spark作为中间层的hadoop系统之上的机器学习库。

除此之外,我们还为整个生态系统提供管理工具。管理服务器,管理任务执行顺序(作业调度)等。这就是Kafka和Zookeeper所属的地方。

¹我目前不了解HBase与ORC文件或Parquet之间的关系。