大数据这个概念本身就太大而且太宽,如果一定要严格定义是非常困难的一件事,不过Hadoop生态圈或者由其延伸的泛生态系统,基本上都是为了处理大量数据诞生的——一般而言,这种数据依赖单机很难完成。

这个圈子里的工具,就像是我们厨房里的各种厨具——各自都有不同的用处,但也有一部分功能重合,比如盆和豌都可以用来喝汤,削皮刀和菜刀都可以用来去皮。

但是,盆用来喝汤未免奇怪,削皮刀切菜也是万万不能。即使你强行要创造一些奇异的组合,即使最终完成工作,却不一定是最快、最好的选择。

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

对传统的单机文件系统来说,横跨不同机器几乎是不可能完成的任务。而通过HDFS(Hadoop Distributed FileSystem),你可以通过横跨上千甚至上万台机器来完成大量数据得存储,同时这些数据全部都能归属在同一个文件系统之下。你可以通过引用一个文件路径获取存储在许多台机器上的数据文件。作为一个使用者,你完全不用去计较文件具体存储的位置,这个文件系统会为你搞定一切。

我们当然不是为了搜集数据而进行存储,我们还要用数据做一些事情。虽然我们通过HDFS存下了横跨上千台机器的数据,我们依然面临一个问题——这些数据过于庞大,如果只交给一台机器处理,我们可能得等上几周甚至更长。这些可能以T甚至于P来计量单位的数据,只靠一台机器真的能跑到地老天荒。

对于很多公司,这是无法接受的事情——我们都知道有各种热度排行,加入一台机器处理这个数据、计算热度、进行发布,可能一周之后出来结果,但大家早已经不关心了。

所以使用大量机器进行处理是必然的选择。在大量机器处理过程中,必须处理一些事务:任务分配、紧急情况处理、信息互通等等,这时候必须引入MapReduce / Tez / Spark 。这其中,前者可以成为计算引擎的第一代产品,后两者则是经过优化后的下一代。MapReduce采用了非常简单的计算模型设计,可以说只用了两个计算的处理过程,但是这个工具已经足够应付大部分的大数据工作了。

什么是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。这解决了中低速数据处理的要求。

如何更高速的处理?

考虑一下,如果我需要更高的处理速度,我要展示的数据不再是24小时甚至更长尺度的数据报告,而是一个随时更新、随时变化的榜单,这个榜单的更新最好在1分钟甚至更短,那么上述手段就无发满足我的需要。

这时候,另一个工具即将登场——Streaming计算模型。这种模型通常被称为流计算模型,使用最多的平台式Storm。这种模型会在数据开始搜集的时候进行计算,而不是在搜集完成后——你每获得一个数据都会加入到实时计算中成为最终成果的一份子。这种方式处理的数据基本不会存在延迟问题。

但它并不是尽善尽美。在使用流计算之前,我们必须预先找到统计的核心,因为一段数据经过处理就会放在一边——正如流过的河水无法倒回一样——未能提前找到统计核心的时候数据就被浪费掉了。这也是流计算无法完全替代我们前文讲过的工具的原因。

另一个比较独立的工具是KV Store,类似于Cassandra,HBase,MongoDB等等非常非常多的其他东西。他是什么意思呢,假如你有一堆键值,你就能通过某种方式快速获得键值背后的一大堆数据。就好像你去银行插入银行卡就能取到钱一样。

假如你特立独行,使用MapReduce完成也没有任何问题,但是由此带来的不便就是扫描数据库的时间会很长。如果我们采用了KV Store,这种专门为了键值存取而设定的工具,那这个速度就会非常快。这个工具的核心就是快,其他的事情他一概不管,就是要快。

除此之外,还有一些更特制的系统/组件,比如Mahout是分布式机器学习库,Protobuf是数据交换的编码和库,ZooKeeper是高一致性的分布存取协同系统,等等。

当你拿到这么多工具(甚至多到连很多东西的名字都写不熟练)之后,你把他们拼装在一起,如果没有一个完美的安排大家就会互相打架,造成效率低下,所以这个时候还要引入一个调度系统,专门给大家安排任务、安排时间,使系统能够良好运转。

作者:Xiaoyu Ma

链接:https://www.zhihu.com/question/27974418/answer/38965760

云计算免费课程火热抢先中,5天运维课程免费听,点击文末“阅读原文”即可免费听课!当然也有其他IT课程免费听(Java、前端、大数据、Python、设计、C++、嵌入式、网络营销),后台回复“姓名+联系方式+所在+课程名称”也可申请其他免费课程,火速抢先~~~~

PS:记得查收小编送你的免费大礼包呦~

福利 | 一万多套PPT模板等你免费来拿!无条件领取!

免费送 | 1000多套简历模板免费拿,附赠简历制作教程!

免费领 | 《Shell脚本 100例》电子书免费拿,运维必备干货~

▼▼点击【阅读原文】,免费听5天Linux运维干货分享课,火热开讲中,速来抢!

