技术解读:Hadoop、PostgreSQL 与 Storm 全面比较

阅读 841

        在 “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 的全部价值。

文章来源:网络 版权归原作者所有,如涉及知识产权问题,请权利人联系我们,我们将立即处理.
标签:
专栏:   Java架构
此情可待追忆
文章 15 获得 0个赞 共 0个粉丝

推荐阅读 更多精彩内容

  •   狗狗难产对于没有接产经验的宠主来说,只有及时将狗狗送去宠物医院生产才是*保险的。如果发现狗狗难产超过2-4个小时,没有生出小狗,建议马上带狗狗去宠物医院观察。如果是间隔一晚上没有生出来小狗,*好带
    田井中律 田井中律 阅读 1604
  •   狗狗配了2次怀孕按哪次算这个是说不准的,一般来说,母狗的预产期是63天,但只是一个平均数,产期大概是在第59到第65日发生,早过第58日出生的小狗会较难存活。主人可以在记录下狗狗每次配种的时间,然
    空空姬 空空姬 阅读 1671
  •   中华田园犬产前征兆有哪些?大家是不是也想了解中华田园犬什么时候快生产了呢?那么中华田园犬产前准备什么呢?下面为大家介绍。  中华田园犬产前征兆有哪些?  生产前1-2天中华田园犬阴部会有粘液流出,
    空空姬 空空姬 阅读 1304
  •   圣伯纳犬绝育好不好?很多的宠物狗家长,在狗狗成年之后都会给它们做绝育手术,当然也有些家长会反对。那么下面来告诉大家圣伯纳犬绝育的优缺点。  圣伯纳犬绝育好不好?  关于圣伯纳犬是否应该绝育的问题,
    上杉夏香 上杉夏香 阅读 9205
  •   银狐犬什么时候绝育好?  传统的*适合绝育的年龄段是6个月到9个月大的时候。但是*佳的年龄对于不同个体是不一样的,但无论如何都不要等到年龄过大的时候再绝育。  银狐犬绝育优缺点:  1、如果在手术
  •   史毕诺犬产后护理方法:  1.将史毕诺犬母犬的外阴部、尾部及乳房等部位用温水洗净、擦干。及时更换被污染的褥垫及注意保温。  2.史毕诺犬产后会因保护仔犬而变得很凶猛,刚分娩过的母犬,要保持8—24
  •   美国水猎犬产后护理方法:  1.美国水猎犬妈妈分娩结束以后,应该给它一些葡萄糖水、牛奶和淡盐水。产后1-2天,应该供应充足的饮水和少量的肉食,3-4天应逐渐增加肉食的量。5-6天除了增加肉食外,每
  •   狗狗流产的症状  1、由布鲁氏菌引起的流产,多发生于妊娠第30~57天;黄体形成不全性流产,常见于妊娠第2-5周;而黄体早期退化性流产,多见于妊娠第6~7周。所有流产的情况,80%母犬多于妊娠第4
    血叶洛莉兰 血叶洛莉兰 阅读 1449
  •   博美怎样配狗?配狗时*好选择两只狗狗都熟悉的地方,因为陌生的环境会让狗狗紧张,而不愿配种;配种当天,先让博美放松心情,再放配偶出来,在交配时,两只狗狗会尾部相连,期间要多安慰鼓励母犬,全程大概会持
    上杉夏香 上杉夏香 阅读 1293
  •   柯基狗几个月发情?柯基狗母犬*次发情大约在出生后6-10个月;柯基狗成年后每年会发情两次,一般是在春季3-5月一次,秋季9-11月再次发情;发情的主要表现是柯基狗变得兴奋躁动,排尿频繁,阴门流出红