Apache项目和大数据世界

时间:2015-04-16 15:53:59

标签: java hadoop cassandra apache-spark bigdata

我是一名经验丰富的LAMP开发人员,在php,nginx,haproxy,redis,mongodb和aws服务方面拥有不错的经验。每当大数据需求出现在桌面上时,我都会使用aws web服务,并且最近开始阅读大数据,希望自己使用该技术,而不是使用托管服务进行大数据处理,流处理等。

然而,与学习LAMP不同,并且由于用例的性质,很难为新手找到好的资源。特别适合那些曾经使用Java生态系统的人。 (据我所知,Java软件几乎涵盖了流行的大数据堆栈)。在讨论大数据时,下面的软件列表几乎随处可见,但是很难掌握每个软件的概念,每个项目主页上的描述都很模糊。

例如" Cassandra",表面上它是一个存储时间序列数据的好数据库,但是当阅读更多关于分析的信息时,其他堆栈会出现,hadoop,pig,zookeeper等。

  • 卡桑德拉
  • 弗林克
  • 水槽
  • Hadoop的
  • HBASE
  • 蜂房
  • 卡夫卡
  • 火花
  • 动物园管理员

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

1 个答案:

答案 0 :(得分:2)

至于hadoop,您必须明白,Hadoop可能意味着两件事,具体取决于具体情况。有点像“Linux”一词,如果您熟悉它。

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

Cassandra也可能属于第二类,因为"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通过使用图表来加速查询/减少执行。而Spark是一个内存引擎。
  • 顶层,用户抽象:在执行引擎之上,您拥有用户API /抽象。这包括apache Hive(类似SQL的查询)和Pig(在我看来是SQL和编程语言的混合)。但是还有更多专门的抽象,比如MLlib,它是一个使用Spark作为中间层的hadoop系统上的机器学习库。

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

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