- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一文看懂大数据的技术生态圈
大数据本身是个很宽泛的概念,Hadoop 生态圈(或者泛生态圈)基本上都是
为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需
要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅
直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特
性,虽然奇怪的组合也能工作,但是未必是最佳选择。
大数据,首先你要能存的下大数据。
传统的文件系统是单机的,不能横跨不同的机器。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 有巨大的优势。一个是它太容易写
了。刚才词
文档评论(0)