⼤数据处理框架 ⼤数据处理框架 说起⼤数据处理啊,⼀切都起源于Google公司的经典论⽂。在当时(2000年左右),由于⽹页数量急剧增加,Google公司内部平时要编写 很多的程序来处理⼤量的原始数据:爬⾍爬到的⽹页、⽹页请求⽇志;计算各种类型的派⽣数据:倒排索引、⽹页的各种图结构等等。这些 计算在概念上很容易理解,但由于输⼊数据量很⼤,单机难以处理。所以需要利⽤分布式的⽅式完成计算,并且需要考虑如何进⾏并⾏计 算、分配数据和处理失败等等问题。 针对这些复杂的问题,Google决定设计⼀套抽象模型来执⾏这些简单计算,并隐藏并发、容错、数据分布和均衡负载等⽅⾯的细节。受到 Lisp和其它函数式编程语⾔map、reduce思想的启发,论⽂的作者意识到许多计算都涉及对每条数据执⾏map操作,得到⼀批中间key/value 对,然后利⽤reduce操作合并那些key值相同的k-v对。这种模型能很容易实现⼤规模并⾏计算。 事实上,与很多⼈理解不同的是,MapReduce对⼤数据计算的最⼤贡献,其实并不是它名字直观显⽰的Map和Reduce思想(正如上⽂提到 的,Map和Reduce思想在Lisp等函数式编程语⾔中很早就存在了),⽽是这个计算框架可以运⾏在⼀群廉价的PC机上。MapReduce的伟⼤ 之处在于给⼤众们普及了⼯业界对于⼤数据计算的理解:它提供了良好的横向扩展性和容错处理机制,⾄此⼤数据计算由集中式过渡⾄分布 式。以前,想对更多的数据进⾏计算就要造更快的计算机,⽽现在只需要添加计算节点。 话说当年的Google有三宝:MapReduce、GFS和BigTable。但Google三宝虽好,寻常百姓想⽤却⽤不上,原因很简单:它们都不开源。于 是Hadoop应运⽽⽣,初代Hadoop的MapReduce和HDFS即为Google的MapReduce和GFS的开源实现(另⼀宝BigTable的开源实现是同样 ⼤名⿍⿍的HBase)。⾃此,⼤数据处理框架的历史⼤幕正式的缓缓拉开。 今天我们要讲的数据处理框架,按照对所处理的数据形式和得到结果的时效性分类,可以分为两类: 1.批处理系统 2.流处理系统 1批处理系统 批处理的过程包括将任务分解为较⼩的任务,分别在集群中的每个计算机上进⾏计算,根据中间结果重新组合数据,然后计算和组合最终结 果。所以批处理系统主要操作⼤量的、静态的数据,并且等到全部处理完成后才能得到返回的结果。 由于批处理系统在处理海量的持久数据⽅⾯表现出⾊,所以它通常被⽤来处理历史数据,很多OLAP(在线分析处理)系统的底层计算框架 就是使⽤的批处理系统。但是由于海量数据的处理需要耗费很多时间,所以批处理系统⼀般不适合⽤于对延时要求较⾼的场景。 然后批处理系统的代表就是Hadoop。Hadoop是⾸个在开源社区获得极⼤关注的⼤数据处理框架,在很长⼀段时间内,它⼏乎可以作为⼤数 据技术的代名词。 在2.0版本以后,Hadoop由以下组件组成: 1.分布式⽂件系统HDFS 2.资源管理器YARN 3.MapReduce 关于它们,AI菌已经在之前的⽂章讨论过了。没有看过的朋友可以去翻⼀翻。 ⽽且Hadoop不断发展完善,还集成了众多优秀的产品如⾮关系数据库HBase、数据仓库Hive、数据处理⼯具Sqoop、机器学习算法库 Mahout、⼀致性服务软件ZooKeeper、管理⼯具Ambari等,形成了相对完整的⽣态圈和分布式计算事实上的标准。 2流处理系统 流处理系统好理解,那什么是流处理系统呢?⼩学的时候我们都做过这么⼀道数学题:⼀个⽔池有⼀个进⽔管和⼀个出⽔管,只打开进⽔管 x个⼩时充满⽔,只打开出⽔管y个⼩时流光⽔,那么同时打开进⽔管和出⽔管,⽔池多长时间充满⽔? 流处理系统就相当于这个⽔池,把流进来的⽔(数据)进⾏加⼯,⽐如加盐让它变成盐⽔,然后再把加⼯过的⽔(数据)从出⽔管放出去。 这样,数据就像⽔流⼀样永不停⽌,⽽且在⽔池中就被处理过了。所以,这种处理永不停⽌的接⼊数据的系统就叫做流处理系统。 流处理系统与批处理系统所处理的数据不同之处在于,流处理系统并不对已经存在的数据集进⾏操作,⽽是对从外部系统接⼊的的数据进⾏ 处理。流处理系统可以分为两种: 逐项处理:每次处理⼀条数据,是真正意义上的流处理。 微批处理:这种处理⽅式把⼀⼩段时间内的数据当作⼀个微批次,对这个微批次内的数据进⾏处理。 不论是哪种处理⽅式,其实时性都要远远好于批处理系统。因此,流处理系统⾮常适合应⽤于对实时性要求较⾼的场景,⽐如⽇志分析,设 备监控、⽹站实时流量变化等等。 然后流处理系统的代表就是Apache Storm与Apache Samza了。 Apache Storm是⼀种侧重于低延迟的流处理框架,它可以处理海量的接⼊数据,以近实时⽅式处理
- 粉丝: 168
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助