注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

W_中原的博客笔记

通知:新博客日志将更新到个人站点:http://www.zhgyuan.cn/

 
 
 

日志

 
 

【笔记】云计算平台与Hadoop  

2016-08-23 22:55:51|  分类: 大数据云计算 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


    近段时间因为需要调研云计算相关的资料,了解了些云计算和大数据一块的知识。调研的目的是想搭建一个云计算的平台,发挥其充足的计算能力,希望以此作为一个大模块,提供计算方面的服务。

    但通过调研好像偏离了原本的目标,一来是不清楚云计算具体是什么,二是自己定位也不清晰,不过毕竟花费了点时间,也做个小结,介绍下云计算和Hadoop,如果搞过大数据的肯定知道Hadoop这个平台,但其实Hadoop最主要的功能还是分布式存储和批数据处理,因为我们需要的是实时的计算模型,因此便没有在Hadoop上深入研究下去了。后来也调研了实时计算模型Apache-storm,后面也做个小结。

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记

 

 

云计算的概念

    云计算分存储型和计算型,像百度云就是个存储云平台,云计算一般都会包含计算和存储,也就是混合云。云计算在近几年炒得很热,但也没有一个很标准的定义来解释什么是云计算,这里有个比较标准的定义:云计算是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡、热备份冗余等传统计算机和网络技术发展融合的产物。

    其实要说的通俗,云计算就是云+计算的混合产物,云即是云端、网络、虚拟化,计算即是各种计算方式或者模型。

云计算有几个特点:

  1. 规模大:通常是许多服务器一起构成大型的系统;
  2. 虚拟化:通过网络链接
  3. 高可靠性:保证数据处理准确
  4. 可扩展性:针对实际情况可以扩展应用
  5. 廉价:计算机系统硬件便宜,软件成熟
  6. 潜在危险性:防止网络攻击和入侵

 

 

云计算的发展

 

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记

 

 

    云计算真正兴起应该在10年前后,目前仍然是在迅速发展阶段。为什么会发展其云计算这个个概念呢?这或许是发展的必然趋势——虚拟化。网络的发展带来的虚拟化,举个简单的例子,学校的每个教学楼的机房有自己的局域网络,而不是每个教室一个服务器,通过集中化的大型机房来提供网络服务,但是如果每个教学楼一个机房,这维护起来也很麻烦,因此希望各个教学楼都联通起来构建一个更大型的服务器系统,只要维护这一个系统就行了,按理说,如此已经很方便了,但“人都是懒惰的”,甚至希望连这唯一的一个大型服务器也不想维护,那就用云端了,也就是云计算服务,这样学校里的数据处理全部通过第三方的处理系统来处理,只要返回执行结果就行了,这样更省事了,假如一个企业构建一个超大型的计算存储系统,为各个高校提供云计算服务平台,学校连机房都不用建了,只需要使用,就像使用水电资源一样而不需要关注水和电是怎么来的。

 

    云计算平台可以分为私有和共有,像上面举的例子学校使用第三方提供的平台就是共有云,谁都可以接入使用,但这样并不安全,尤其是重要的数据不可能随便交由第三方来处理,于是私有云也很普遍,一般企业都有自己的服务系统,数据的传递只在内部网络中进行而隔绝了互联网就成为了私有云,如果对外开放则是公有云,当然也有一部分私有一部分共有的混合平台。 

云计算的解决方案

目前提供云计算的开源解决方案也有很多,这里介绍几个。

  1. AbiCloud

    AbiCloud 是一款用于公司的开源的云计算平台,使公司能够以快速、简单和可扩展的方式创建和管理大型、复杂的IT基础设施(包括虚拟服务器、网络、应用、存储设备等)。Abiquo公司位于美国加利福尼亚州红木市,它提供的云计算服务包括为企业创造和管理私人云服务、公共云服务和混合云服务,能让企业用户把他们的电脑和移动设备中的占据大量资源的数据转移到更大、更安全的服务器上。

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记

 

  

  1. CloudStack

    CloudStack形成的基础设施云和数据中心运营商可以快速,轻松地建立在其现有的基础设施提供云服务的需求,弹性云计算服务。 CloudStack用户可以充分利用云计算提供更高的效率,无限的规模和更快地部署新服务和系统的最终用户。CloudStack 是一个开源的云操作系统,它可以帮助用户利用自己的硬件提供类似于Amazon EC2那样的公共云服务。CloudStack具有许多强大的功能,可以让用户构建一个安全的多租户云计算环境。

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记
 
  1. MongoDB

    基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记

 

 

  1. Hadoop

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFSHDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

