云计算学习笔记003---Hadoop简介,hadoop实现原理,NoSQL介绍...与传统关系型数据库对应关系,云计算面临的挑战

1、Hadoop简介

1、hadoop的诞生

l  Nutch和Lucene之父Doug Cutting在2006年完成Hadoop项目。

l  Hadoop并不是一个单词,它来源于Doug Cutting小儿子对所玩的小象玩具牙牙学语的称呼。就像是google也是由小孩子命名一样。

l  后又经过5年的开发,hadoop在所有云计算系统是稳居第一。

l  Hadoop目前使用最广泛的版本为hadoop-0.20版本。目前最新版本为hadoop-1.03

l  Hadoop运行在Linux系统中。在windows上安装可使用cgywin模拟linux环境。

2、hadoop的组成

l  hadoop Common – 是hadoop的核心,包括文件系统、远程调用RPC的序列化函数。

l  HDSF : 提供高吞吐量的可靠分布式文件系统是 GFS的开源实现。

•   Hadoop的文件系统。必须通过hadoop  fs 命令来读取。支持分布式。

l  MapReduce : 大型分布式数据处理模型,是Google MapReduce的开源实现。

•   合并/计算模型。

l  其他相关组成:

•    Hbase:结构化分部式数据库。BigTable的开源实现。

•    Hive:提供摘要和查询功能的数据仓库。

•    Cassandra:由Facebook开发分布式数据仓库。目前已经捐献给apache。且apache已经将Cassandra应用到了各种云计算系统中。

谁在用hadoop:

l  facebook

l  淘宝

l  360

l  京东

l  yahoo

l  google

 

Master:主节点,相当于项目经理

Slave:从节点相当于PG

Hadoop只能运行在linux系统上:

在linux系统上装JVM虚拟机,然后,上面运行了三个进程

SecondaryNameNode,Jobtracter,NameNode这三个进程,这三个都是java进程

其中,NameNode是最重要的一个java进程,他决定了主节点,在从节点上没有这个进程

SecondaryNameNode相当于NameNode的秘书,协助NameNode完成工作, Jobtracter任务跟踪进程,用来跟踪任务

并且把任务交给从节点.

可以看到通常应用都会有一个主节点和一个从节点,并且从节点中也有两个java进程,因为在装有从节点的服务器上,也装的是linux系统,在linux系统上装有jvm,然后跑了两个java进程,一个是: Jobtracter,另一个是:DataNode数据节点,这个进程用来处理和数据有关的任务.注意在hadoop系统中,只有一个主节点,其他的都属于从节点.

各节点介绍:       

l  NameNode:这是hadoop的守护进程(注意是进程JVM)。负责记录文件是如何分割成数据块,以及这些数据块分别存储到哪些数据节点上。对内存进行集中管理。NameNode在整个hadoop中只有一个。一旦NameNode服务器宕机,整个系统将无法运行。

l  DataNode:集群中的每个从服务器都运行一个DataNode后台程序。这个后台程序负责将HDFS数据块写到本地的文件系统。

l  Secondary NomeNode:用来监控HDFS状态的辅助后台程序。如保存NameNode的快照。

l  JobTracker:用户连接应用程序和hadoop。每一个hadoop集群中只一个 JobTracker,一般它运行在Master节点上。

l  TaskTracker:负责与DataNode进行结合。

l  云计算目前的困境

对于“云计算”,业界已经为之争论了不止一年,IBM、微软、Google等产业大哥们也各自运功,以“云计算”作为获得未来产业主动权的阵地。

作为消费者,我一直觉得“云计算”是未来的IT行业的发展趋势,但是:“云计算”何时才能从云端到地面?

关于“云计算”技术标准和发展方向的争论依然此起彼伏,我们却已经悄然步入“云计算”的年代。

当我们用Google的在线Office编辑文档的时候,当我们随时在网上更新自己博客、甚至用手机上传照片的时候,当企业用在线租赁的软件在处理公司财务的时候……

NoSQL综述

l                大数据时代

l   关系数据库的瓶颈

l   NoSQL的优势

l   CAP理论

l   NoSQL数据模型及分类

l   NoSQL应用现状

l   重点介绍几个NoSQL

l  一、大数据时代

l    随着网民参与互联网产品和应用的程度越来越深,互联网将更加智能,互联网的数据量也将呈爆炸式增长

一、大数据时代

•       大交易数据:来自电商的数据,包括B2B、B2C、C2C、团购等

•       大交互数据:来自社交网络的数据,SNS、微博等

•      两类数据的有效融合将是大势所趋,这种融合更能增强企业的商业洞察力

•       大数据的特征

3V——Volume(海量)、Variety(多样)、Velocity(实时)

•       海量——数据量巨大,对TB、PB数据级的处理, 已经成为基本配置。

•       多样——处理多样性的数据类型,结构化数据和非结构化数据,能处理Web数据,能处理语音数据甚至是图像、视频数据。

•      实时——在客户每次浏览页面,每次下订单的过程中都存在,都会需要对用户进行实时的推荐,决策已经变得实时

•       大数据时代下的系统需求

•       High performance –高并发读写的需求

     高并发、实时动态获取和更新数据

•       Huge Storage –海量数据的高效率存储和访问的需求

     类似SNS网站,海量用户信息的高效率实时存储和查询

SNS,全称Social Networking Services,即社会性网络服务,专指旨在帮助人们建立社会性网络的互联网应用服务。也指社会现有已成熟普及的信息载体,如短信SMS服务。SNS的另一种常用解释:全称Social Network Site,即“社交网站”或“社交网”。

 

•       High Scalability && High Availability –高可扩展性和高可用性的需求

     需要拥有快速横向扩展能力、提供7*24小时不间断服务

二、关系数据库的瓶颈

•       关系数据库如何应对大数据

•       High performance –高并发读写的需求

     问题:

数据库读写压力巨大,

硬盘IO无法承受

     解决方案:

Master-Slave,主从分离

分库、分表,缓解写压力,增强读库的可扩展性

•       关系数据库如何应对大数据

•       Huge Storage –海量数据的高效率存储和访问的需求

     问题:

存储记录数量有限,

SQL查询效率极低

     解决方案:

分库、分表,缓解数据增长压力

•       关系数据库如何应对大数据

•       High Scalability && High Availability –高可扩展性和高可用性的需求

     问题:

横向扩展艰难,无法通过快速增加服务器节点实现,

系统升级和维护造成服务不可用

     解决方案:

Master-Slave,增强读库的可扩展性

MMM——Master-Master Replication Manager for MySQL

•       解决方案的问题

1.分库分表缺点:

(1)受业务规则影响,需求变动导致分库分表的维护复杂

(2)系统数据访问层代码需要修改

2.Master-Slave缺点

(1)Slave实时性的保障,对于实时性很高的场合可能需要做一些处理

(2)高可用性问题,Master就是那个致命点,容易产生单点故障

3. MMM缺点

    本身扩展性差,一次只能一个Master可以写入,只能解决有限数据量下的可用性

 

三、NoSQL的优势

•       易扩展

       NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。甚至有多种NoSQL之间的整合。

•       灵活的数据模型

        NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。

•       高可用

        NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。

•       大数据量,高性能

        NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。

一般MySQL使用Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web2.0的交互频繁的应用,Cache性能不高。而NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了。

 

 

 

上一篇:redis概述


下一篇:由 argv引出的main参数 分类: C/C++ 2014-11-08 18:00 154人阅读 评论(0) 收藏