您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Hadoop数据库讲解PPT
Hadoop综述主要内容2第一篇HDFS分布式文件系统第二篇MapReduce第三篇Hbase简单介绍第一篇HDFS3一:TheDesignofHDFS二:HDFSConcepts三:应用程序示例四:DataFlow第一篇HDFS分布式文件系统1TheDesignofHDFSVerylargefiles大数据集合为目标数以千万计的文件典型文件大小一般都在千兆至T字节Streamingdataaccesswrite-one-read-many访问模型文件创建、写,关闭之后不需要改变简化数据一致性适合MapReduce框架,或者webcrawlerCommodityhardware错误检测和快速、自动的恢复是HDFS的核心架构目标1TheDesignofHDFSLow-latencydataaccess流式读为主比之关注数据访问的低延迟,更关键在于数据访问的高吞吐量arbitraryfilemodifications严格要求在任何时候只有一个writer在文件尾在异构的软硬件平台间的可移植性移动计算Java编写2HDFSConceptsblocksNamenodesandDatanodesTheCommand-LineInterface通信接口2.1HDFSConcepts-blocksfilesinHDFSarebrokenintoblock-sizedchunks(64MBbydefault)1.减少元数据的量2.有利于顺序读写(在磁盘上数据顺序存放)3.副本的默认数目是3afilecanbelargerthananysinglediskinthenetwork.makingtheunitofabstractionablockratherthanafilesimplifiesthestoragesubsystem.2.2HDFSConcepts-NamenodesandDatanodesBasicmodelNamenodeDataNode心跳机制2.2.1HDFSConcepts-NamenodesandDatanodes-BasicmodelBasicmodel:Master/Slaves/ClientCorrespondingimplementation:Master–NameNodeSlaves–DataNodesClient–DFSClient2.2.1HDFSConcepts-NamenodesandDatanodes-Basicmodel查看块信息hadoopfsck–files–blocks部分运行结果2.2.2HDFSConcepts-NamenodesandDatanodes-NameNodemanagesthefilesystemnamespace元数据信息包括:文件信息,根目录hdfs://master:9000/每一个文件对应的文件块的信息每一个文件块在DataNode的信息persistentstateofthefilesystemmetadata.NamenodefoldersstructureNamenodenamespace映像文件及修改日志客户端对文件的访问2.2.2.1HDFSConcepts-NamenodesandDatanodes-NameNode-managesthefilesystemnamespace将所有的文件和文件夹的元数据保存在一个文件系统树中。在硬盘上保存成以下文件:命名空间镜像(namespaceimage)修改日志(editlog)心跳信号传递信息(并不存储在硬盘):一个文件包括哪些数据块,分布在哪些数据节点上。系统启动的时候从Datanode收集而成的。Datanode在Namenode的指挥下进行block的创建、删除和复制。2.2.2.2HDFSConcepts-NamenodesandDatanodes-NameNode-persistentstateofthefilesystemmetadata对于任何对文件元数据产生修改的操作,Namenode都使用一个称为Editlog的事务日志记录下来。例如,在HDFS中创建一个文件(打开、关闭、重命名文件和目录),Namenode就会在Editlog中插入一条记录来表示;同样,修改文件的replication因子也将往Editlog插入一条记录。整个文件系统的namespace,包括block到文件的映射、文件的属性,都存储在称为FsImage的文件中,这个文件也是放在Namenode所在系统的文件系统上2.2.2.2HDFSConcepts-NamenodesandDatanodes-NameNode-persistentstateofthefilesystemmetadata块进行复制的形式放置,按照块的方式随机选择存储节点。a副本的默认数目是32.2.2.3HDFSConcepts-NamenodesandDatanodes-NameNode-NamenodefoldersstructurenamespaceID=1232737062cTime=0storageType=NAME_NODElayoutVersion=-18VERSION文件是javaproperties文件,保存了HDFS的版本号。layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号。namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。cTime此处为0storageType表示此文件夹中保存的是元数据节点的数据结构。2.2.2.4HDFSConcepts-NamenodesandDatanodes-NameNode-Namenode-Namenode文件系统命名空间映像文件及修改日志客户端操作(打开、关闭、重命名文件和目录)NameNode将对文件系统的改动追加保存到本地文件系统上的一个日志文件(edits)NameNode启动从映像文件(fsimage)中读取HDFS的状态接着应用日志文件中的edits操作新的HDFS状态写入(fsimage)中使用一个空的edits文件开始正常操作。写操作成功之前,修改日志都会同步(sync)到文件系统。fsimage命名空间映像文件,是内存中的元数据在硬盘上的checkpointNameNode只有在启动阶段合并fsimage和edits,日志文件会变大2.2.3HDFSConcepts-NamenodesandDatanodes-DataNodes文件存储的基本单元保存Block的Meta-data周期性地将所有Block信息发送给NameNode。文件夹结构blk_id保存的是HDFS的数据块,其中保存了具体的二进制数据。blk_id.meta保存的是数据块的属性信息:版本信息,类型信息,和checksum目录中数据块到达一定数量,创建子文件夹2.2.4HDFSConcepts-NamenodesandDatanodes-心跳机制master启动,开一个ipcserverslave启动每隔3秒向master发送“心跳”状态信息告诉mastermaster通过心跳的返回值,向slave节点传达指令周期性接收“心跳”和BlockreportDatanode上所有block组成列表2.3HDFSConcepts-NamenodesandDatanodes-TheCommand-LineInterfaceinteractingwithHDFShadoopfs–mkdirinputhdfs://master:9000/user/coole在hdfs://master:9000/user/coole下新建input目录2.5HDFSConcepts-NamenodesandDatanodes-通信接口对通信的对象进行序列化自己的序列化系统。org.apache.hadoop.io中定义可序列化对象,实现了Writable接口3Hadoop应用程序示例//在hdfs://master:9000/user/coole目录下创建文件并写入内容publicclassDFSOperator{publicstaticvoidmain(String[]args){Configurationconf=newConfiguration();try{FileSystemfs=FileSystem.get(conf);Patht=newPath(hdfs://master:9000/user/coole/dfs_operator.txt);FSDataOutputStreamos=fs.create(t,true);inti=0;for(i=0;i5;i++)os.writeChars(test);os.close();}catch(IOExceptione){e.printStackTrace();}}}3Hadoop应用程序示例1.打包dfs_operator.jar2.复制到hadoop/bin文件夹下3.执行脚本:exec$JAVA$JAVA_HEAP_MAX$HADOOP_OPTS-classpath$CLASSPATH$CLASS$@“4.运行hadoopjardfs_operator.jarDFSOperatorHadoop脚本选项参数一参数二elif[$COMMAND=jar];thenCLASS=org.apache.hadoop.util.RunJar4DataFlowFileReadFileWrite4.1DataFlow-FileRead•4.1.1基本过程•4.1.2网络距离•4.1.3优点4.1.1DataFlow-FileRead-基本过程Theclientopensthefileitwishestoreadbycallingopen()ontheFileSystemobjectMultipleDistributedFileSystemcallsthenamenode,usingRPC,todeterminethelocationsoftheblocksforthefirstfewblocksinthefile4.1.1DataFlow-FileRead-详细过程Foreachblock,thenamenodereturnstheaddressesofthedatanodesthathaveacopyofthatblock(accordingtotheirproximitytotheclient据与客户端距离排序)读完一个块,再找下一个块,读取连续流4.1.2DataFlow-FileRead-网络距离1234.1.3DataFlow-FileRead-优点客户端在Namenode指引下,直接联系数据结点4.2DataFlow-FileWrite•4.2.1基本过程•4.2.2副本放置4.2.1DataFlow-FileWrite-基本过程客户端通过DistributedFilesystem调用create()创建文件FSDataOutputStreamos=fs.create(t,true);返回一个数据输出流,让客户写数据,控制一个DFSoutPutstream负责namenodet和datanode通信DFSoutPutstream将数据分成一个个包写入数据结点4.2.1DataFlow-FileWrite-副本位置Hadoop’sstrategyistoplacethefirstreplicaonthesamenodeastheclientforclientsrunningoutsidethecluster,anodeischosenatrandom,thesystemtriesnottopicknodesthatareto
本文标题:Hadoop数据库讲解PPT
链接地址:https://www.777doc.com/doc-3393778 .html