加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

大数据生态体系入门必看:Pig、Hive、Hadoop、Storm等白话解释

发布时间:2019-04-19 13:03:01 所属栏目:教程 来源:Xiaoyu Ma
导读:题目导读 大数据该怎样存储到硬盘上? 存储数据后,该思量如那里理赏罚数据 什么是Map?什么是Reduce? Hive、Pig、Storm技能是怎样发生的? 大数据自己是个很宽泛的观念,Hadoop生态圈(可能泛生态圈)根基上都是为了处理赏罚高出单机标准的数据处理赏罚而降生的。你可以把
副问题[/!--empirenews.page--]

题目导读

  1. 大数据该怎样存储到硬盘上?
  2. 存储数据后,该思量如那里理赏罚数据
  3. 什么是Map?什么是Reduce?
  4. Hive、Pig、Storm技能是怎样发生的?

大数据自己是个很宽泛的观念,Hadoop生态圈(可能泛生态圈)根基上都是为了处理赏罚高出单机标准的数据处理赏罚而降生的。你可以把它比作一个厨房以是必要的各类器材。锅碗瓢盆,各有各的用处,相互之间又有重合。你可以用汤锅直接当碗用饭喝汤,你可以用小刀可能刨子去皮。可是每个器材有本身的特征,固然稀疏的组合也能事变,可是未必是最佳选择。

大数据生态体系入门必看:Pig、Hive、Hadoop、Storm等白话解释

大数据,起首你要能存的下大数据。

传统的文件体系是单机的,不能凌驾差异的呆板。HDFS(Hadoop Distributed FileSystem)的计划本质上是为了大量的数据能凌驾成百上千台呆板,可是你看到的是一个文件体系而不是许多文件体系。好比你说我要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,可是现实的数据存放在许多差异的呆板上。你作为用户,不必要知道这些,就比如在单机上你不体谅文件分手在什么磁道什么扇区一样。HDFS为你打点这些数据。

存的下数据之后,你就开始思量怎么处理赏罚数据。

固然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是大砍刀,砍啥都不怕,那上面三个就是剔骨刀,乖巧尖利,可是不能搞太大太硬的对象。

这些体系,说真话,一向没有到达人们祈望的风行度。由于这时辰又两个异类被造出来了。他们是Hive on Tez / Spark和SparkSQL。它们的计划理念是,MapReduce慢,可是假如我用新一代通用计较引擎Tez可能Spark来跑SQL,那我就能跑的更快。并且用户不必要维护两套体系。这就好好比果你厨房小,人又懒,对吃的风雅水平要求有限,那你可以买个电饭煲,能蒸能煲能烧,省了许多几何厨具。

上面的先容,根基就是一个数据客栈的构架了。底层HDFS,上面跑MapReduce/Tez/Spark,在上面跑Hive,Pig。可能HDFS上直接跑Impala,Drill,Presto。这办理了中低速数据处理赏罚的要求。

那假如我要更高速的处理赏罚呢?

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读