玩转人工智能(3)常用的大数据框架简单介绍

时光不老,我们不散。

讲大数据框架前,简单的介绍下大数据的文化。信息时代人类社会的进步得益于分享和开源。大数据时代属于信息时代的第三代发展阶段(2001年到2011年可以认为是CT行业的黄金期,2008年到2018年可以认为是IT的黄金时代),共享理念的需求和落地特征表现的更为突出。商业社会,共享的做大做强,保守的终日没落,开源的日益壮大,封闭的穷途陌路。当然,DT时代有人极端的说是共享时代(Airbnb的Brian Chesky),但有人说共享和开源的理念还没有成熟。但不管怎么讲,DT时代的github要用,git的思想要有。当然我们讲框架的目的还是为了技术的实现和应用,不得不讲当前大数据方向的工作模式,DevOps的组合模式。DevOps的引入大大提升了大数据处理计算,商品成熟发布上线的速度,对产品后期的运行和运维大大提升了销量和质量保证。

讲大数据框架不得不讲大数据的本质,以及大数据和人工智能的关系。因为人工智能的信息源为数据,应用离不开数据处理框架,机器学习的本质还是信息。所以,玩转人工智能,不得不了解大数据框架。大数据个人认为是一种商业模式,其本质还是计算。信息时代,数据就是财富,有价值的数据是占领制高点的核心竞争力。所以大数据的本质就是数据,非说这是一种技术的话权且认为是对数据的处理,计算,分类聚类,特征提取,得到最大墒信息等用于决策。数据是个宽泛的概念,个人比较喜欢按照维度来讲,一维信息就是声音(运营商的黄金十年,语音通信时代)、语言、文字、数据等等,二维信息有图像,视频。三维信息比如立体模型,AR等信息载体。四维信息就是现实世界。

讲大数据的框架,就要讲端到端的理念。大数据的框架完整的讲包含数据获取、数据预处理、数据深度处理、数据分析(学习或者挖掘)、资源管理、数据存储、云化呈现(数据的应用)。

1、获取数据的方式千差万别,但计算机世界,常用的获取数据的触手多见为传感器。摄像头、路灯、行车记录仪、手机、摄像机、录音笔、探针、电子显微镜、天文望远镜、等等等等,电脑产生的日志、程序运行的脚本,等等,都可以认为是数据获取的方式。互联网提供了大量的信息和数据,获取网络信息的一种比较方便的方式就是网络爬虫,这只虫子也可以认为是人类洞悉网络社会的传感器。下段介绍下简单介绍下网络爬虫和日志数据收集的方式方法。

基本概念请移步:谷歌、维基百科、百度搜索

爬虫的原理:人脚本程序自动的模拟人的行为从互联网获取相应的信息或者数据。这一步需要了解你需要什么信息,还要简单的了解下web/html/python等爬虫相关的知识。推荐http://blog.csdn.net/column/details/why-bug.html的专栏

任何一个系统在生产的过程中都会产生日志信息,日志中潜藏了我们要保证系统安全健康运行的价值数据。Flume是一款目前最流行的分布式日志收集系统。深入了解flume可移步github地址:https://github.com/apache/flume  目前工程上应用最多的是flume NG框架,flume采用的分层架构,分别为agent、collector、storage。两个组件:master和node。

在传感器上采集数据后,需要往下一阶段处理模块送输,采集和处理模块一般都是多对多的(分布式部署,提升性能),为了简化传送逻辑、增加数据的灵活性、需要在中间增加一个模块,这个模块可以看作过滤器(华清池.自来水管)。最好用的一个组件系统不得不介绍下,叫做卡夫卡(Kafka)。好多人更喜欢叫他数据日志缓冲器。

2、脱离应用的大数据架构就是瞎扯淡,目前应用市场上,按照对数据的按照时间角度的应用划分,主要有这样几类:实时系统、交互式查询系统、非实时批处理系统。所以,这一段落介绍实时数据预处理,

