大数据分析选择技术栈
Posted
技术标签:
【中文标题】大数据分析选择技术栈【英文标题】:BigData analysis choose technology stack 【发布时间】:2013-06-24 10:18:33 【问题描述】:我想编写一个应用程序,它能够从大型生产系统的监控数据中生成报告并启用交互式数据分析(类似 OLAP)。 (我知道,前面有一些有问题的权衡决定,但我们暂时将它们放在一边。) 我确定了基本技术堆栈的以下可能性:
Hadoop:用于分布式文件系统和 MapReduce 框架 数据库:HBase 或 Cassandra 以启用随机读取 分析:用于高级分析的 Hive 或 Pig根据我的研究,我倾向于认为 Hadoop/HBase/Hive 将是最常见的组合。但这只是基于一些论坛问题和产品演示。 其他人可以分享他对这个主题的一般看法吗? 或者更具体地回答以下问题:
HBase 是否比 Cassandra 更适合大数据分析(写入与读取性能)? 值得使用数据库还是我应该直接在 Hadoop 上找到我的分析层? 哪些数据库/分析工具组合最“自然”? 我错过了什么很酷的东西吗?【问题讨论】:
【参考方案1】:恕我直言,
1- 考虑到所有最近的进步,仅根据您的读/写需求来决定是使用 HBase 还是 Cassandra 有点困难。您可以调整这些工具以适应您的读/写要求。在做出任何决定时,您还应该考虑一些其他事项。
2- 此时您似乎不需要数据库。您可以将存储在 HDFS 中的数据映射到 Hive 表。然后在需要长时间运行的批处理过程时运行 Hive 查询。如果您打算对数据的某些部分执行实时即席查询,您可以在相同的 Hive 表上使用 Cloudera Impala(当real-timeness
很重要时)。 Impala 使用相同的 Hive 元数据。所以你不必担心这个。
3- 如果您打算在 Hadoop 平台上工作,那么 HDFS+Hive+HBase+Pig 会很好。我并不是说 Cassandra 不好,但 Hbase 是为与 Hadoop 一起使用而开发的。
4- 那里有很多“酷”的东西,但最好保持低数字。更多工具意味着更多配置、更多设置和更多管理(更令人头疼)。因此,只从那些真正需要的东西开始,并且只有在您认为确实需要它或者它会给您带来一些额外优势时才添加一个特定的工具。但是您可能想看看Impala, Storm, Flume, Spark/shark
等工具。
据我所知,HBase 是为在 Hadoop 集群之上使用而构建的。毫无疑问,它会消耗一些内存,但这不应该成为您的应用程序的瓶颈。您只需要正确调整所有内容。但是,只有当您需要对数据进行随机实时读/写访问时,才可以这样做。
【讨论】:
+1 仅当您需要对数据进行随机实时读/写访问时才使用 HBase。【参考方案2】:如果您要在与 Hadoop 相同的集群上运行 HBase,您确实会减少 MapReduce 作业的可用内存。对于 OLAP 系统,您实际上并不需要 HBase 的随机读取/更新功能。您可以使用 Flume 或手动将数据加载到 Hadoop 集群中。设备监控数据适合按时间划分,例如按日历日期。将数据加载到可以映射到分区 Hive 表的目录结构后,您可以使用 HiveQL 查询它。对于最棘手的分析,您可以使用 Java 编写 MapReduce 作业或使用 Pig。
问题是响应不会立即出现。这对于临时分析来说是可以的,但如果您尝试查看一些常用的预先确定的指标,可能会令人沮丧。在后一种情况下,您应该考虑预先计算此类指标并将结果加载到内存缓存甚至关系数据库中。我已经看到在 HBase 中缓存了如此频繁使用的结果,我无法忍受为此目的浪费集群上一半的可用 RAM。
【讨论】:
感谢您的回答(如果我有代表,我会投票)。由于您似乎在该领域有经验,您是否曾经使用过其中一种“实时”查询框架(Cloudera Impala、Apache Drill、Spark/Shark)? 不,不是。我已经离开这个领域大约一年了,所以我可能错过了一些最新的发展。以上是关于大数据分析选择技术栈的主要内容,如果未能解决你的问题,请参考以下文章
大数据任务调度工具 Apache DolphinScheduler