【问题标题】:The Apache Projects and Big Data WorldApache 项目和大数据世界
【发布时间】:2015-06-23 04:03:19
【问题描述】:

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

但是,这与学习 LAMP 不同,而且由于用例的性质,很难为新手找到好的资源。特别适合那些没有接触过 Java 生态系统的人。 (据我了解,Java 软件几乎涵盖了流行的大数据堆栈)。当谈到大数据时,下面的软件列表几乎无处不在,但很难掌握每个软件的概念,每个项目主页上的描述都非常模糊。

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

  • 卡桑德拉
  • Flink
  • 水槽
  • Hadoop
  • Hbase
  • 蜂巢
  • 卡夫卡
  • 火花
  • 动物园管理员

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

【问题讨论】:

  • 在stackoverflow中要求书籍或离线资源被认为是题外话

标签: java hadoop cassandra apache-spark bigdata


【解决方案1】:

至于 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 通过使用图来执行 map/reduce 来加速查询。 Spark 是一个内存引擎。
  • 顶层,用户抽象:在执行引擎之上,您拥有用户 API/抽象。这包括 apache Hive(类似 SQL 的查询)和 Pig(在我看来是 SQL 和编程语言的混合体)。但也有更专业的抽象,例如 MLlib,它是一个使用 Spark 作为中间层的 hadoop 系统之上的机器学习库。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-08
    • 2011-02-19
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 2015-01-04
    相关资源
    最近更新 更多