大数据学习记录(day1)--云计算

前言:博客好久没有更新,也好久没有学习新东西了,从今天开始学习大数据,只要开始,就不算晚。文章内容基本是在网络资料的基础上做些整理(会注明学习来源)。

开始今天的学习。

学习来源:http://www.aboutyun.com/thread-6179-1-1.html

                  http://blog.csdn.net/yuexianchang/article/details/52468291

                  http://www.cnblogs.com/xing901022/p/6195422.html

说明:由于参考资料大多是2013年以前的,所以有些说法也许并不成立,请读者选择性吸收。


       云计算,是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机和其他设备,主要是基于互联网的相关服务地增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务地交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。它意味着计算也可作为一种商品通过互联网进行流通。
       1. 什么是云计算?(来源:http://www.aboutyun.com/thread-5765-1-1.html)
       1.1 简介
       事实上,目前并没有一个确定的定义。然而概括来讲,所谓的云计算,指的就是把你的软件和服务统一部署在数据中心,统一管理,从而实现高伸缩性。
      云计算拥有以下特点:
      ·虚拟化和自动化
      ·服务器,存储介质,网络等资源都可以随时替换
      ·所有的资源都由云端统一管理
      ·高度的伸缩性以满足业务需求
      ·集中于将服务传递给业务

      1.2 云计算的部署方式
      ·私有云:数据中心部署在企业内部,由企业自行管理。微软为大家提供了Dynamic Data Center Toolkit,来方便大家管理自己的数据中心。
     ·公共云:数据中心由第三方的云计算供应商提供,供应商帮助企业管理基础设施(例如硬件,网络,等等)。企业将自己的软件及服务部属在供应商提供的数据中心,并且支付一定的租金。Windows Azure正是这样一个公共云平台。
     1.3 云计算的运营方式
      ·软件即服务(SaaS):云计算运营商直接以服务的形式供应软件,供最终用户使用。有些服务还提供了SDK,从而使得第三方开发人员可以进行二次开发。在这种运营模式下,开发人员通常只能针对现有的产品开发插件,而无法充分挖掘平台和操作系统的特点,不过他们可以在现有产品的基础上添加新的功能,而不必从头开始实现。微软的Bing,Windows Live,Microsoft Business Productivity Online等产品就属于这一类型。
     ·平台即服务(PaaS):云计算运营商将自己的开发及部署平台提供给第三方开发人员,第三方开发人员在这个平台上开发自己的软件和服务,供自己或其它用户使用。在这种运营模式下,开发人员有了更多的自由,可以发挥出平台的强大功能,而不受现有产品的束缚。Windows Azure正是这样一个产品。
     ·基础设施即服务(IaaS):云计算运营商提供但不管理基础设施,第三方开发人员将开发好的软件和服务交给自己公司的IT管理员,由IT管理员负责部署及管理。在这种运营模式下,开发人员和IT管理员有最大限度的自由,然而由于必须自行管理部分基础设施,因此成本通常也会较大,对管理员的要求也会较高。

      1.4 总结
       云计算指的就是把你的软件和服务统一部署在数据中心,统一管理,从而实现高伸缩性。从部署方式来说,云计算可以分为私有云和公共云。从运营方式来说,云计算可以分成SaaS,PaaS,IaaS三类。

       2.什么是云计算技术?(来源:http://www.aboutyun.com/thread-5767-1-1.html

       2.1 首先让大家明白什么是云端。
       所谓云端需要两层理解:
      (1)服务不在本地,这一层可以理解为服务器。
      (2)它和普通的服务器是不一样的,这些云端的服务器的资源是共享的,一旦一个服务器不能承受,将会把任务分配给其他机器。
       2.2 云技术与其他技术的区别:
       云技术可以使用的语言有java,c++等。云技术的开发,并没有发展什么新语言,而是在其他语言的基础上。比如Java语言。与其他技术,最显著的区别,不是在开发上,而是在于架构上,最显著的特点是分布式。
       2.3 主要云技术

       (1)Hadoop
       Hadoop是一个框架,它是由Java语言来实现的。Hadoop是处理大数据技术.Hadoop可以处理云计算产生大数据,需要区分hadoop并不是云计算。它和云计算密不可分。
       Hadoop产生是互联网的产物,也是必然。大家都知道,我们上网时需要服务器的。假如世界上只有一台电脑,根本不需要服务器。如果有10台服务器,100台,1000台,上万台,那么我们该如何让大家相互通信,共享知识,所以就有了互联网。
       互联网产生,全世界都可以通信,知识如此居多,我们像获取更多的知识,想获取新技术,获取新知识,通过什么,国内通过百度,国外也有许多,比如Google。可是百度和谷歌的用户有多少,多了不说,最起码有上亿的用户。并且这些用户每天上百度,上谷歌,又会产生多少数据,查询多少数据。那么他们怎么承受如此多用户。这不是一台电脑、一台服务器能完成的事情。
       Hadoop就是一个解决方案。Hadoop是一个分布式方案,能够把压力分摊到其他服务器。

       hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)
      下面举例说明:
       设想一下这样的应用场景. 我有一个100M 的数据库备份的sql 文件.我现在想在不导入到数据库的情况下直接用grep操作通过正则过滤出我想要的内容。例如:某个表中 含有相同关键字的记录那么有几种方式,一种是直接用linux的命令 grep 还有一种就是通过编程来读取文件,然后对每行数据进行正则匹配得到结果好了 现在是100M 的数据库备份.上述两种方法都可以轻松应对.
       那么如果是1G , 1T 甚至 1PB 的数据呢 ,上面2种方法还能行得通吗? 答案是不能.毕竟单台服务器的性能总有其上限.那么对于这种 超大数据文件怎么得到我们想要的结果呢?
       有种方法 就是分布式计算, 分布式计算的核心就在于 利用分布式算法 把运行在单台机器上的程序扩展到多台机器上并行运行.从而使数据处理能力成倍增加.但是这种分布式计算一般对编程人员要求很高,而且对服务器也有要求.导致了成本变得非常高.
       Haddop 就是为了解决这个问题诞生的.Haddop 可以很轻易的把 很多linux的廉价pc 组成 分布式结点,然后编程人员也不需要知道分布式算法之类,只需要根据mapreduce的规则定义好接口方法,剩下的就交给Haddop. 它会自动把相关的计算分布到各个结点上去,然后得出结果.
       例如上述的例子 : Hadoop 要做的事 首先把 1PB的数据文件导入到 HDFS中, 然后编程人员定义好 map和reduce, 也就是把文件的行定义为key,每行的内容定义为value , 然后进行正则匹配,匹配成功则把结果 通过reduce聚合起来返回.Hadoop 就会把这个程序分布到N 个结点去并行的操作.
       那么原本可能需要计算好几天,在有了足够多的结点之后就可以把时间缩小到几小时之内.
       这也就是所谓的 大数据 云计算了.如果还是不懂的话再举个简单的例子
       比如 1亿个 1 相加 得出计算结果, 我们很轻易知道结果是 1亿.但是计算机不知道.那么单台计算机处理的方式做一个一亿次的循环每次结果+1
       那么分布式的处理方式则变成 我用 1万台 计算机,每个计算机只需要计算 1万个 1 相加 然后再有一台计算机把 1万台计算机得到的结果再相加
       从而得到最后的结果.
       理论上讲, 计算速度就提高了 1万倍. 当然上面可能是一个不恰当的例子.但所谓分布式,大数据,云计算 大抵也就是这么回事了.

       (2)openstack
       openstack是搭建云平台技术,可以搭建公有云,私有云,和混合云。
       OpenStack是开源的云管理平台,用来统一管理多个虚拟化集群的框架。
       openstack目前分为两种openstack的运维和openstack的二次开发。
       (3)Cloud Foundry
       Cloud Foundry是一个开源的平台即服务产品,它提供给开发者自由度去选择云平台,开发框架和应用服务。Cloud Foundry最初由 VMware 发起,得到了业界广泛的支持,它使得开发者能够更快更容易的开发,测试,部署和扩展应用。Cloud Foundry是一个开源项目,用户可以使用多种私有云发行版,也可以使用公共云服务。
       (4)nosql
       nosql即not only sql。
       nosql数据库是一种比较低级的数据库,关系型数据库是由nosql数据库发展而来。
       什么是关系型数据库,这里不从概念上区别,常用的SqlServer,mysql,oracle都是关系型数据库。关系型数据库顾名思义,数据库关系明确严谨。
       而nosql则是一种数据关系不严谨的数据库。一个key和value。
       (5)扩展:
      · 移动云开发,移动云开发目前在国内没有资料同样少之又少。
      云计算的发展并不局限于PC,随着移动互联网的蓬勃发展,基于手机等移动终端的云计算服务已经出现。基于云计算的定义,移动云计算是指通过移动网络以按需、易扩展的方式获得所需的基础设施、平台、软件(或应用)等的一种IT资源或(信息)服务的交付与使用模式。移动云计算是云计算技术在移动互联网中的应用。   详情查看:什么是移动云计算(http://www.aboutyun.com/thread-5924-1-1.html)
      · 云平台开发:
       这里的云平台开发,是一种付费云开发,比如微软云,百度云。
       什么是云平台,这里只是给大家一个概念,但并不一定严格。
       云平台其实就是给大家搭建一个公共的开发环境,服务器放到远端。省去了发布的麻烦,不需要关心服务器是怎么样的,这些全部由服务商来负责。我们关心的就是如何开发出好的程序。比如:.net,我不关心服务器了。我只需要开发完毕,然后直接发布,输入网址,我们就可以访问。? ? 想做云平台开发可以查看下面内容:
       百度云平台开发(http://www.aboutyun.com/forum-57-1.html)
       微软云WindowsAzure(http://www.aboutyun.com/forum-58-1.html)

      · 灵云开发
        灵云是一种可以用语音、手写、拍照,手势,将来甚至脑波识别等智能手段来操作、感知手机、计算机等数字设备的网络云服务,让人机交互像人与人沟通一样的简单自然!
        灵云知识普及,灵云是什么?它在什么地方用?(http://www.aboutyun.com/thread-6603-1-1.html)

        总结:

        今天学习了云计算及其相关技术的入门性知识,整体感觉就是“杂”、“累”,看来此路确实艰辛,坚持吧,“老头子”。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章