HadoopSpeaker:Daniel目录Contents1Hadoop介绍2HDFS介绍3Map/Reduce介绍4HBase介绍5Hive介绍6ZooKeeper介绍目录Contents1Hadoop介绍2HDFS介绍3Map/Reduce介绍4HBase介绍5Hive介绍6ZooKeeper介绍介绍•Hadoop是一个开源的、可靠的、可扩展的分布式并行计算框架•主要组成:分布式文件系统HDFS和MapReduce算法执行•作者:DougCutting•语言:Java,支持多种编程语言,如:Python、C++介绍•Hadoop是Google的集群系统的开源实现–Google集群系统:GFS(GoogleFileSystem)、MapReduce、BigTable–Hadoop主要由HDFS(HadoopDistributedFileSystemHadoop分布式文件系统)、MapReduce和HBase组成•Hadoop的初衷是为解决Nutch的海量数据爬取和存储的需要•Hadoop于2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会。•名称起源:DougCutting儿子的黄色大象玩具的名字为什么要用Hadoophadoop主要的一些特点扩容能力(Scalable):能可靠地存储和处理千兆字节(PB)数据。成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地处理它们,这使得处理非常的快速。可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署计算任务。谁在用Hadoop什么是大数据•数据集主要特点Volume:数量量从TB到PB级别Variety:数据类型复杂,超过80%的数据是非结构化的Velocity:数据量在持续增加(两位数的年增长率)•其他特征数据来自大量源,需要做相关性分析需要实时或者准实时的流式采集,有些应用90%写vs.10%读数据需要长时间存储,非热点数据也会被随机访问大数据处理的需求和特点大数据VS传统数据并行关系数据库vsMPP/Hadoop多个独立的关系数据库服务器,访问共享的存储资源池优势采用多个关系数据库服务器,多个存储,与原有的架构相比,扩展了存储容量和计算能力劣势:计算与存储分离,数据访问存在竞争和带宽瓶颈支持的关系数据库服务器数量有限只能向上扩展,不能横向扩展适合复杂的需要事务处理的应用由大量独立的服务器通过网络互连形成集群,每个服务器带存储。优势:计算与存储融合,支持横向扩展,更好的扩展性劣势:解决数据冲突时需要节点间协作适用范围:数据仓库和离线数据分析(MPP,Hadoop/HBase)大规模在线实时应用(单行事务处理能满足的场景)(HBase)://cs.cqupt.edu.cn/yuhong/13Hadoop生态系统生态系统生态系统生态系统子项目•Core:一套分布式文件系统以及支持Map-Reduce的计算框架•Avro:定义了一种用于支持大数据应用的数据格式,并为这种格式提供了不同的编程语言的支持•HDFS:Hadoop分布式文件系统•Map/Reduce:是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集•ZooKeeper:是高可用的和可靠的分布式协同系统•Pig:建立于HadoopCore之上为并行计算环境提供了一套数据工作流语言和执行框架•Hive:是为提供简单的数据操作而设计的下一代分布式数据仓库。它提供了简单的类似SQL的语法的HiveQL语言进行数据查询•HBase:建立于HadoopCore之上提供一个可扩展的数据库系统•Flume:一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据•Mahout:是一套具有可扩充能力的机器学习类库•Sqoop:是Apache下用于RDBMS和HDFS互相导数据的工具生态系统和Google架构比较•技术架构的比较–并行计算模型:MapReduce-MapReduce–分布式文件系统:HDFS-GFS–数据结构化管理组件:Hbase-BigTable–分布式锁服务Zookeeper-ChubbyHBaseMapReduceHDFSBigTableMapReduceGFSHadoop云计算应用ChubbyGoogle云计算应用ZookeeperPigHiveMahout目录Contents1Hadoop介绍2HDFS介绍3Map/Reduce介绍4HBase介绍5Hive介绍6ZooKeeper介绍介绍•设计目标–错误检测和快速自动恢复•硬件故障是常态而非异常–为流式数据访问优化–针对支持大数据集•单个文件大小有数GB或者TB•可提供高聚合带宽访问•可能够扩展至数千个节点–简化“一致性”模型•一次写入、多次读,写入过程可能并发–移动“计算”比移动“数据”更便宜•主要特点–使用低成本存储和服务器构建–存放PB级别的海量数据–高可扩展性,实际生产环境扩展至4000个节点–高可靠性和容错性,数据自动复制,可自我修复–高带宽,高并发访问,对于延迟不敏感•面向批处理数据分布与复制介绍•HDFS为了做到可靠性(reliability)创建了多份数据块(datablocks)的复制(replicas),并将它们放置在服务器群的计算节点中(computenodes),MapReduce就可以在它们所在的节点上处理这些数据了。介绍•数据块:文件被划分为固定大小的数据块进行存储–数据块缺省为64M,远大于一般文件系统数据块大小•减少元数据的量•有利于顺序读写(在磁盘上顺序存放)–可靠性:数据通过副本的方式保存在多个数据节点上•默认3个副本•副本选择会考虑机架信息以防止整个机架同时掉电系统设计优化:用单个管理节点来保存文件系统元数据和管理/协调介绍•数据缓存:DataNode没有数据缓存–由于文件的访问是扫描式的,不具有局部性•访问方式–读、写、文件改名、删除等–文件内容不允许覆盖更新–提供一个特殊的访问接口:追加append介绍介绍•中心目录服务器(NameNode)管理大量数据服务器(DataNode)•NameNode管理元数据(文件目录树,文件-块映射,块-数据服务器映射表,etc.)•DataNode负责存储数据、以及响应数据读写请求•客户端与NameNode交互进行文件创建/删除/寻址等操作,之后直接与DataNodes交互进行文件I/O目录Contents1Hadoop介绍2HDFS介绍3Map/Reduce介绍4HBase介绍5Hive介绍6ZooKeeper介绍是什么Map(映射):对一些独立元素组成的列表的每一个元素进行指定的操作,可以高度并行。Reduce(化简):对一个列表的元素进行合并。一个简单的MapReduce程序只需要指定map()、reduce()、输入和输出,剩下的事由框架帮你搞定。思想输入分割1234合并输出n…把要处理的一个任务拆分成多个任务去执行(map),然后再把中间数据汇总,并且得出最后的结果(reduce)。的过程Map/Reduce思想计算框架•为离线数据分析而设计,基本上是个利用数据并行性进行分布运算而后汇总结果的计算框架–分析问题能够被并行化,且输入数据集可以被切分–一个Map函数,在第一阶段计算Key,Value对–一个Reduce函数,在第二阶段用于汇总Map函数的结果举例代码举例目录Contents1Hadoop介绍2HDFS介绍3Map/Reduce介绍4HBase介绍5Hive介绍6ZooKeeper介绍分布式数据库•HBase是一个按列存储的、多维表结构的实时分布数据库,为高速在线数据服务而设计–表:(行,列族,列名,版本名)值•主要特点–NoSQL•面向列、可压缩,有效降低磁盘I/O,提高利用率•多维表,四个维度,其中三个维度可变,适合描述复杂嵌套关系•灵活的表结构,可动态改变和增加(包括行、列和时间戳),为多列族设置不同复制因子•支持单行的ACID事务处理–分布式系统•高性能,支持高速并发写入和高并发查询•可扩展,数据自动切分和分布,可动态扩容,无需停机•高可用性,建立在HDFS分布式文件系统之上软件架构组件交互•一个管理服务器(HBaseMaster)控制多个数据服务器(RegionServer)•HMaster负责表的创建、删除和维护,以及region的分配和负载平衡•RegionServer负责管理维护region、以及响应读写请求•客户端与HMaster进行有关表的元数据的操作,之后直接读写RegionServers特