Hadoop介绍移动云计算服务端技术.pptx
HADOOP介绍介绍2011年5月15WhatisHadoopApacheHadoop是一个用java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,它可以让应用程序支持上千个节点和PB级别的数据。Hadoop组成Hadoop Hadoop corecorePIGPIGHBaseHBaseZooKeeperZooKeeperHadoop组成HadoopcoreHadoop的核心子项目,提供了一个分布式文件系统(HDFS)和支持MapReduce的分布式计算。HBase建立在Hadoop内核之上,提供可靠的,可扩展的分布式数据库。ZooKeeper一个高效的,可扩展的协调系统。分布式应用可以使用ZooKeeper来存储和协调关键共享状态。PIG建立于Hadoop内核之上,是一种支持并行计算运行框架的高级数据流语言。HadoopcoreMapReducepMap:任务的分解pReduce:结果的汇总两大核心设计两大核心设计HDFSpNameNodepDataNodepClientMapReduceHDFSHDFSNameNode可以看作是分布式文件系统中的管理者,存储文件系统的meta-data,主要负责管理文件系统的命名空间,集群配置信息,存储块的复制。DataNode是文件存储的基本单元。它存储文件块在本地文件系统中,保存了文件块的meta-data,同时周期性的发送所有存在的文件块的报告给NameNode。Client就是需要获取分布式文件系统文件的应用程序。HDFS操作举例文件写入:1.Client向NameNode发起文件写入的请求。2.NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。3.Client将文件划分为多个文件块,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。文件读取:1.Client向NameNode发起文件读取的请求。2.NameNode返回文件存储的DataNode的信息。3.Client读取文件信息。文件块复制:1.NameNode发现部分文件的文件块不符合最小复制数或者部分DataNode失效。2.通知DataNode相互复制文件块。3.DataNode开始直接相互复制。HBase-数据模型每个数据行都包括一个可排序的关键字,和任意数目的列 HBase利用的是column-oriented列导向存储机制,不同于传统的row-oriented行导向存储机制对于Null值的存储是不占用任何空间的 最适合使用HBase存储的数据是非常稀疏的数据所有数据库更新操作都有时间戳。HBase对每个数据单元,只存储指定个数的最新版本。HBase-概念模型一个表格是一些行的集合,每行包含一个行关键字(和一个可选的时间戳),和一些可能有数据的列(稀疏),如下图:HBase-物理模型在概念上表格是一个稀疏的行/列矩阵,但是在物理上,它们按照列存储,上面“概念模型”中的表格在物理上的存储方式如下所示:ZooKeeperWhatisZooKeeper?一个高效的,可扩展的协调系统WhyisZooKeeper?p保证用户读取的数据是最新的p当用户正在查看的数据被修改时,保证用户会被及时告知p保证来至一个用户的所有请求会被按顺序处理p保证所有用户得到的数据是一致的ZooKeeper-DataModelpZooKeeper提供的命名空间和一般的文件系统是极为相似的,除了ZooKeeper的文件系统的每个节点(node)既可以包含数据又可以包含子节点pZooKeeper提供暂时节点的概念,这些节点随着创建他们的会话的结束而结束。pZooKeeper允许用户在节点上设置“监视”机制,当节点的内容被改变时,“监视”机制会告知用户PIGpPig是SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能 p支持的运算算数符号:+,-,*,/多种数据类型:string,int,float,long等比较运算:=,!=,=,=,eq,neq,gt,gte,lt,lte,matches复杂的数据类型:bag,tuple,map相关运算:FILTER,GROUPBY,ORDER,DISTINCT,UNION,JOIN,FOREACH.GENERATE数据统计:COUNT,SUM,AVG,MIN,MAX等。PIG(Cont.)ppig支持的原始类型数据:int,long,float,double,char数组,byte数组 ppig内部的数据类型:bag:一个tuple的集合,表示方式:,tuple:一个排序的数组,表示方式:map:一个key,value的map数据,表示方式pig:,web:hadoop.apache.orgatom:单一的原始类型数据,作为string存储,也能转化成数值类型.表示方式:apache.org或2.3.p数据表示方式:t=1,apache:hadoop在上面的例子中一个tuple被引用到t下,因此t有3个域f1,f2,f3,我们可以通过t.f1或t.$0访问到1,通过t.f2或t.$1访问到,通过t.f3或t.$2访问到apache:hadoop.Mahout&HiveMahout(看象人)一批机器学习库,用于驱动Hadoop。HIVE(蜂房)Hive 是搭建在Hadoop之上的数据仓库基础,并提供了一些工具,使得对Hadoop文件中海量数据的归纳、特殊查找和分析更为容易。WhyisHadoop可扩展。不论是存储的可扩展还是计算的可扩展都是Hadoop的设计根本。经济。框架可以运行在任何普通的PC上。可靠。分布式文件系统的备份恢复机制以及MapReduce的任务监控保证了分布式处理的可靠性。高效。分布式文件系统的高效数据交互实现以及MapReduce结合LocalData处理的模式,为高效处理海量的信息作了基础准备。HowtoUseHadoop环境:7台普通的机器,操作系统都是linux,JDK必须是1.5以上,7台机器的机器名务必不同。部署考虑:对于Hadoop的集群来说,可以分成两大类角色,即Master和Slave,前者主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行,后者配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。现取一台为Master,六台为SlaveHowtoUseHadoop(实验步骤)在所有的机器上都建立相同的目录,也可以就建立相同的用户,以该用户的home路径来做hadoop的安装路径。下载Hadoop,先解压到Master上。解压后进入conf目录,主要需要修改以下文件:hadoop-env.sh,hadoop-site.xml,masters,slaves。建立Master到每一台Slave的ssh受信证书。将Master上的Hadoop通过scp拷贝到每一个Slave相同的目录下,根据每一个Slave的Java_HOME的不同修改其hadoop-env.sh。HowtoUseHadoop(实验步骤)Cont.修改Master上/etc/profile:新增以下内容:具体的内容根据你的安装路径修改,这步只是为了方便使用exportPATH=$PATH:$HADOOP_HOME/bin修改完执行 source/etc/profile来使得其生效。在Master上执行Hadoopnamenodeformat,这是第一需要做的初始化 HowtoUseHadoop(实验步骤)Cont.然后执行Master上的start-all.sh检查Master的logs目录看看Namenode日志以及JobTracker日志是否正常启动 检查Slave的logs目录看看Datanode日志以及TaskTracker日志是否正常。以上步骤就可以启动Hadoop的分布式环境