我想知道使用mysql集群和hadoop框架的优缺点。更好的解决方案是什么。我想听听你的意见。
我认为使用mysql集群的好处是:
高可用性
良好的可扩展性
高性能/实时数据访问
你可以使用商品硬件
我不觉得有什么坏处!有没有hadoop没有的缺点?
带有hive的hadoop的优点是:
还具有良好的可扩展性
你也可以使用商品硬件
在异构环境中运行的能力
基于mapreduce框架的并行计算
带hiveql的Hive
缺点是:
没有实时数据访问。分析数据可能需要几分钟或几小时。
所以在我看来,对于处理大数据,mysql集群是更好的解决方案。为什么hadoop是处理大数据的圣杯?你的意见是什么?
3条答案
按热度按时间fgw7neuy1#
hadoop不是mysql的替代品,所以我认为它们有自己的场景
大家都知道hadoop更适合批量作业或离线计算,但也有许多相关的实时产品,如hbase。
如果你想选择离线计算和存储架构。
我建议hadoop不要使用mysql群集进行离线计算和存储,因为:
成本:显然,hadoop集群比mysql集群便宜
可伸缩性:hadoop支持集群中超过上万台机器
生态系统:mapreduce、hive、pig、sqoop等。
所以你可以选择hadoop作为离线计算和存储,mysql作为在线计算和存储,你也可以从lambda架构中学到更多。
vojdkbi02#
另一个答案很好,但并不能真正解释为什么hadoop比mysql集群更适合离线数据处理。hadoop对于必须分布在多台机器上的大型数据集更为有效,因为它可以让您完全控制数据的分片。
mysql集群使用自动分片,并且它被设计成随机分布数据,这样就不会有任何一台机器受到更多负载的影响。另一方面,hadoop允许您显式定义数据分区,以便需要同时访问的多个数据点将位于同一台计算机上,从而最大限度地减少完成任务所需的计算机之间的通信量。这使得hadoop在许多情况下更好地处理海量数据集。
这个问题的答案很好地解释了这种区别。
ryevplcw3#
以上两个答案都忽略了mysql和hadoop之间的巨大区别。mysql要求您以某种格式存储数据。它喜欢高度结构化的数据—您可以声明表中每一列的数据类型等。hadoop根本不关心这一点。
例如,如果您有10亿个文本日志文件,为了使mysql的分析成为可能,您需要首先解析数据并将其加载到mysql表中,同时键入每一列。使用hadoop和mapreduce,您可以定义一个函数来扫描/分析/返回原始数据源中的数据—您不需要预处理etl来预先构造数据。
如果数据已经在mysql中结构化了,那么(希望)它的结构良好,为什么要将其导出给hadoop进行分析?如果不是这样,为什么还要花时间对数据进行etl呢?