1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Cutting,语言,:Java,,支持多种编程语言,,,如,:Python,、,C+,5,Hadoop,介绍,Hadoop,是,Google,的集群系统的开源实现,Google,集群系统:,GFS(Google File System),、,MapReduce,、,BigTable,Hadoop,主要由,HDFS(Hadoop Distributed File,System Hadoop,分布式文件系统,),、,MapReduce,和,HBase,组成,Hadoop,的初衷是为解决,Nutch,的海量数据爬取
2、和存储的需要,Hadoop,于,2005,年秋天作为,Lucene,的子项目,Nutch,的一部分正式引入,Apache,基金会。,名称起源,:Doug Cutting,儿子的黄色大象玩具的名字,6,为什么,要用,Hadoop,hadoop,主要的一些特点,扩容能力(,Scalable,):,能,可靠地存储和处理千兆字节(,PB,)数据。,成本低(,Economical,):,可以,通过普通机器组成的服务器群来分发以及,处理,数据,。,这些服务器群总计可达数千个节点。,高效率(,Efficient,):,通过,分发数据,,hadoop,可以在数据所在的节点上并行,地处理,它们,这使得处理非常的
3、快速。,可靠性(,Reliable,):,hadoop,能自动地维护数据的多份复制,并且在任务,失败后,能自动地重新部署计算任务。,7,谁在用,Hadoop,8,什么是大数据,数据集主要特点,Volume:,数量量从,TB,到,PB,级别,Variety:,数据类型复,杂,,,超,过,80%,的数据是非结构化的,Velocity:,数据量在持续增加,(,两位数的年增长率,),其他特征,数据来自大量源,需要做相关性分析,需要实时或者准实时的流式采集,有些应用,90%,写,vs.10%,读,数据需要长时间存储,非热点数据也会被随机访问,9,大,数据处理的需求和特点,10,大,数据,VS,传统数据,
4、11,并行关系数据库,vs MPP/Hadoop,多个独立的关系数据库服务,器,,,访,问共享的存储资源池,优势,采用多个关系数据库服务,器,,,多,个存,储,,,与,原有的架构相,比,,,扩,展了存储容量和计算能,力,劣势,:,计算与存储分,离,,,数,据访问存在竞争和带宽瓶,颈,支持的关系数据库服务器数量有,限,只能向上扩,展,,,不,能横向扩展,适合复杂的需要事务处理的应用,由大量独立的服务器通过网络互连形成集,群,,,每,个服务器带存储。,优势,:,计算与存储融,合,,,支,持横向扩,展,,,更,好的扩展性,劣势,:,解决数据冲突时需要节点间协作,适用范围,:,数据仓库和离线数据分析,
5、MPP,Hadoop/HBase),大规模在线实时应用,(,单行事务处理能满足的场景,)(HBase),12,MPP vs Hadoop/Hive/Hbase,13,Hadoop,生态系统,14,Hadoop,生态系统,15,Hadoop,生态系统,16,Hadoop,生态系统,17,Hadoop,子项目,Core,:一套分布式文件系统以及支持,Map-Reduce,的计算框架,Avro,:定义了一种用于支持大数据应用的数据格式,并为这种格式提供了不同的编程语言的支持,HDFS,:,Hadoop,分布式文件系统,Map/Reduce,:是一个使用简易的软件框架,基于它写出来的应用程序能够运行
6、在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上,T,级别的数据集,ZooKeeper,:是高可用的和可靠的分布式协同系统,Pig,:建立于,Hadoop Core,之上为并行计算环境提供了一套数据工作流语言和执行框架,Hive,:是为提供简单的数据操作而设计的下一代分布式数据仓库。它提供了简单的类似,SQL,的语法的,HiveQL,语言进行数据查询,HBase,:建立于,Hadoop Core,之上提供一个可扩展的数据库系统,Flume,:,一,个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集,数据,Mahout,:是,一套具有可扩充
7、能力的机器学习类,库,Sqoop,:,是,Apache,下用于,RDBMS,和,HDFS,互相导数据的工,具,18,Hadoop,生态系统和,Google,架构比较,技术架构的比较,并行计算模型:,MapReduce-MapReduce,分布式文件系统:,HDFS-GFS,数据结构化管理组件:,Hbase-BigTable,分布式锁服务,Zookeeper-,Chubby,HBase,MapReduce,HDFS,BigTable,MapReduce,GFS,Hadoop,云计算应用,Chubby,Google,云计算应用,Zookeeper,Pig,Hive,Mahout,19,目录,Con
8、tents,1,Hadoop,介绍,2,HDFS,介绍,3,Map/Reduce,介绍,4,HBase,介绍,5,Hive,介绍,6,ZooKeeper,介绍,20,HDFS,介绍,设计目标,错误检测和快速自动恢复,硬件故障是常态而非异常,为流式数据访问优化,针对支持大数据集,单个文件大小有数,GB,或者,TB,可提供高聚合带宽访问,可能够扩展至数千个节点,简化“一致性”模型,一次写入、多次读,写入过程可能并发,移动“计算”比移动“数据”更便宜,主要特点,使用低成本存储和服务器构建,存放,PB,级别的海量数据,高可扩展性,实际生产环境扩展至,4000,个节点,高可靠性和容错性,数据自动复制,可
9、自我修复,高带宽,高并发访问,对于延迟不敏感,面向批处理,数据分布与复制,21,HDFS,介绍,HDFS,为了做到可靠性(,reliability,)创建了多份数据块(,data blocks,)的复制(,replicas,),并将它们放置在服务器群的计算节点中(,compute nodes,),,MapReduce,就可以在它们所在的节点上处理这些数据了。,22,HDFS,介绍,数据块:文件被划分为固定大小的数据块进行存储,数,据块缺省为,64M,,远大于一般文件系统数据块大小,减,少元数据的量,有利,于顺序读写(在磁盘上顺序存放),可靠,性:数据通过副本的方式保存在多个数据节点上,默,认,
10、3,个副本,副,本选择会考虑机架信息以防止整个机架同时掉电,系统设计优化:用单个管理节点来保存文件系统元数据和管理,/,协调,23,HDFS,介绍,数据缓存:,DataNode,没有数据缓存,由于文件的访问是扫描式的,不具有局部性,访问方式,读、写、文件改名、删除等,文件内容不允许覆盖更新,提供一个特殊的访问接口:追加,append,24,HDFS,介绍,25,HDFS,介绍,中心目录服务器,(NameNode),管理大量数据服务器,(DataNode),NameNode,管理元数据,(,文件目录树,文件,-,块映射,块,-,数据服务器映射表,etc.),DataNode,负责存储数据、以及响
11、应数据读写请求,客户端与,NameNode,交互进行文件创建,/,删除,/,寻址等操作,之后直接与,DataNodes,交互进行文件,I/O,26,目录,Contents,1,Hadoop,介绍,2,HDFS,介绍,3,Map/Reduce,介绍,4,HBase,介绍,5,Hive,介绍,6,ZooKeeper,介绍,27,Map/Reduce,是什么,Map(,映射,):,对一些独立元素组成的,列表的每一个元素进行指定的操作,可,以高度并行。,Reduce(,化简,):,对一个列表的元素进行合并。,一个简单的,MapReduce,程序只需要指定,map(),、,reduce(),、输入和输出
12、剩下的事由框架帮你搞定。,28,Map/Reduce,思想,输入,分割,1,2,3,4,合并,输出,n,把要处理的一个任务拆分成多个任务去执行,(map),,然后再把中间数据汇总,并且得出最后的结果,(reduce),。,29,Hadoop Map/Reduce,的过程,Map/Reduce,思想,30,Map/Reduce,计算框架,为离线数据分析而设计,基本上是个利用数据并行性进行分布运算而后汇总结果的计算框架,分析问题能够被并行化,且输入数据集可以被切分,一个,Map,函数,在第一阶段计算,对,一个,Reduce,函数,在第二阶段用于汇总,Map,函数的结果,31,MapReduce,
13、举例,32,Map/Reduce,代码举例,33,目录,Contents,1,Hadoop,介绍,2,HDFS,介绍,3,Map/Reduce,介绍,4,HBase,介绍,5,Hive,介绍,6,ZooKeeper,介绍,34,HBase,分布式数据库,HBase,是一个按列存储的、多维表结构的实时分布数据库,为高速在线数据服务而设计,表,:(,行,,,列族,列名,,,版本名,),值,主要特点,NoSQL,面向列、可压缩,有效降低磁盘,I/O,,提高利用率,多维表,四个维度,,,其中三个维度可变,,,适合描述复杂嵌套关系,灵活的表结构,,,可动态改变和增加,(,包括行、列和时间戳,),,为多列
14、族设置不同复制因子,支持单行的,ACID,事务处理,分布式系统,高性能,,,支持高速并发写入和高并发查询,可扩展,数据自动切分和分布,,,可动态扩容,无需停机,高可用性,,,建立在,HDFS,分布式文件系统之上,35,HBase,软件架构,36,HBase,组件交互,一个管理服务器,(HBase Master),控制多个数据服务器,(RegionServer),HMaster,负责表的创建、删除和维护,以及,region,的分配和负载平衡,Region Server,负责管理维护,region,、以及响应读写请求,客户端与,HMaster,进行有关表的元数据的操作,之后直接读写,Region
15、Servers,37,HBase,特性,Hadoop Hbase,:,NoSql databse,基,本的数据库操作,CRUD,强一致性,无,SQL,语言支持,稀,疏的多维映射表,列存,储,只,用,rowkey,来定位,每,行可以有不同列,数,据有,多,个版本,非常高的读写数度,为写特别优化,高,效随机读取,对,于数据的某一个子集能够进行有效扫面,38,HBase,特性,2,分布式的多层次映射表结构,具,有容错性,能够将数据持久化到非易失存储中,使,用,HDFS,做底层存储,可以用,H,adoop,的压缩,codec,减少空间占用,自,动水平扩展,只需,要新加入的节点即可提高存储容量和吞吐量,
16、服务,器能够被动态加入或者删除(用以维护和升级),服务,器自动调整负载均衡,39,目录,Contents,1,Hadoop,介绍,2,HDFS,介绍,3,Map/Reduce,介绍,4,HBase,介绍,5,Hive,介绍,6,ZooKeeper,介绍,40,Hive,数据仓库,Hive,是一个建立在,hadoop/hbase,之上的数据仓库,用于分析结构化海量数据,采用,HDFS,或,HBase,进行数据存储,采用,Map/Reduce,进行数据操作,基本特点,:,提供类似于,SQL,的查询语言,针对海量数据的高性能查询和分析系统,命令,行接口,,JDBC/ODBC,提供灵活的扩展性,复杂数
17、据类型,扩展函数和脚本等,41,Hive,应用范围举例,日志分析:,日志分析可以优化系统,获知用户行为,也可以获知数据的统计信息,数,据挖掘:,通过结构化数据的挖掘,能够获得原先使用者没有意识的信息,文,档索引:,可以对一系列文档进行分析,并形成文档的索引结构,不一定是完整的排序表,可能是关联信息的索引,商业智,能信息处理:,可以对商业信息进行查询分析,从中可以获得一些只能决策的信息,及,时查询以及数据验证:,数据分析人员可能临时需要验证数据的特性,需要查询引擎迅速进行数据分析,42,Hive,QL,类,SQL,,和,SQL,有,80%,以上的相似度,有大量扩展,不支,持,DELETE,,,U
18、PDATE,不支,持,TRANSACTION,目,前不支持,in,操作,但支持,join,Inner join,,,outer join,,,left semi join,(,in,的替代品),Join,实现:普通,join,,,Map join,,,Bucket Map join,43,Hive,分区和桶,Partitions,:数据表可以按照某一个字段的值划分,Partitions,例,如,通过日期的方式将数据表进行划分;如果需要查询某天的数据,那么只需要读取相应的,Partitions,就可以了,分区数,量不固定,每,个分区是一个目录,Buckets,:数据存储的桶,建,表时指定桶个数,
19、每个桶是一个文件,桶内可以排序,数,据按照某个字段的,hash,值后放入某个桶中,对,于数据的抽样、特定,join,的优化很有意义,44,Hive,分区举例,以日志为例,按日期和国家分区:,CREATE TABLE logs(timestamp BIGINT,line STRING)PARTITIONED BY(date STRING,country STRING),获取分区表:,Hiveshow partitions log;,date=2013-02-26/country=China,查,询分区:,SELECT timestamp,date,line FROM logs where cou
20、ntry=China,这时,候,将只扫面,country=China,的分区的文件,而不用扫面其他的文件,提高查询效率,hive,支持动态分区,45,Hive,分区举例,将,hive Ql,利用,Hbase,的,coprocessor,执行,支,持的语言特性:,简,单,select,Group by,汇总,Order by,及,top N,字符,串,数字,算术,逻辑运算符,Rowkey,自动过滤机制(包括模糊查询),比,MapReduce,方式快,310X,46,目录,Contents,1,Hadoop,介绍,2,HDFS,介绍,3,Map/Reduce,介绍,4,HBase,介绍,5,Hiv
21、e,介绍,6,ZooKeeper,介绍,47,Zookeeper,分布式协作服务,一个高可用的分布式数据管理与系统协调框,架,基于对Paxos算法的实现,强一致性,设计目标,接口简单,允许多个分布的进程基于一个共享的,类似标准文件系统的树状名称空间进行协作,高效,可靠,48,Zookeeper,提供的保证,序列一致性,:,数据更新会依照,client,发送的次序来进,行。,原子性,:,更新要么成功,要么失败,.,不存在部分结,果。,唯一系统镜像,:client,总是会看到一致的视图,而不管它是连接到具体哪个,zookeeper,server,。,可靠性,:,一旦更新完成,它会持续保存直到有另外
22、的,client,重,写。,及时,:,客户端视图会在一定的时间间隔内进行更,新。,49,Zookeeper,典型应用场景,数据发布与订阅(配置中心),负载均衡,命名服务(Naming Service),分布式通知/协调,集群管理与Master选举,分布式锁,分布式队列,50,机器学习,Mahout,源于Apache Lucene的子项目,基于Hadoop的可扩展的机器学习工具库,算法不局限于,Hadoop,面,向开发人员的java库,无UI/Server/Installer,核心算法使用MapReduce实现,弹性好,擅长海量数据处理,目前主要实现了四大类算法:推荐引擎,聚类,分类以及频繁项集分,析,项,目开源(Apache许可)、开放(Apache社区,),已,有大量常用机器学习算法实现,Thank,You,!,