介绍数据预处理之前,介绍流的概念。数据流,也叫Streaming,是一种数据传送技术,她能把客户端(传感器)收集到的信息变成一个稳定的连续的流源源不断的送出来。为了保证实时性,流的引擎需要实时处理。常见的实时性要求较高的数据流应用比如股票市场、银行兑换系统、比特币市场、国际比赛数据系统(体彩足彩)等等。目前比较有个性的一种流引擎为Spark Streaming。

Spark Streaming属Spark的五大基本组件之一,要说Spark Streaming就不得不说Spark。这是一种基于内存的交互式数据流处理平台,速度要比Hadoop基于磁盘的方法快。Spark Streaming把流分解成一系列短小的批作业(DStream),然后将每一段DS转换为RDD,然后将RDD保存在内存中,整个流计算的过程可以根据业务的需求能对RDD进行叠加,最后输出到外部设备。

进一步了解可参考Spark的官方教程。 http://spark.apache.org

入门可参考http://blog.csdn.net/column/details/sparkindepth.html

这一段介绍交互式数据预处理,该类应用最常见的有CMCC的qw的大数据查询平台,运营商在使用该类系统,根据需求自定义查询条件,用来处理客户投诉、网络kpi情况,在线查询用户注册开户状态等。交互式应用场景下重点关注的是数据存储和调用,也就是数据仓库的使用和选择。SQL性能优化是交互式数据预处理的技术重点。数据预处理阶段的存储引擎本文推荐SparkSQL或者Kudu。SparkSQL属于Spark的五大核心组件之一。

3、数据的深度处理在大数据框架方面指承接数据分析的处理阶段,本小节介绍批处理的思想。对,经典的就是MapReduce,最初的灵感来自数据结构中对列表的迭代映射的处理思想,看来,计算机世界里的新技术的产生有一部分完全是对于老思想的新应用方面的宽展啊!所以MapReduce就是能把一堆杂乱无章的数据按照某种特征联系归纳起来,然后高效处理得到我们需要的比较理想的结果的过程。Map处理的是杂乱无章的数据,她解析每个数据,从中提取Key和value,进过Shuffle过程,Reduce看到的是已经处理好的数据。所以,深度数据预处理的最经典的代表就是Shuffle过程,说到这里读者一下明白了。深度预处理的例子还有很多,鉴于笔者才疏学浅,经验有限,这里仅用了MapReduce的Shuffle 的例子举例。如果读者朋友是搞研究的科学家,或者是目前数据处理方面遇到性能瓶颈的工程师,可以考虑在深度的基础上继续深度,本文的显浅思路能帮读者解决大数据框架方面的源动力,足矣!对了,如果作者看不懂这一段落的介绍,可以先学习Hadoop。推荐

http://blog.csdn.net/column/details/16284.html。当然如果读者喜欢细究或者时间宽裕,可以移步Hadoop的官方介绍

http://hadoop.apache.org。笔者多年混迹于江湖,习惯了为用而学,为快上手的练武方式,疏漏之处难免,但笔者还是希望读者盆友治学严谨,考究细致。了解新知识从原始出处考量。

4、前文三个阶段,我们的系统已经获得了存储在系统中的大量数据了,接下来我们讲如何对我们的数据进行分析处理,让数据彰显价值。数据挖掘,一种从海量数据中获取价值数据的过程。数据挖掘不可获取的有业务理解、数据和业务关联、数据预处理、强关联业务数据的特征提取、构建模型、评估和应用模型、效果评价等阶段。目前阶段来看,数据挖掘的核心是找到数据的特征。找特征的过程有人为处理,也有半自动化人机交互,也有计算机的自动化挖掘过程(这个阶段姑且叫做计算机自学习)。目前广泛的挖掘应用一般部署在大数据结构的后台,但是不久的将来,自动化学习的数据挖掘技术会应用到传感器上,这是一种技术发展的趋势(政府和科技类大公司利益博弈的结果,也是日益增长的人民需求的迫切愿望)。

这一段落的技术点重点讲下深度学习(属于计算机自学习阶段),属于机器学习的领域,机器学习的部分领域(对于数据特征分析和提取、建模过程)和数据挖掘不谋而合。

