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在这个层面上来说就要性能高很多了。