大数据生态圈到底是一个什么概念?相关推荐

  1. 大数据生态到底是一个什么概念?

    大数据这个概念本身就太大而且太宽,如果一定要严格定义是非常困难的一件事,不过Hadoop生态圈或者由其延伸的泛生态系统,基本上都是为了处理大量数据诞生的--一般而言,这种数据依赖单机很难完成. 这个圈 ...

  2. 盘点大数据生态圈,那些繁花似锦的开源项目

     盘点大数据生态圈,那些繁花似锦的开源项目 发表于12小时前| 2466次阅读| 来源CSDN| 6 条评论| 作者仲浩 大数据开源HadoopSpark width="22" ...

  3. Data - 大数据生态圈

    本文内容来自网络,对原文内容和格式做了细微调整,并配图以便阅读理解. 如想查看初始信息,请点击原文. 00 引言 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单 ...

  4. 大数据产业到底是机遇还是陷阱?

    大数据日渐成为IT信息产业中最具潜力的蓝海,它正以一种革命风暴的姿态闯入人们视野,其技术和市场正在快速发展.有人说中国大数据产业有炒作"过热"之嫌,也有人认为大数据投资正当时,大数 ...

  5. 大数据生态圈常用组件(二):概括介绍、功能特性、适用场景

    三更灯火五更鸡,正是男儿读书时. 小编整理了一些常用的大数据组件,使用场景及功能特性,希望对后浪有所帮助. 分类 名称 简介 功能特点 使用场景 大数据存储 HDFS HDFS是一个分布式的文件系统, ...

  6. 大数据行业到底有多少种工作岗位,各自的技能需求是什么?

    大数据的技术是一个技术群落,想全部学习短期内是不现实的,那么我们怎么样科学的有逻辑有规划的来学习,怎么进行大数据的入门学习呢?我们得了解大数据行业里,有哪些岗位,我们直接从工作岗位的技能需求来倒推我们 ...

  7. 一篇文章带你了解大数据生态圈---大数据组件图谱

    小编一篇文章带你了解大数据生态圈-大数据组件图谱 转载地址:http://blog.csdn.net/u010039929/article/details/70157376 文章目录 小编一篇文章带你 ...

  8. 未来大数据精准营销构想 一个合格的DMP平台要具备哪些条件?

    随着互联网技术的发展,大数据已经不是一个概念,数据商业化在近几年真正影响着行业的发展和人们的生活的方方面面,在数据技术的驱动下,数字营销已经能够帮组企业更广泛更精准的覆盖人群,DMP 这个词对于广告主 ...

  9. 王叁寿:只有数据源服务商才有资格构建大数据生态圈

    王叁寿认为,如同在大数据价值变现过程中,数据源始终占有绝对重心一样(王叁寿图),未来只有数据源服务商,才有资格构建大数据生态圈. 数据源服务商产业链核心位置,无可替代 一个完整的大数据生态圈,由数据源 ...

最新文章

  1. Golang init函数执行顺序
  2. CentOS安装 Go 环境
  3. python将页面保存为html_python – :将html保存为文本
  4. python动态表情包下载_Python从eif中导出qq表情的gif图片
  5. 485串口测试工具软件下载_串口调试助手详细讲解(结合实操),通讯问题不再是问题...
  6. 让Minimal开源UI组件支持中文
  7. Spring读取xml配置文件的原理与实现
  8. java web消息机制_JavaWeb BeanUtils信息类原理详解
  9. python os.path.splitext()的用法_Python中的os.path路径模块中的操作方法总结
  10. 大型网站技术架构(五)--网站高可用架构
  11. 腾讯云短信封装(v3版本)
  12. 软件项目管理中的需求管理要以用户为中心
  13. 阿里P8大牛匠心独运,用图解的方式让繁杂的计算机网络一目了然
  14. 修改pc端浏览器的滚动条的默认样式
  15. 使用C语言来访问ARM寄存器的语法
  16. 玩客云5.9千兆固件、docker、青龙面板
  17. 云计算系统测试之技术概念
  18. 把通过高德静态地图API获取的地图图片,拼接成一张大地图图片
  19. SQL 登录注入脚本_深圳嘉华学校之SQL 注入
  20. 2012浙大计算机考研分数线,浙江大学2012年考研复试分数线公布

热门文章

  1. oracle发票验证,通过使用Oracle SQL脚本进行计算(总发票)的多个表的更新记录...
  2. 友情提示:破坏计算机信息系统罪
  3. WIFI接入之supplicant 四次握手流程
  4. 监听手机返回键或浏览器后退键并自定义跳转地址
  5. c#编程基础:装箱与拆箱
  6. DevOps八荣八耻
  7. 矿业变革进行中,北斗技术赋能智慧矿山
  8. 华为FreeBuds 5i耳机怎么戴久了耳朵胀痛?需要更换耳套吗?
  9. 北京soul_提问艺术家:北京《Soul i-D》展
  10. Vue源码分析-手写Vue(简易版)