【IT168 评论】在“Hadoop是否已失宠?”的选题调研中,笔者调查了银行、Hadoop发行商、Hadoop企业用户以及部分工程师的意见,所处环境、业务需求以及看问题角度的不同让这些组织或个人有着不同的意见。如果你的数据量和增长速度还未达到使用Hadoop的级别,你一定会认为Hadoop是十分不明智的选择;相反,当你已经从Hadoop生态受益良久时,你一定会认为这是大数据时代非常好的解决方案之一,比如那些从PostgreSQL迁移至Hadoop的企业。
很多人不屑于讨论Hadoop与Spark、Flink等之间的对比,因为在大多数人的认知中,只要提起Hadoop就一定代表着整个Hadoop生态。但在不少企业内部,Hadoop更多的时候只是表示狭义上的MapReduce和HDFS,由于大多数企业内部还保留着关系型数据库时代的解决方案,因此企业更倾向于将狭义上的Hadoop和其他方案与业务需求对比,选择最合适的搭建模式,尤其是资金不太充足的企业,搭建整个Hadoop生态的前期和后期维护成本以及复杂性是非常高的,其中有些问题可能传统方案也足以解决。
如今,不少企业将数据库从PostgreSQL迁移到Hadoop,可能速度、容量以及类型是他们面临的主要问题,PostgreSQL正在渐渐从这些企业的数据中心消失,并且在行业中,Hadoop生态各开源工具的使用频率很可能远远超过PostgreSQL。与此同时,也会有一些企业从Hadoop迁移至PostgreSQL,这为思考大数据问题和解决方案及其影响提供了机会。
很早之前,我们在分析大数据问题时倾向于三个层面: 管理不断增加的数据量、管理数据增长速度以及处理多种类的数据结构。值得注意的是,这些只是问题类型,而不是问题本身,同类别的问题之间可能存在很大差异,所有解决方案几乎都意味着不小的成本付出,我经常看到将Hadoop作为企业通用解决方案,而不关注成本和问题类型的,结果往往是整个体系过于复杂,难以维护,速度可能很慢。
因此,我们应该学会区分Hadoop(狭义的MR和HDFS组合,不代指整个生态)、Storm以及PostgreSQL,Hadoop是专业通用的解决方案,而OLTP和关系型数据库则是更通用的方案。通常,明智的企业会从通用解决方案开始逐渐转向专业解决方案,并且知道应该使用专业的解决方案来解决哪些问题,比如Hadoop在批处理方面很牛,但它并不是一个很好的通用ETL平台.....
PostgreSQL与Hadoop对比
企业应该清楚,构建Hadoop是为了同时解决大数据3V问题,这就意味着,如果你只存在某一方面的困扰,那么构建Hadoop的成本就显得过高了。PostgreSQL和其他关系型数据解决方案为数据提供了非常好的保证,因为它们强化了多样性,在写入时强制使用模式,如果违反该模式,则会引发错误。Hadoop在读取时强制执行模式,因此可以在存储数据后再尝试读取数据,这对于大量非结构化数据很有帮助。
如果仅仅面临容量和速度问题,首先要查看的解决方案应该是Postgres-XL或者类似的集群解决方案,但这些方案确实需要良好的数据分区标准。如果数据集高度相关,这可能不是一个好的解决方案,因为跨节点连接是昂贵的。此外,这些方案也不适用于小型数据集,因为搭建这些解决方案的复杂性和成本也不是很低。
Storm与Hadoop对比
Storm和Hadoop的主攻方向完全不同,Storm的主工程师Nathan Marz曾表示, Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理就好比Hadoop之于批处理。如果你习惯于用Hadoop代指整个Hadoop生态,那你可能会把Storm也划分在生态圈之中。但在企业选择解决方案时,还是应该将狭义上的Hadoop与Storm进行一些对比。
根据Hadoop官网的说法,“Apache Hadoop是一个框架,允许使用简单的编程模型在整个计算机集群上分布式处理大型数据集,它可以从单个服务器扩展到数千台机器,本地计算和存储,而不是依靠硬件来提供高可用性,该框架本身旨在检测和处理应用层的故障,最大的优势是批处理。
Apache Storm是一个分布式实时计算系统,本身不会在典型的Hadoop集群上运行,可以与任何编程语言一起工作。Storm是一个任务并行连续计算引擎,使用Apache ZooKeeper和主/从工作进程,协调拓扑,主机和工作者状态,保证信息语义。无论如何,Storm必定还是可以从HDFS文件消费或者从文件写入到HDFS的,Storm可以与任何队列或数据库系统(即RDBMS,NOSQL)集成。
根据官网介绍,Storm的应用非常广泛,比如实时分析、在线机器学习、连续计算、分布式RPC、ETL等。Storm的速度很快—每个节点每秒钟可处理超过一百万个元组,具有可扩展性和容错性,可确保数据得到处理并且易于设置和操作。在消耗资源相同的情况下,一般来说Storm的延时低于MapReduce,但是吞吐也低于MapReduce。Storm是典型的流计算系统,MapReduce是典型的批处理系统。下表对比了Storm和Hadoop进行数据处理时的各项指标:
如果你正在因为大数据的3V问题烦恼,Hadoop是最理想的解决方案,如果你只需要解决其中之一,你可以尝试一些其他解决方案,因为此时搭建Hadoop生态的性价比会大打折扣。如果数据量较少,比如国外企业的数据量整体上少于国内,没必要使用Hadoop处理,因为无法发挥出Hadoop的全部价值。