数据计算中间件技术综述

可阅读原文:http://c.raqsoft.com.cn/article/1537237515333?r=alice

## 传统企业大数据架构的问题

  上图是大家都很熟悉的基于 Hadoop 体系的开源大数据架构图。在这个架构中,大致可以分成三层。最下一层是数据采集,通常会采用 kafka 或者 Flume 将 web 日志通过消息队列传送到存储层或者计算层。对于数据存储,目前 Apache 社区提供了多种存储引擎的选择,除了传统的 HDFS 文件和 HBase,还提供了 Kudu、ORC、Parquet 等列式存储,大家可以根据自身的需求特点进行选择。在这之上的数据计算层,选择就更丰富了。如果你想做实时推荐,可以采用 Storm、Spark Streaming 这样的流计算引擎对 Kafka 或者 Flume 传递上来的数据进行实时处理。如果你想进行客户画像,可以使用 Mahout 或者 Spark LMlib 里的机器学习算法进行分类。如果你想查看当天的销售排名,可以使用 HBase、Impala 或者 Presto。如果想对某些商品的销售进行比较复杂的漏斗分析,则使用 HIVE 或者 Spark 可能会更合适。

当然,大家根据各自的需求,可以叠加上 Redistribution 缓存,ElasticSearch 全文本搜索,或者像 MongoDB、Cassandra 这些产品。所以,大家会发现,其实在大数据计算方面,并没有什么特别成熟的架构,大家所做的大多都是针对一些问题点不断进行创新、改进和修正,再把几个产品想办法整合起来。这是因为做为一个新兴的领域,大数据计算方面的技术积累还很不够,还有很多难点没有攻克,还处在一个不断成长的阶段。而在大数据技术开拓创新上,互联网企业是引领潮流的。目前的大量收到追捧的大数据技术产品,大多都是由互联网企业。做为大数据技术的基石的 Hadoop 的基本思想基于 Google 的 Map/Reduce 和 Google File System,Presto 来自于 Facebook,贡献了 Impala 和 Flume 的 Cloudera 虽然不算一家互联网公司,但是带有很强的互联网基因。国内的 BAT 等互联网企业也对大数据开源社区做出了很大贡献。

但这也带来了一个问题,那就是这些大数据产品即架构都是针对互联网企业的因为需求与场景设计的。虽然这些需求和场景具有一定的普适性,但是在企业的整体 IT 架构上,传统企业与互联网企业有着很大的不同。

首先,传统企业和互联网企业在专业技术人员配备上有很大的不同。互联网企业聚集了大量的高水平计算机软件设计开发维护人员,这是绝大多数传统企业所不具备的。这里的差别一个是在量。传统企业中,一个拥有几百个技术人员的信息中心已经是一个相当大的团队了;而互联网企业的技术人员往往都有数千人的规模,像 BAT 这样的企业,开发维护技术人员都达到了上万人。另一个差别则在质上。互联网企业中通常会有一支专门的平台支撑专家团队,有能力自行及时修复开源产品中的 BUG,保障系统服务的稳定运行。而由于薪资等方面的原因,传统企业往往很难招到掌握开源产品核心技术的顶级开发者。这给开源产品的使用带来的隐患。一旦开源产品出现的 BUG 等问题,无人可以及时应对,将会给企业的生产服务造成很大的损失。

其次,传统企业的 IT 架构也和互联网企业有很大不同。互联网企业的历史相对较短,而且具有以开源软件为基础自行研发应用的基因,各企业自己对各种技术细节业务逻辑都非常了解,大数据系统甚至是和业务系统紧密联系的,不会有太多的集成性的问题。而传统企业往往历史较长,在 IT 建设走过多种技术路线,往往有大量的架构不统一的遗留系统。很多企业过去曾经建设过企业数据仓库,现在又开始建设大数据平台,这之间又没有特别严格的划分,不仅造成很多功能的重叠,更是造成了很多的数据冗余,很多数据会在不同的系统中保留多份拷贝,甚至不少企业需要频繁地把同一份数据在不同的系统中来回传输。这就带来了很严重的集成性问题。

第三,相对于互联网企业,大多数传统企业的数据量其实并没有那么大。相比较 Google 每秒超 10 万次的搜索,支付宝双十一每秒超过 25 万笔交易,绝大多数的传统企业的数据量真没那么大,可能还不至于成为不可攻克的难题。对于这样的数据量,可能传统的技术就可以解决,而不一定非要用到 Hadoop 这样重的架构。而为了挖掘出这些数据中的价值,多源异构的复杂环境可能是一个更加麻烦的问题。

他山之石可以攻玉

有的时候,在考虑一个问题的解决办法时,从类似问题的解决办法中获得一些借鉴是一个不错的开始。

其实,在交易类应用领域,也曾出现过类似的情况。企业中运行这各种各样的应用系统,这些应用由不同的开发者开发,技术路线、体系架构、遵循的标准都相差甚远,造成了一个个信息孤岛,一些需要共享的信息,不能在系统之间交换,造成很多信息的滞后和数据不一致现象。

那么后来这些问题解决了吗?又是怎么解决的?————有人发明了中间件。

什么是中间件,并没有人对它做出一个科学的定义。总体来说,是一个为了解决分布异构问题而提出的一个概念它位于平台 (硬件和操作系统) 和应用之间,为双方或者多方提供的通用服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。 解决多源异构并不是中间件出现的唯一原因,但是是它解决的异构重要问题,一般来说,中间件具有以下特点:

1.    满足大量应用的需要
2.    运行于多种硬件和 OS 平台
3.    支持分布计算,提供跨网络、硬件和 OS 平台的透明性的应用或服务的交互
4.    支持标准的协议
5.    支持标准的接口

也就是说,中间件的主要作用,就是建立跨平台的标准化交互接口。按照应用场景的不同,中间件开源分为网络通信中间件、RPC 中间件、消息中间件、交易中间件、Web 中间件、安全中间件等。这些不同的中间件在实际功能与实现方式上各不相同,在各自的领域中发挥着不同的作用,但是都满足以上列出的特点,都具有上述描述的基本功能。

那么,为什么不考虑在数据应用领域也采用中间件技术呢?

 

后续数据计算中间件各项评估可阅读原文:http://c.raqsoft.com.cn/article/1537237515333?r=alice

作者:WeiWei
来源:乾学院
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值