你好,游客 登录
背景:
阅读新闻

Hadoop周边生态圈

[日期:2014-11-28] 来源: 徐浩然的博客  作者: 徐浩然 [字体: ]

  首先hadoop有两个含义,一个是广义相对论,一个是狭义相对论。狭义的就是指Hadoop这个分布式任务平台,不包括其他含义。如果从广相的角度来说,Hadoop不仅仅指的是这个分布式任务平台,还包括建立在Hadoop平台上的一系列软件,比如HDFS,Hive,HBase等等。这里面还有个特别的地方,HDFS从目前来看,已经超出了组件的概念,可以认为是等同于Hadoop平台存在的一个框架了。基本上只要涉及到大数据和云计算的,都离不开HDFS。

  HDFS是一个分布式的文件系统,实现了分布式计算框架里最重要的一环,资源的跨物理机分布。任何分布式系统都需要解决一个问题,就是资源如何分布式存放。这里面涉及到高效的读写,多副本复制的安全措施,CRC校验等等确保文件不出错,还要考虑到节点之间的高可用等等问题。最后,还要尽可能的透明,尽可能的简单易用。整体来说,还是个很复杂的工程。HDFS以实践的方式证明了自己的高效和易用,以至于在喜欢出同类项的开源世界都没有同类项目存在。可以负责任的说,肯定有人也想做出类似于HDFS一样的东西来,但是出于种种原因,不管是技术难度还是时间问题,都没有能够匹敌的项目。

  在Hadoop和HDFS的基础上,最常用的两个组件分别是Hive和HBase。可以简单的认为,Hive是离线分析引擎,使用类似SQL的 DSL来操作数据。Hive最擅长的是大数据分析,类似于Oracle的OLAP。HBase是一个面向高并发事务处理的框架,类似于OLTP。由于 HBase是列式存储,在做部分运算时效率要远超Oracle。现在陆陆续续有人在基于HBase开发一些使用SQL做DSL的应用,比如说CDH的 Impala。这部分框架还不是很成熟,对SQL92的支持也不是很完备。不过根据一些路线图来看,在不远的将来,会有完整支持SQL92的版本出现的。毕竟支持SQL92只是时间问题,并没有技术鸿沟。

  接下来,我们来聊聊任务处理和调度部分的框架。最早也最原始的,是大名鼎鼎的三驾马车之一的MapReduce框架。MR从HDFS上读取文件作为数据来源,在经过map和(或)reduce阶段后,把计算结果提交给用户。MR的中间结果,会以文件的方式存放在HDFS上,简称落盘。这种处理方式,可想而知的,处理效率不会很好。毕竟分布式磁盘读写的效率取决于每一块磁盘的效率,还要扣除软件的消耗,整体效率不会很好。

  正是由于这一系列原因,伯克利的高人们揭竿而起,创造了Spark内存处理框架。Spark和MR最大的不同,在于Spark的处理过程数据是不落盘的,全部在内存输出。此外,Spark不但可以按照传统的方式接受数据,还可以读取HBase上的数据,以及MQ里的数据。虽然说MR也可以做,但是自己做和原生自带的契合度,是不可同日而语的。

  Spark对大数据贡献最大的部分,是他真正实现了流计算,Streaming。举个例子,我们需要进行实时数据分析,一旦有超速车辆,立刻扣分。如果不使用流计算,那么大致上我们需要不断扫描接口或者MQ,在触发以后生成MR任务或者Spark任务,计算完毕以后再关闭。好麻烦。

  但是有了Streaming就不一样了,我们可以把数据丢进Kafka队列,Spark会帮我们做好剩下的事情。

  Spark还有机器学习包MLLib,还有SQL实现,未来还会有更多更多的东西。好吧我是Spark粉。只是最近事情太多,一直没完整的时间来做这个。





收藏 推荐 打印 | 录入: | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款