云计算、大数据、人工智能
<h2>1.云计算</h2>
<h3>1.1 云计算发展目标</h3>
<p>云计算最初的目标是对资源的管理,管理的主要是计算资源,网络资源,存储资源三个方面。
计算资源:cpu、内存
网络资源:网卡、带宽
存储资源:硬盘</p>
<h3>1.2 云计算的本质</h3>
<p>从资源到架构的全面弹性(灵活性),这种弹性包括时间灵活性和空间灵活性。
时间灵活性:想什么时候要就什么时候要。
空间灵活性:想要多少就要多少。</p>
<h3>1.3 云计算发展历程</h3>
<p>物理机->虚拟机->云计算
物理机不灵活,这种不灵活包括采购不灵活、粒度不灵活、复用不灵活、运维不灵活。
虚拟化之后就相当于半自动了,有几个特性,优点:点即可得、可大可小、即创即销、界面化。缺点:人工调度、规模有限。
云计算,将计算、网络、存储这些资源放在一个池里,通过算法调度,想要多少要多少,想什么时候要什么时候要。这个阶段称为池化,或者云化。特点:自动调度、规模巨大、具有时间和空间灵活性。
云计算分为公有云和私有云。
公有云:将虚拟化和云化软件部署在云厂商自己数据中心里面的,用户不需要很大的投入,只要注册一个账号就能创建一台计算机。
私有云:把虚拟化和云化的这套软件部署在用户自己的数据中心里面,自己建机房、自己买服务器。
<img src="E:\文档图片\云计算、大数据、AI\p.png" alt="云计算" /></p>
<h3>1.4 Iaas</h3>
<p>到了云计算这个阶段,基本上实现了时间灵活性和空间灵活性,实现了计算,网络,存储资源的弹性。计算,网络,存储我们常称为基础设施Infranstracture, 因而这个阶段的弹性称为资源层面的弹性,管理资源的云平台,我们称为基础设施服务,就是我们常听到的IaaS,Infranstracture As A Service。</p>
<h3>1.5 Paas</h3>
<p>云计算不光管资源,也要管应用。Iaas主要实现了资源的灵活性,但是,还有应用层面的灵活性。例如,电商应用。在平时需要十台机器就足够了,购物节的时候可能需要一百台。另外的九十台上面并没有电商应用,如果需要运维人员一台台部署,那还是需要很长时间才能部署好,这样只能达到资源的灵活性,并不能达到应用的灵活性。
因此,人们在IaaS平台之上又加了一层,用于管理资源以上的应用弹性的问题,这一层通常称为PaaS(Platform As A Service)。这一层往往比较难理解,其实大致分两部分,一部分我称为你自己的应用自动安装,一部分我称为通用的应用不用安装。
自己的应用自动安装。比如电商应用是你自己开发的,除了你自己,其他人是不知道怎么安装的,但是可以通过工具(例如docker)进行自动化部署,将自己的配置信息融入到自动化的安装过程中方可。
通用的应用不用安装。所谓通用的应用,一般指一些复杂性比较高,但是大家都在用的应用。例如,数据库,es等。
paas的重要作用,要么是自动部署,要么是不用部署,总的来说就是应用层你也要少操心。
云计算如何管理应用?
通过容器技术(目前流行的docker),将应用按照一定的标准封装起来,让应用之间互不干扰,相互隔离。
这主要使用了两种技术,一种是看起来是隔离的技术,称为 Namespace,也即每个 Namespace中的应用看到的是不同的 IP地址、用户空间、程号等。另一种是用起来是隔离的技术,称为 Cgroups,也即明明整台机器有很多的 CPU、内存,而一个应用只能用其中的一部分。</p>
<h3>1.6 Saas</h3>
<p>软件即服务,用户不用部署任何应用及中间组件,直接通过互联网访问即可。与Paas和Iaas面向开发和运维人员不一样。Saas是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。普通用户接触到的互联网服务,几乎都是 SaaS。</p>
<h2>2 大数据</h2>
<p>在PaaS层中一个复杂的通用应用就是大数据平台。大数据是如何一步一步融入云计算的呢?</p>
<h3>2.1 数据的类型</h3>
<p>大数据里面的数据,就分三种类型,一种叫结构化的数据,一种叫非结构化的数据,还有一种叫半结构化的数据。
结构化数据:有固定格式和有限长度的数据,例如填表的表格数据和数据库的数据等。
非结构化数据:没有固定长度也没有固定格式的数据。如:网页、语音等。
半结构化数据:介于结构化数据和非结构化数据之间。例如xml、html格式的数据。</p>
<h3>2.2 数据、信息、知识、智慧</h3>
<p>数据(data)本身不是有用的,必须要经过一定的处理。才能从数据里面获取一个很重要的东西,叫做信息(information)。信息会包含很多规律,我们需要从信息中将规律总结出来,称为知识(knowledge)。有了知识,然后利用这些知识去应用于实战,并且做得非常好,这个东西叫做智慧(intelligence)。有了智慧又能够更好的进行数据收集。
数据的处理分为数据收集、数据传输、数据存储、数据的处理和分析、数据的检索和挖掘。
数据的收集有两种方式:一种是抓取、一种是推送。
数据的处理和分析,原始数据是杂乱无章的,需要经过清洗和过滤才能得到高质量的数据。对于高质量的数据,就可以进行分析,从而对数据进行分类,或者发现数据之间的相互关系,得到知识。然后成功的应用到实际中,就能得到智慧。
数据的检索和挖掘,所谓的检索就是搜索,把分析处理后的数据放入搜索引擎,从而人们想寻找信息的时候,一搜就有了。另外就是挖掘,仅仅搜索出来已经不能满足人们的要求了,还需要从信息中挖掘出相互的关系,形成知识库。
数据的应用过程:搜集->传输->存储->处理->分析->检索->挖掘->应用</p>
<h3>2.3 大数据时代,众人拾柴火焰高</h3>
<p>当数据量很小的时候,几台机器就能解决问题;当数据量很大时,即使是性能最好的机器,也力所不及。那么只有聚合多台机器,齐心协力把这件事搞定。</p>
<p>对于数据的收集,要将成千上万的传感器或者整个互联网的数据下载下来,一台机器显然做不到,需要多台机器各收集一部分,共同把所有的数据收集上来。</p>
<p>对于数据的传输,一个内存里面的队列肯定会被大量的数据挤爆掉,于是就产生了基于硬盘的分布式队列,这样队列可以多台机器同时传输,随你数据量多大,只要我的队列足够多,管道足够粗,就能够撑得住。</p>
<p>对于数据的存储,一台机器的文件系统肯定是放不下了,所以需要一个很大的分布式文件系统来做这件事情,把多台机器的硬盘打成一块大的文件系统。</p>
<p>对于大量数据的处理、分析。一台机器更是不可能完成。需要大量的机器组成一个分布式计算系统。每台机器处理一部分,多台机器并行处理。</p>
<p>所以说大数据平台,什么叫做大数据,说白了就是一台机器干不完,大家一起干。</p>
<h3>2.4 大数据需要云计算,云计算需要大数据</h3>
<p>大数据需要大量的机器来处理数据,有了云计算,当想要干这些活的时候,需要好多好多的机器一块做,真的是想什么时候要,想要多少就要多少。只有云计算,可以为大数据的运算提供资源层的灵活性。而云计算也会部署大数据放到它的PaaS平台上,作为一个非常非常重要的通用应用。
当一个小公司需要大数据平台的时候,不需要采购一千台机器,只要到公有云上一点,这一千台机器都出来了,并且上面已经部署好了的大数据平台,只要把数据放进去算就可以了。
这样,云计算与大数据就结合在一起了。</p>
<h2>3 人工智能</h2>
<h3>3.1 机器什么时候能读懂人心</h3>
<p>虽说有了大数据,人的欲望总是这个不能够满足。虽说在大数据平台里面有搜索引擎这个东西,想要什么东西我一搜就出来了。但是也存在这样的情况,我想要的东西不会搜,表达不出来,搜索出来的又不是我想要的。例如音乐软件里面推荐一首歌,这首歌我没听过,当然不知道名字,也没法搜,但是软件推荐给我,我的确喜欢,这就是搜索做不到的事情。当人们使用这种应用的时候,会发现机器知道我想要什么,而不是说当我想要的时候,去机器里面搜索。这个机器真像我的朋友一样懂我,这就有点人工智能的意思了。</p>
<h3>3.2 让机器学会推理</h3>
<p>人和动物的区别在什么呀,就是能推理。我要是把我这个推理的能力啊告诉机器,机器就能根据你的提问,推理出相应的回答,真能这样多好。但推理过程是严谨的,而现实生活中并不都是这么严谨的,要比这复杂的多。</p>
<h3>3.3 教给机器知识</h3>
<p>仅仅告诉机器严格的推理是不够的,还要告诉机器一些知识。但是知识这个事儿,一般人可能就做不来了,可能专家可以,比如语言领域的专家,或者财经领域的专家。人工智能这个阶段叫做专家系统。</p>
<h3>3.4 机器自己学习</h3>
<p>既然机器的统计能力这么强,基于统计学习,一定能从大量的数字中发现一定的规律。</p>
<h3>3.5 模拟大脑工作</h3>
<p>模拟神经元工作,这个神经元有输入,有输出,输入和输出之间通过一个公式来表示,输入根据重要程度不同(权重),影响着输出。</p>
<h3>3.6 人工智能需要大数据</h3>
<p>然而神经网络包含这么多的节点,每个节点包含非常多的参数,整个参数量实在是太大了,需要的计算量实在太大,但是没有关系啊,我们有大数据平台,可以汇聚多台机器的力量一起来计算,才能在有限的时间内得到想要的结果。</p>