java - Apache项目与大数据世界

标签 java hadoop cassandra apache-spark bigdata

我是一位经验丰富的LAMP开发人员,并且在php,nginx,haproxy,redis,mongodb和aws服务方面经验丰富。每当需要大数据时,我都会使用AWS Web服务,并且最近开始阅读有关希望自己使用该技术的大数据的信息,而不是将托管服务用于大数据处理,流处理等。

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

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

  • Cassandra
  • Flink
  • 水槽
  • Hadoop
  • Hbase
  • hive
  • 卡夫卡
  • Spark
  • Zookeeper

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

    最佳答案

    至于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之间的关系。

    关于java - Apache项目与大数据世界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679959/

    相关文章:

    hadoop - 位置变量上的 pig 过滤器

    java - Hadoop 错误 .ClassCastException : org. apache.hadoop.io.LongWritable 无法转换为 org.apache.hadoop.io.Text

    java - Apache Cassandra 的 Spring Data 将 java.time.LocalDateTime 转换为 UTC

    Cassandra cql : select N “most recent” rows in ascending order

    cassandra - 无法创建嵌套集合数据类型

    java - 错误 :Execution failed for task ':app:transformClassesWithJarMergingForDebug' . > com.android.build.api.transform.TransformException

    java - 简单的 PHP NAT 穿透服务器脚本

    java - Hadoop : set a variable like hashSet only once so that it can be utilized multiple times in each map task

    Java 的 Fork/Join vs ExecutorService - 什么时候使用?

    java - 如何创建依赖于 Spring Bean 的自定义 Spring PropertySource