Hadoop的框架最核心的设计就是:HDFSMapReduceHDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记

 

 

 

Hadoop

    对Hadoop了解并不多,但知道它的强大,最核心的是HdfsMapReduce计算框架。因为它属于批处理框架而不是流处理所以并没有去研究它的计算方式,而是尝试了Hadoop的分布式文件存储系统的环境配置和测试,关于Hadoop的分布式系统搭建后面会更新到,这里只是简单介绍下其概念。

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记

 

 

Hadoop的发展

    Hadoop原本是来自于谷歌一款名为MapReduce的编程模型包。谷歌的MapReduce框架可以把一个应用程序分解为许多并行计算指令,跨大量的计算节点运行非常巨大的数据集。使用该框架的一个典型例子就是在网络数据上运行的搜索算法。Hadoop 最初只与网页索引有关,迅速发展成为分析大数据的领先平台。到目前为止,Hadoop 技术在互联网领域已经得到了广泛的运用。例如,Yahoo 使用4 000 个节点的Hadoop集群来支持广告系统和Web 搜索的研究;Facebook 使用1 000 个节点的集群运行Hadoop,存储日志数据,支持其上的数据分析和机器学习;百度用Hadoop处理每周200TB 的数据,从而进行搜索日志分析和网页数据挖掘工作;中国移动研究院基于Hadoop 开发了“大云”(Big Cloud)系统,不但用于相关数据分析,还对外提供服务;淘宝的Hadoop 系统用于存储并处理电子商务交易的相关数据。

    由此可见Hadoop是多么的受欢迎,如果有兴趣的话可以到招聘网站搜索下hadoop大数据开发一方面的职位就知道了。

 

 

Hadoop核心架构

    Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File SystemHDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是MapReduce 引擎,该引擎由 JobTrackers  TaskTrackers 组成。

通过对Hadoop分布式计算平台最核心的分布式文件系统HDFSMapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记
  

    Hadoop官方版本(http://hadoop.apache.org/)已经到了2.7了,1.02.0的版本区别比较大,所带有的架构也不一样。其中最核心的两个模块:HDFSMapReduce

 

  1. HDFS

HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记

 

 

HDFS读操作:

1 Client  NameNode发起文件写入的请求

2 NameNode 根据文件大小和文件块配置情况返回给Client所管理的DataNode的信息

3 Client将文件划分为多个Block,根据DataNode的地址按顺序写入到每一个DataNode块中

 

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记
 
 

 

 

HDFS写操作:

1 ClientNameNode发起文件读取请求

2 NameNode返回文件存储的DataNode信息

3 Client读取文件信息

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记

 

 

  1. MapReduce

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)""Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。

MapReudue 采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各分节点共同完成,然后通过整合各分节点中间结果,得到最终的结果。

【笔记】云计算平台与Hadoop - W_中原 - 汪中原的博客笔记

 

 

 

MapReduce小结:

1)数据划分和计算任务调度:

系统自动将一个作业(Job)待处理的大数据划分为很多个数据块,每个数据块对应于一个计算任务(Task),并自动调度计算节点来处理相应的数据块。

 

2)数据/代码互定位:

为了减少数据通信,一个基本原则是本地化数据处理,当无法进行这种本地化数据处理时,再寻找其他可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻找可用节点以减少通信延迟。

 

3)系统优化:

为了减少数据通信开销,中间结果数据进入Reduce节点前会进行一定的合并处理;此外,系统还进行一些计算性能优化处理,如对最慢的计算任务采用多备份执行、选最快完成者作为结果。

 

4)出错检测和恢复:

MapReduce能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务。同时,系统还将维护数据存储的可靠性,用多备份冗余存储机制提高数据存储的可靠性,并能及时检测和恢复出错的数据。


  评论这张
 
阅读(11)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017