生物学家认为动物会学习,主要是神经系统起作用。呵呵,所以平时多观察动物,说不定重大发明或者技术突破的思路就来了。言归正传,深度学习领域广泛,目前比较前沿,但不可否认的是,深度学习来源于神经网络,是比神经网路具有更加复杂层级结构的网络系统。所以,要系统的了解深度学习网络,可以先从神经网络开始。

如果你学过矩阵,能认识到图像和视频等其实就是一系列矩阵而已,如果你学过统计,能根据前几天的天气情况预测明天或者后天会不会下雨的可能性。如果你大概知道人体的神经系统,了解除了生理生殖课以外的一点点生物知识,OK!你已经是深度学习的专家了。简单的讲,提到深度学习,基本就是指深度神经网络模型,计算机世界里的神经网络模型就是有输出、输入、还有个函数映射关系的简单模型,大量的模型,多层嵌套的模型就是神经网络,按照不同感知器的组合链接方式,神经网络又衍射出好多名称而已,按照不同的应用,神经网络又不断的变复杂,变强大。但是,不变的是,一个神经网络永远要有输入,有输出。一只奶牛,吃的是青草,挤出来的是牛奶,那么可以说这个奶牛就是一个生物世界的深度神经网络,当然这种说法没有问题。那么能不能让一台机器吃草挤奶呢?明天可能还会有一个深度消化网络,用来转换输入输出。当然,这个例子的目的在于帮助读者理解深度神经网络。

推荐:http://www.deeplearningbook.org

假设读者非常的熟悉深度升级网络,接下来讲目前实现这种会学习的网络的一些工具框架。介绍工具框架的目的是站在大师和前人的肩膀上,让我们少走别人走过的路。

目前常用的几种深度网络框架:TensorFlow、Caffe、Theano,好就这三种吧,读者玩溜一种即可成为大数据领域百万军中取上将首级如探囊取物的高手。

https://github.com/naiveghost/caffe、http://caffe.berkeleyvision.org、http://mp.weixin.qq.com/s/rWDCYO5k06zT9BcXk21JJg

TF的详细详见上篇博文。Theano本人正在学习中。

5、资源管理在大数据处理框架中作用最为重要,资源管理的本质是对集群、数据中心级别的软硬件资源统一管理和分配,提高效率和计算速度。目前资源使用方面面临的问题有多租户、弹性伸缩、动态分配等。不过,目前业界已经有一些列框架用于资源管理。该章节介绍Yarn框架。https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

中文网站:https://yarn.bootcss.com

Yarn 调度算法实现了FIFO Scheduler、Capacity Scheduler、Fair Scheduler,这三个调度器有啥用呢?第一个属于默认调度器,批处理的,后俩属于多租户调度器。三个调度器进行资源分配的过程是:调度器维护一些列队列的信息,用户可以向任何一个队列提交应用,每次心跳的时候,调度器根据特定的规则寻找和选择队列,然后再选择一个应用,并尝试分配该应用的资源。

6、搭建大数据框架的基础是了解存储,存储是所有大数据组件的基础,这里单独提出来总结下:大数据框架牛不牛,性能必须躲不开,存储是计算性能的瓶颈和依托。硬件存储的基础知识这里不讲,默认读者都明白,比如SSD,读者都知道是啥。

我们这里接受基于软件的存储,比如HDFS,这是一个分布式的文件系统,具有高吞吐量、高容错、线性扩展等好处。HDFS是Master-Slave结构的,分为NameNode、secondaryNameNode和DataNode三种角色。

相关HDFS API可以到Apache的官网查看。http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

优化缓存不得不提,这也是一种优化数据存储的思路,计算机体系中,内存处理速度要快于磁盘,人们发现内存的速度还是不够快,于是有了数据缓存,这样做的目的是提前将数据放到内存中。目前比较流行的缓存处理组件Tachyon。读者可自行学习了解。

7、大数据框架的终极目的就是数据呈现,云化属于完整的大数据框架扩展应用的一种方法。所以考虑大数据框架的组合需要考虑DevOps,同时也建议大数据框架的搭建者有Docker的思想。万事具备了,开始搭建自己的大数据框架吧,别急,最重要的事情说三遍,应用,应用,应用。没有最好的大数据框架,只有最适合的。















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值