文档章节

大数据技术

开心延年
 开心延年
发布于 2017/02/20 12:33
字数 3778
阅读 5
收藏 0

 

一、大数据技术的发展的三个阶段

1.存起来-等待机遇

      2009年开始BAT大力发展Hadoop技术,这个期间主要解决海量数据的存储与简单分析问题。

      既然大数据有价值,那么就先将数据存起来。要发挥数据的价值,我们先要有数据。

n网站浏览点击行为日志存储

n简单的PV与UV统计,满足基本需求

n更注重存储能力、集群规模、扩展能力

2.用起来-市场化

开始注重对大数据的整合,构成全角度的数据。

Hive技术的兴起,目前阿里腾讯的万台规模以上的集群80%以上的都是类HIVE任务。

n先将内部将数据用起来,发挥数据的价值。

n内部员工毕竟挖掘手段比较片面,进一步的将数据开放出去,让外部的用户参与进来,帮忙挖掘数据,双方均得利。

3.天下数据-唯快不破

数据的时效性与响应时间,变得越来越重要,谁的快,谁就能争夺商业上的先机。

Hadoop生态圈里的新技术 Spark、Impala、Kylin、Druid、Storm等技术,无不在快上下功夫。

n支付宝黄金策海量多维数据2秒即席分析

n腾讯广告系统,海量人群即席创建、即席广告推送

二、大数据技术生态圈

      大数据如今已经不再是什么新的名词,五中全会大数据上升为国家战略,BAT巨头早已布局多年,大数据时代已经真正来临,但我们真的准备好了么?

      大家都知道大数据中蕴含大量的数据价值,比如说淘宝与天猫的用户消费行为、滴滴打车可以知道用户每天去了哪里、用户在优酷上都看了那些视频、移动运营商的海量客户终端信息以及上网行为 、大型零售商每天的销售数据、订餐网上用户每天吃了什么,等等大数据金矿无处不在。但淘出来的才是金子,否则只是一堆土而已,即占用场地,还要花钱去保管和维护这堆土。

      大数据时代金矿已经有了,如何利用好这个金矿,某种意义上取决于我们手上的工具。熟话说“没有那金刚钻,就别揽瓷器活”,工具是否适用,直接决定着我们能否进行挖金,以及挖金的速度与效率。适合用铁锹还是挖掘机,对挖金来说有着质的不同。

      大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具,锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。

1.HDFS

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

传统的文件系统是单机的,不能横跨不同的机器。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如你说我要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。

2.Map Reduce

      存的下数据之后,你就开始考虑怎么处理数据。虽然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之间的界限更模糊,数据交换更灵活,更少的磁盘读写,以便更方便地描述复杂算法,取得更高的吞吐量。

 

3.Hive

      有了MapReduce、Tez和Spark之后,程序员发现,MapReduce的程序写起来真麻烦,希望能简化这个过程。这就好比你有了汇编语言,虽然你几乎什么都能干了,但是你还是觉得繁琐,希望有个更高层更抽象的语言层来描述算法和数据处理流程。于是就有了Pig和Hive,Pig是接近脚本方式去描述MapReduce,Hive则用的是SQL。它们把脚本和SQL语言翻译成MapReduce程序,丢给计算引擎去计算,而你就从繁琐的MapReduce程序中解脱出来,用更简单更直观的语言去写程序了。

 

      有了Hive之后,人们发现SQL对比Java有巨大的优势。一个是它太容易写了,刚才词频的东西,用SQL描述就只有一两行,而MapReduce写起来大约要几十上百行。更重要的是,非计算机背景的用户终于感受到了爱:我也会写SQL!于是数据分析人员终于从乞求工程师帮忙的窘境解脱出来,工程师也从写奇怪的一次性的处理程序中解脱出来,大家都开心了。Hive逐渐成长成了大数据仓库的核心组件。甚至很多公司的流水线作业集完全是用SQL描述,因为易写易改,一看就懂,容易维护。

4.Impala,Presto,Drill

自从数据分析人员开始用Hive分析数据之后,它们发现Hive在MapReduce上跑,慢如流水!流水线作业集也许没啥关系,比如24小时更新的推荐,反正24小时内跑完就算了。但是数据分析时,人们总是希望能跑更快一些。比如我希望看过去一个小时内多少人在天线宝宝页面驻足,分别停留了多久,对于一个巨型网站的海量数据,这个处理过程也许要花几十分钟甚至很多小时。而这个分析也许只是万里长征的第一步,你还要看多少人浏览了游戏,多少人看了拉赫曼尼诺夫的CD,以便跟老板汇报,我们的用户是宅男更多还是文艺青年/少女更多。你无法忍受等待的折磨,只能跟帅帅的工程师蝈蝈说,快,快,再快一点!

 

于是Impala,Presto,Drill诞生了(当然还有无数非著名的交互SQL引擎,就不一一列举了)。三个系统的核心理念是,MapReduce引擎太慢,因为它太通用、太强壮、太保守,我们SQL需要更轻量、更激进地获取资源、更专门地对SQL做优化,而且不需要那么多容错性保证(因为系统出错了大不了重新启动任务,如果整个处理时间更短的话,比如几分钟之内)。这些系统让用户更快速地处理SQL任务,牺牲了通用性、稳定性等特性。如果说MapReduce是大砍刀,砍啥都不怕,那上面三个就是剔骨刀,灵巧锋利,但是不能搞太大太硬的东西。

 

5.Spark

