【发布时间】:2018-06-14 17:27:10
【问题描述】:
我正在为我的创业公司启动一项大数据计划。 2018 年有任何理由使用 Hadoop,因为 Spark 被吹捧为更快,因为它主要不是将中间数据写入磁盘作为 Hadoop 的 MR。
我意识到 Spark 对 RAM 的需求更高,但这只是一次可以收回成本的 CAPEX 成本?
一般来说,除非有遗留项目,否则既然 Spark 可用,为什么还要选择 Hadoop?
是否愿意将两者进行现实世界的比较、陷阱等?
或者是否有 Hadoop 可以解决但 Spark 不能解决的用例?
——————实际问题在下方评论————
我会使用 YARN 作为资源管理器,使用 HDFS 作为 Spark 的文件系统。 还要意识到,当 Spark 与 Hadoop 生态系统相交时,它有点安静。
比较是:
- Mapreduce 与 Spark 代码
- SparkSQL 与 Hive
- 人们也提到了 Pig,但并不是很多人都想学习自定义查询。如果我必须使用 Pig 作为数据科学家,我为什么不使用 Apache NiFi 和 Hadoop?
也不确定 Spark 如何处理以下问题:
- 如果数据不适合 RAM,那怎么办?回到基于磁盘的范例(这里不讨论流式用例..)所以不比 Mapreduce 更好吗? Tez 如何让 MR2 变得更好?
- Hadoop 3 支持擦除编码以减少数据复制。 Spark 有什么作用?
我不清楚的是过多的重叠选择。例如仅流式传输就有:
- Spark 流式传输
- 阿帕奇风暴
- 阿帕奇萨姆扎
- Kafka 流
- CEP 商业工具。(ORacle CEP、TIBCO 等)
他们中的许多人都使用类似于 Spark 核心引擎的 DAG,因此很难从另一个中选择一个。
用例:
- 应用程序将数据发送到中间件,直到事件结束。事件可以按周期性或由于满足业务条件而结束。
- 中间件必须显示用户从其应用实例发送的值的实时相加(简化)。接受中间件是实际值总和的地板,实际值可以更高。 计划在此处使用 Kafka 流来让消费者以最小的延迟添加所有输入消费者发布到缓存中,该缓存由应用轮询以显示当前的附加值。
- 中间件记录所有输入
- 事件结束后,大数据范例扫描日志数据和数据库记录,通过比较所有 dB 值和日志条目(审核)并将它们与 Kafka 显示的值进行比较来获得准确的计数。此方案计算的值为最终值。
设计选择:
- 我喜欢 Kafka,因为它解耦了应用程序中间件,并且是低延迟高吞吐量消息传递。 Streams 代码很容易编写。 是否愿意有人使用 Spark Streams 或 Apache Storm 或 Apache Samza 来反驳争论?
- 应用程序本身是 Tomcat 服务器上的 Java 代码,带有用于 iOS/Android 客户端的 REST 端点。由于附加值的显式活跃性,不进行客户端缓存。
【问题讨论】:
-
超级依赖于你实际上想要做什么......
-
没有合理的否决票,因为我确实研究过它,但找不到我的问题的明确答案 - 只有一个方面或与供应商相关的 A 比 B 好..
-
你原来的问题没有。 “Spark vs Hadoop”很容易搜索。您的更新提到了与原始问题无关的 Kafka、Storm、NiFi、Pig,因此应该在一个全新的帖子中提出。无论如何,我已尽力解决您的问题。
-
投票结束,因为过于广泛。
标签: hadoop apache-spark apache-kafka apache-storm apache-samza