用于处理大数据的 MySQL Cluster 与 Hadoop
Posted
技术标签:
【中文标题】用于处理大数据的 MySQL Cluster 与 Hadoop【英文标题】:MySQL Cluster vs. Hadoop for handling big data 【发布时间】:2014-01-29 02:23:49 【问题描述】:我想知道使用 mysql 集群和使用 Hadoop 框架的优缺点。 什么是更好的解决方案。我想看看你的意见。
我认为使用 MySQL Cluster 的优点是:
-
高可用性
良好的可扩展性
高性能/实时数据访问
您可以使用商品硬件
而且我没有看到缺点! Hadoop有没有什么缺点?
在其之上使用 Hive 的 Hadoop 的优势在于:
-
还具有良好的可扩展性
您也可以使用商品硬件
在异构环境中运行的能力
使用 MapReduce 框架进行并行计算
Hive 与 HiveQL
缺点是:
-
没有实时数据访问。分析数据可能需要几分钟或几小时。
所以在我看来,对于处理大数据,MySQL 集群是更好的解决方案。为什么 Hadoop 是处理大数据的圣杯?你有什么意见?
【问题讨论】:
【参考方案1】:以上两个答案都忽略了 mySQL 和 Hadoop 之间的巨大差异。 mySQL 要求您以某种格式存储数据。它喜欢高度结构化的数据——你声明表中每一列的数据类型等。Hadoop 根本不关心这个。
示例 - 如果您有十亿个文本日志文件,为了让 mySQL 甚至可以进行分析,您需要先解析数据并将其加载到 mySQL 表中,并在此过程中键入每一列。使用 hadoop 和 mapreduce,您可以定义扫描/分析/返回原始数据源的功能 - 您无需预处理 ETL 即可对其进行预结构化。
如果数据已经结构化并且在 mySQL 中 - 那么(希望)它的结构良好 - 为什么要将其导出以供 hadoop 分析?如果不是,为什么要花时间对数据进行 ETL?
【讨论】:
【参考方案2】:Hadoop不是MySQL的替代品,所以我觉得他们有自己的场景。
每个人都知道hadoop更适合批处理作业或离线计算,但也有许多相关的实时产品,例如hbase。
如果您想选择离线计算和存储架构。
我建议使用 hadoop 而不是 MySQL 集群来进行离线计算和存储,因为:
-
成本:显然,hadoop 集群比 MySQL 集群更便宜
可扩展性:hadoop 在一个集群中支持超过一万台机器
生态系统:mapreduce、hive、pig、sqoop 等。
所以你可以选择hadoop作为离线计算和存储,MySQL作为在线计算和存储,你也可以从lambda architecture了解更多。
【讨论】:
你能解释一下你的意思是hadoop更便宜吗?我的理解是有一个免费版本的 MySQL Cluster。【参考方案3】:另一个答案很好,但并没有真正解释为什么 hadoop 在离线数据处理方面比 MySQL 集群更具可扩展性。 Hadoop 对于必须分布在多台机器上的大型数据集更有效,因为它可以让您完全控制数据分片。
MySQL 集群使用自动分片,它旨在随机分布数据,因此没有一台机器会承受更多负载。另一方面,Hadoop 允许您明确定义数据分区,以便需要同时访问的多个数据点将位于同一台机器上,从而最大限度地减少完成工作所需的机器之间的通信量。这使得 Hadoop 在许多情况下更适合处理海量数据集。
this question 的答案很好地解释了这种区别。
【讨论】:
你是对的,任何“随机”的分片最终都会导致数据集中的随机热点,除非完全知道数据的未来。您可以轻松地手动对 mySQL 进行分片(我们这样做)以允许您移动数据等,问题仍然是 - 为什么在您经历了构建数据的所有麻烦之后在 mySQL 之上使用 hadoop 来获取它首先进入mySQL(或数据库)?对我来说,这听起来像是一堆表格扫描……哎呀。以上是关于用于处理大数据的 MySQL Cluster 与 Hadoop的主要内容,如果未能解决你的问题,请参考以下文章
MySQL Cluster 与 MongoDB 复制群集分片设计及原理