志在指尖
用双手敲打未来

大数据的技术生态?

大数据自身是个很广泛的概念,Hadoop生态圈(或者泛生态圈)根本上都是为了处置超越单机尺度的数据处置而降生的。你能够把它比作一个厨房所以需求的各种工具。锅碗瓢盆,各有各的用途,相互之间又有重合。你能够用汤锅直接当碗吃饭喝汤,你能够用小刀或者刨子去皮。但是每个工具有本人的特性,固然奇异的组合也能工作,但是一定是最佳选择。大数据的技术生态?
大数据的技术生态?Hadoop、Hive、Spark之间是什么关系?
大数据,首先你要能存的下大数据。
传统的文件系统是单机的,不能横跨不同的机器。HDFS(HadoopDistributedFileSystem)的设计实质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比方你说我要获取/hdfs/tmp/file1的数据,你援用的是一个文件途径,但是实践的数据寄存在很多不同的机器上。你作为用户,不需求晓得这些,就好比在单机上你不关怀文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。
在这里还是要引荐下我本人建的大数据学习交流群:199427210,群里都是学大数据开发的,假如你正在学习大数据,小编欢送你参加,大家都是软件开发党,不定期分享干货(只要大数据软件开发相关的),包括我本人整理的一份最新的大数据进阶材料和高级开发教程,欢送进阶中和进想深化大数据的小同伴参加。
存的下数据之后,你就开端思索怎样处置数据。固然HDFS能够为你整体管理不同机器上的数据,但是这些数据太大了。一台机器读取成T上P的数据(很大的数据哦,比方整个东京热有史以来一切高清电影的大小以至更大),一台机器渐渐跑或许需求好几天以至好几周。关于很多公司来说,单机处置是不可忍耐的,比方微博要更新24小时热博,它必需在24小时之内跑完这些处置。那么我假如要用很多台机器处置,我就面临了如何分配工作,假如一台机器挂了如何重新启动相应的任务,机器之间如何相互通讯交流数据以完成复杂的计算等等。这就是MapReduce/Tez/Spark的功用。MapReduce是第一代计算引擎,Tez和Spark是第二代。MapReduce的设计,采用了很简化的计算模型,只要Map和Reduce两个计算过程(中间用Shuffle串联),用这个模型,曾经能够处置大数据范畴很大一局部问题了。
那什么是Map什么是Reduce?
思索假如你要统计一个宏大的文本文件存储在相似HDFS上,你想要晓得这个文本里各个词的呈现频率。你启动了一个MapReduce程序。Map阶段,几百台机器同时读取这个文件的各个局部,分别把各自读到的局部分别统计出词频,产生相似
(hello,12100次),(world,15214次)等等这样的Pair(我这里把Map和Combine放在一同说以便简化);这几百台机器各自都产生了如上的汇合,然后又有几百台机器启动Reduce处置。Reducer机器A将从Mapper机器收到一切以A开头的统计结果,机器B将收到B开头的词汇统计结果(当然实践上不会真的以字母开头做根据,而是用函数产生Hash值以防止数据串化。由于相似X开头的词肯定比其他要少得多,而你不希望数据处置各个机器的工作量相差悬殊)。然后这些Reducer将再次汇总,(hello,12100)+(hello,12311)+(hello,345881)=(hello,370292)。每个Reducer都如上处置,你就得到了整个文件的词频结果。
这看似是个很简单的模型,但很多算法都能够用这个模型描绘了。
Map+Reduce的简单模型很黄很暴力,固然好用,但是很笨重。第二代的Tez和Spark除了内存Cache之类的新feature,实质上来说,是让Map/Reduce模型更通用,让Map和Reduce之间的界线更含糊,数据交流更灵敏,更少的磁盘读写,以便更便当地描绘复杂算法,获得更高的吞吐量。
有了MapReduce,Tez和Spark之后,程序员发现,MapReduce的程序写起来真费事。他们希望简化这个过程。这就好比你有了汇编言语,固然你简直什么都能干了,但是你还是觉得繁琐。你希望有个更高层更笼统的言语层来描绘算法和数据处置流程。于是就有了Pig和Hive。Pig是接近脚本方式去描绘MapReduce,Hive则用的是SQL。它们把脚本和SQL言语翻译成MapReduce程序,丢给计算引擎去计算,而你就从繁琐的MapReduce程序中摆脱出来,用更简单更直观的言语去写程序了。
有了Hive之后,人们发现SQL比照Java有宏大的优势。一个是它太容易写了。方才词频的东西,用SQL描绘就只要一两行,MapReduce写起来大约要几十上百行。而更重要的是,非计算机背景的用户终于感遭到了爱:我也会写SQL!于是数据剖析人员终于从哀求工程师帮助的困境摆脱出来,工程师也从写奇异的一次性的处置程序中摆脱出来。大家都开心了。Hive逐步生长成了大数据仓库的中心组件。以至很多公司的流水线作业集完整是用SQL描绘,由于易写易改,一看就懂,容易维护。
自从数据剖析人员开端用Hive剖析数据之后,它们发现,Hive在MapReduce上跑,真鸡巴慢!流水线作业集或许没啥关系,比方24小时更新的引荐,反正24小时内跑完就算了。但是数据剖析,人们总是希望能跑更快一些。比方我希望看过去一个小时内几人在充气娃娃页面驻足,分别停留了多久,关于一个巨型网站海量数据下,这个处置过程或许要花几非常钟以至很多小时。而这个剖析或许只是你万里长征的第一步,你还要看几人阅读了跳蛋几人看了拉赫曼尼诺夫的CD,以便跟老板汇报,我们的用户是猥琐男闷骚女更多还是文艺青年/少女更多。你无法忍耐等候的折磨,只能跟帅帅的工程师蝈蝈说,快,快,再快一点!
于是Impala,Presto,Drill降生了(当然还有无数非著名的交互SQL引擎,就不逐个罗列了)。三个系统的中心理念是,MapReduce引擎太慢,由于它太通用,太强壮,太激进,我们SQL需求更轻量,更激进地获取资源,更特地地对SQL做优化,而且不需求那么多容错性保证(由于系统出错了大不了重新启动任务,假如整个处置时间更短的话,比方几分钟之内)。这些系统让用户更快速地处置SQL任务,牺牲了通用性稳定性等特性。假如说MapReduce是大砍刀,砍啥都不怕,那上面三个就是剔骨刀,乖巧尖利,但是不能搞太大太硬的东西。
这些系统,说实话,不断没有到达人们希冀的盛行度。由于这时分又两个异类被造出来了。他们是HiveonTez/Spark和SparkSQL。它们的设计理念是,MapReduce慢,但是假如我用新一代通用计算引擎Tez或者Spark来跑SQL,那我就能跑的更快。而且用户不需求维护两套系统。这就好比方果你厨房小,人又懒,对吃的精密水平请求有限,那你能够买个电饭煲,能蒸能煲能烧,省了好多厨具。
上面的引见,根本就是一个数据仓库的构架了。底层HDFS,上面跑MapReduce/Tez/Spark,在上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。这处理了中低速数据处置的请求。
那假如我要更高速的处置呢?
假如我是一个相似微博的公司,我希望显现不是24小时热博,我想看一个不时变化的热播榜,更新延迟在一分钟之内,上面的手腕都将无法胜任。于是又一种计算模型被开发出来,这就是Streaming(流)计算。Storm是最盛行的流计算平台。流计算的思绪是,假如要到达更实时的更新,我何不在数据流进来的时分就处置了?比方还是词频统计的例子,我的数据流是一个一个的词,我就让他们一边流过我就一边开端统计了。流计算很牛逼,根本无延迟,但是它的短处是,不灵敏,你想要统计的东西必需预先晓得,毕竟数据流过就没了,你没算的东西就无法补算了。因而它是个很好的东西,但是无法替代上面数据仓库和批处置系统。
还有一个有些独立的模块是KVStore,比方Cassandra,HBase,MongoDB以及很多很多很多很多其他的(多到无法想象)。所以KVStore就是说,我有一堆键值,我能很快速滴获取与这个Key绑定的数据。比方我用身份证号,能取到你的身份数据。这个动作用MapReduce也能完成,但是很可能要扫描整个数据集。而KVStore专用来处置这个操作,一切存和取都特地为此优化了。从几个P的数据中查找一个身份证号,或许只需零点几秒。这让大数据公司的一些特地操作被大大优化了。比方我网页上有个依据订单号查找订单内容的页面,而整个网站的订单数量无法单机数据库存储,我就会思索用KVStore来存。KVStore的理念是,根本无法处置复杂的计算,大多没法JOIN,或许没法聚合,没有强分歧性保证(不同数据散布在不同机器上,你每次读取或许会读到不同的结果,也无法处置相似银行转账那样的强分歧性请求的操作)。但是丫就是快。极快。
每个不同的KVStore设计都有不同取舍,有些更快,有些容量更高,有些能够支持更复杂的操作。必有一款合适你。
除此之外,还有一些更特制的系统/组件,比方Mahout是散布式机器学习库,Protobuf是数据交流的编码和库,ZooKeeper是高分歧性的散布存取协同系统,等等。
有了这么多乌七八糟的工具,都在同一个集群上运转,大家需求相互尊重有序工作。所以另外一个重要组件是,调度系统。如今最盛行的是Yarn。你能够把他看作中央管理,好比你妈在厨房监工,哎,你妹妹切菜切完了,你能够把刀拿去杀鸡了。只需大家都服从你妈分配,那大家都能高兴滴烧菜。
你能够以为,大数据生态圈就是一个厨房工具生态圈。为了做不同的菜,中国菜,日本菜,法国菜,你需求各种不同的工具。而且客人的需求正在复杂化,你的厨具不时被创造,也没有一个万用的厨具能够处置一切状况,因而它会变的越来越复杂。

未经允许不得转载:IT技术网站 » 大数据的技术生态?
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载