这些系统,说实话,一直没有达到人们期望的流行度。因为这时候又两个异类被造出来了,他们是Hive on Tez / Spark和SparkSQL。它们的设计理念是,MapReduce慢,但是如果我用新一代通用计算引擎Tez或者Spark来跑SQL,那我就能跑的更快,而且用户不需要维护两套系统。这就好比如果你厨房小,人又懒,对吃的精细程度要求有限,那你可以买个电饭煲,能蒸能煲能烧,省了好多厨具。

6.Storm

上面的介绍,基本就是一个数据仓库的构架了。底层HDFS,上面跑MapReduce/Tez/Spark,再在上面跑Hive、Pig。或者HDFS上直接跑Impala,Drill,Presto。这解决了中低速数据处理的要求。

 

那如果我要更高速的处理呢?

 

如果我是一个类似微博的公司,我希望显示不只是24小时热博,我想看一个不断变化的热播榜,更新延迟在一分钟之内,上面的手段都将无法胜任。于是又一种计算模型被开发出来,这就是Streaming(流)计算。Storm是最流行的流计算平台。流计算的思路是,如果要达到更实时的更新,我何不在数据流进来的时候就处理了?比如还是词频统计的例子,我的数据流是一个一个的词,我就让他们一边流过我就一边开始统计了。流计算很高明,基本无延迟,但是它的短处是不灵活,你想要统计的东西必须预先知道,毕竟数据流过就没了,你没算的东西就无法补算了。虽然它是个很好的东西,但是无法替代上面数据仓库和批处理系统。

 

7.Cassandra,HBase,MongoDB

还有一个有些独立的模块是KV Store,比如Cassandra、HBase、MongoDB以及很多很多很多很多其他的(多到无法想象)。KV Store就是说,由于我有一堆键值(key),我能很快速滴获取与这个Key绑定的数据。比如我用身份证号就能取到你的身份数据。这个动作用MapReduce也能完成,但是很可能要扫描整个数据集。而KV Store专用来处理这个操作,所有存和取都专门为此优化了。从几个P的数据中查找一个身份证号,也许只要零点几秒。这让大数据公司的一些专门操作被大大优化了。比如我网页上有个根据订单号查找订单内容的页面,而整个网站的订单数量无法单机数据库存储,我就会考虑用KV Store来存。KV Store的理念是,基本无法处理复杂的计算,大多没法JOIN,也许没法聚合,没有强一致性保证(不同数据分布在不同机器上,你每次读取也许会读到不同的结果,也无法处理类似银行转账那样的强一致性要求的操作),但是就是快、极快。

 

每个不同的KV Store设计都有不同取舍,有些更快,有些容量更高,有些可以支持更复杂的操作。必有一款适合你。

8.YDB

   YDB是延云针对用户对大数据探索式、即席分析的需求而开发的分析软件,可以说是笔者的心头好。

 

      YDB将传统数据库索引技术应用在大数据技术上,打破目前大数据计算技术的僵局。将大数据检索向时效性更强,查询方式更灵活,执行效率更高的方向演进。虽然引用传统索引技术,但是对硬件的需求并不比Hadoop高,不会让小型用户望而却步。技术上YDB采用Java语言编写,接地气,SQL接口,用户也更易于上手使用,同时每天千亿增量万亿总量的数据量也能满足高端用户的需求。YDB主要技术方向在大索引,大索引的好处在于加快了检索的速度,减少查询中的分组、统计和排序时间,通过提高系统的性能和响应时间来节约资源。大索引技术的运用才能使YDB在如此大规模的数据量下依然保持查询响应时间在几秒,数据导入延迟在几分钟。

 

    大数据时代拼的不仅仅是数据量有多大,还要拼速度,拼谁的更快、更准、成本更低。大数据的运用领域还在不断的扩张,大索引技术还有很长的路要走。终有一天大数据会带给我们震撼世界的影响。

© 著作权归作者所有

开心延年

开心延年

粉丝 16
博文 17
码字总数 67948
作品 1
东城
程序员
私信 提问
揭开数据背后的真相:WOT2016大数据技术峰会来袭

日前,Gartner针对中国本土科技发展情况给出中国信息通讯技术成熟的四大发展趋势,其中,“大数据将在中国大行其道”成为核心观点之一。其研究数据显示,庞大的中国互联网和移动互联网用户体...

玄学酱
2018/05/15
0
0
深圳大数据&人工智能技术转型沙龙

8月23日重庆大数据人工智能峰会,BAT三大掌门为大数据人工智能站台发言,8月25日(明天)深圳南山区大数据&人工智能技术转型沙龙为您详解:大数据&人工智能技术与您的距离有多远? 沙龙介绍:...

简直是天才
2018/08/24
9
0
大数据到底怎么学: 数据科学概论与大数据学习误区

数据科学家走在通往无所不知的路上,走到尽头才发现,自己一无所知。”-Will Cukierski,Head of Competitions & Data Scientist at Kaggle 最近不少网友向我咨询如何学习大数据技术?大数据怎...

wx5ad819330b785
2018/05/19
0
0
资讯|大数据产业”十三五“规划全文

大数据产业发展规划 (2018-2020年) 数据是国家基础性战略资源,是21世纪的“钻石矿”。党中央、国务院高度重视大数据在经济社会发展中的作用,党的十八届五中全会提出“实施国家大数据战略...

cqacry2798
2018/11/15
0
0
学习大数据必备的5大核心技术,你知道几个?需要掌握哪些知识?

大数据已经成为时代发展的趋势,很多人纷纷选择学习大数据,想要进入大数据行业。大数据技术体系庞大,包括的知识较多,系统的学习大数据可以让你全面掌握大数据技能。学习大数据需要掌握哪些...

董黎明
2018/07/18
44
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
16
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
12
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部