版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Hadoop综述,主要内容,2,第一篇 HDFS 分布式文件系统 第二篇 MapReduce 第三篇 Hbase简单介绍,第一篇HDFS,3,一: The Design of HDFS 二: HDFS Concepts 三:应用程序示例 四:Data Flow,第一篇HDFS 分布式文件系统,1 The Design of HDFS,Very large files 大数据集合为目标数 以千万计的文件 典型文件大小一般都在千兆至T字节 Streaming data access write-one-read-many访问模型 文件创建、写,关闭之后不需要改变简化数据一致性 适合MapReduc
2、e框架,或者web crawler Commodity hardware 错误检测和快速、自动的恢复是HDFS的核心架构目标,1 The Design of HDFS,Low-latency data access 流式读为主 比之关注数据访问的低延迟,更关键在于数据访问的高吞吐量 arbitrary file modifications 严格要求在任何时候只有一个writer 在文件尾 在异构的软硬件平台间的可移植性移动计算 Java编写,2 HDFS Concepts,blocks Namenodes and Datanodes The Command-Line Interface 通信接
3、口,2.1 HDFS Concepts-blocks,files in HDFS are broken into block-sized chunks(64 MB by default) 减少元数据的量 有利于顺序读写(在磁盘上数据顺序存放) 副本的默认数目是3 a file can be larger than any single disk in the network. making the unit of abstraction a block rather than a file simplifies the storage subsystem.,2.2 HDFS Concepts-
4、Namenodes and Datanodes,Basic model Namenode DataNode 心跳机制,2.2.1 HDFS Concepts-Namenodes and Datanodes- Basic model,Basic model: Master / Slaves / Client Corresponding implementation: Master NameNode SlavesDataNodes Client DFSClient,2.2.1 HDFS Concepts-Namenodes and Datanodes- Basic model,查看块信息hadoo
5、p fsck files blocks 部分运行结果,2.2.2 HDFS Concepts-Namenodes and Datanodes- NameNode,manages the filesystem namespace 元数据信息包括: 文件信息,根目录 hdfs:/master:9000/ 每一个文件对应的文件块的信息 每一个文件块在DataNode的信息 persistent state of the filesystem metadata. Namenode folders structure Namenode namespace映像文件及修改日志 客户端对文件的访问,2.2.2
6、.1 HDFS Concepts-Namenodes and Datanodes- NameNode- manages the filesystem namespace,将所有的文件和文件夹的元数据保存在一个文件系统树中。在硬盘上保存成以下文件: 命名空间镜像(namespace image) 修改日志(edit log) 心跳信号传递信息(并不存储在硬盘): 一个文件包括哪些数据块,分布在哪些数据节点上。系统启动的时候从Datanode收集而成的。 Datanode在Namenode的指挥下进行block的创建、删除和复制。, HDFS Concepts-Namenodes a
7、nd Datanodes- NameNode- persistent state of the filesystem metadata,对于任何对文件元数据产生修改的操作,Namenode都使用一个称为Editlog的事务日志记录下来。 例如,在HDFS中创建一个文件(打开、关闭、重命名文件和目录),Namenode就会在Editlog中插入一条记录来表示;同样,修改文件的replication因子也将往 Editlog插入一条记录。 整个文件系统的namespace,包括block到文件的映射、文件的属性,都存储在称为FsImage的文件中,这个文件也是放在Namenode所在系统的文件系统
8、上, HDFS Concepts-Namenodes and Datanodes- NameNode- persistent state of the filesystem metadata,块进行复制的形式放置,按照块的方式随机选择存储节点。 a副本的默认数目是3, HDFS Concepts-Namenodes and Datanodes- NameNode- Namenode folders structure,namespaceID=1232737062 cTime=0 storageType=NAME_NODE layoutVersion=-18,VERS
9、ION文件是java properties文件,保存了HDFS的版本号。 layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号。 namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。 cTime此处为0 storageType表示此文件夹中保存的是元数据节点的数据结构。, HDFS Concepts-Namenodes and Datanodes- NameNode-Namenode-Namenode文件系统命名空间映像文件及修改日志,客户端操作(打开、关闭、重命名文件和目录) NameNode将对文件系统的改动追
10、加保存到本地文件系统上的一个日志文件(edits) NameNode启动 从映像文件(fsimage)中读取HDFS的状态 接着应用日志文件中的edits操作 新的HDFS状态写入(fsimage)中 使用一个空的 edits文件开始正常操作。 写操作成功之前,修改日志都会同步(sync)到文件系统。 fsimage命名空间映像文件,是内存中的元数据在硬盘上的checkpoint NameNode只有在启动阶段合并fsimage和edits,日志文件会变大,2.2.3 HDFS Concepts-Namenodes and Datanodes- DataNodes,文件存储的基本单元 保存Bl
11、ock的Meta-data 周期性地将所有Block信息发送给NameNode。 文件夹结构,blk_保存的是HDFS的数据块,其中保存了具体的二进制数据。 blk_.meta保存的是数据块的属性信息:版本信息,类型信息,和checksum 目录中数据块到达一定数量,创建子文件夹,2.2.4 HDFS Concepts-Namenodes and Datanodes-心跳机制,master启动,开一个ipc server slave启动每隔3秒向master发送 “心跳” 状态信息告诉master master通过心跳的返回值,向slave节点传达指令 周期性接收 “心跳”和Blockrepo
12、rt Datanode上所有block组成列表,2.3 HDFS Concepts-Namenodes and Datanodes- The Command-Line Interface,interacting with HDFS hadoop fs mkdir input hdfs:/master:9000/user/coole 在hdfs:/master:9000/user/coole下新建input目录,2.5 HDFS Concepts-Namenodes and Datanodes-通信接口,对通信的对象进行序列化 自己的序列化系统。 org.apache.hadoop.io中定义可
13、序列化对象,实现了Writable接口,3 Hadoop应用程序示例,/在hdfs:/master:9000/user/coole目录下创建文件并写入内容 public class DFSOperator public static void main(String args) Configuration conf = new Configuration(); try FileSystem fs = FileSystem.get(conf); Path t = new Path(hdfs:/master:9000/user/coole/dfs_operator.txt); FSDataOutp
14、utStream os = fs.create(t,true); int i = 0; for (i = 0 ;i5; i+) os.writeChars(test); os.close(); catch (IOException e) e.printStackTrace(); ,3 Hadoop应用程序示例,打包 dfs_operator.jar 复制到hadoop/bin文件夹下 执行脚本: exec $JAVA $JAVA_HEAP_MAX $HADOOP_OPTS -classpath $CLASSPATH $CLASS $“ 运行hadoop jar dfs_operator.jar
15、 DFSOperator,Hadoop脚本,选项,参数一,参数二,elif $COMMAND = jar ; then CLASS=org.apache.hadoop.util.RunJar,4 Data Flow,File Read File Write,4.1 Data Flow-File Read,4.1.1 基本过程 4.1.2 网络距离 4.1.3 优点,4.1.1 Data Flow-File Read-基本过程,The client opens the file it wishes to read by calling open() on the FileSystem objec
16、t Multiple DistributedFileSystem calls the namenode, using RPC, to determine the locations of the blocks for the first few blocks in the file,4.1.1 Data Flow-File Read-详细过程,For each block, the namenode returns the addresses of the datanodes that have a copy of that block (according to their proximit
17、y to the client据与客户端距离排序) 读完一个块,再找下一个块,读取连续流,4.1.2 Data Flow-File Read-网络距离,1 2 3,4.1.3 Data Flow-File Read-优点,客户端在Namenode指引下,直接联系数据结点,4.2 Data Flow-File Write,4.2.1 基本过程 4.2.2 副本放置,4.2.1 Data Flow-File Write-基本过程,客户端通过DistributedFilesystem调用create()创建文件 FSDataOutputStream os = fs.create(t,true); 返
18、回一个数据输出流,让客户写数据,控制一个DFSoutPutstream负责namenodet和datanode通信 DFSoutPutstream将数据分成一个个包写入数据结点,4.2.1 Data Flow-File Write-副本位置,Hadoops strategy is to place the first replica on the same node as the client for clients running outside the cluster, a node is chosen at random, the system tries not to pick nod
19、es that are too full or too busy,第二篇 MapReduce,第二篇 MapReduce,34,一 :MapReduce基础 二:MapReduce数据流 三:MapReduce工作原理,1 MapReduce基础,1.1 函数式编程 1.2 列表处理 1.3 mapping数据列表 1.4 reducing数据列表,1.1 MapReduce基础-函数式编程,计算划到大量机器上 组件间不允许任意数据共享,避免保持同步而产生的通信开销,所有在MapReduce上的数据不可变 节点间通信只在产生新输出,1.2 MapReduce基础-列表处理,MapReduce程
20、序转变输入数据元素列表成输出数据元素列表。,1.3 MapReduce基础- mapping数据列表,MapReduce程序的第一步叫做mapping,1.4 MapReduce基础- Reducing数据列表,Reducing把数据聚集在一起。 reducer函数接收来自输入列表的迭代器,2 MapReduce数据流,2.1 概述 2.2 输入 2.3 Maper 2.4 Partition it creates a local working directory for the task, and un-jars the contents of the JAR into this dire
21、ctory. it creates an instance of TaskRunner to run the task.,矩阵相乘算法设计,1MapReduce程序设计过程 1)对 2)数据输入 3)Mapper阶段 4)Reducer阶段 5)数据输出 2矩阵相乘(整数矩阵 ) 左矩阵的一行和右矩阵的一列组成一个InputSplit,其存储b个对,key存储积矩阵元素位置,value为生成一个积矩阵元素的b个数据对中的一个;Map方法计算一个对的value中数据对的积;而Reduce方法计算key值相同的所有积的和,编程实现,1程序中的类 (1)matrix类用于存储矩阵 (2)IntPai
22、r类实现WritableComparable接口用于存储整数对 (3)matrixInputSplit类继承了InputSplit接口,每个matrixInputSplit包括b个对,用来生成一个积矩阵元素。key和value都为IntPair类型,key存储的是积矩阵元素的位置,value为计算生成一个积矩阵元素的b个数据对中的一个 (4)继承InputFormat的matrixInputFormat类,用来数据输入 (5)matrixRecordReader类继承了RecordReader接口,MapReduce框架调用此类生成对赋给map方法 (6)主类matrixMulti,其内置类M
23、atrixMapper继承了Mapper重写覆盖了Map方法,类似地,FirstPartitioner、MatrixReducer也是如此。在main函数中,需要设置一系列的类,详细内容参考源码 (7)MultipleOutputFormat类用于向文件输出结果 (8)LineRecordWriter类被MultipleOutputFormat中的方法调用,向文件输出一个结果对,编程实现,2.部分代码片段 matrixInputFormat matrixMulti 3程序的运行过程 (1)程序从文件中读出数据到内存,生成matrix实例,通过组合左矩阵的行与右矩阵的列生成ac个matrixIn
24、putSplit (2)一个Mapper任务对一个matrixInputSplit中的每个对调用一次Map方法对value1中的两个整数相乘。输入的对中key1和value1的类型均为IntPair,其输出为对,key1不变,value2为IntWritable类型,值为value1中的两个整数的乘积 (3)MapReduce框架调用FirstPartitioner类的getPartition方法将Map的输出对分配给指定的Reducer任务(任务个数可以在配置文件中设置),编程实现,3程序的运行过程 (4)Reducer任务对key1值相同的所有value2求和,得出积矩阵中的元素k的值。其
25、输入为对,输出为对,key1不变,value3为IntWritable类型,值为key1值相同的所有value2的和。 (5)MapReduce框架实例化一个MultipleOutputFormat类,将结果输出到文件 4程序执行过程 程序需要两个参数:输入目录和输出目录,第三篇 Hbase分布式数据库,第三篇 Hbase简单介绍,68,一 :简介 二:数据模型 三:行、列、时间戳、API,Hbase简介,Hbase是一个类似Bigtable的分布式结构化数据库系统, Bigtable是 Google Style的数据库,使用结构化的文件来存储数据。,Streamy 使用RDBMS, 是一个实
26、时新闻聚合器,使用PostgreSQL。 Streamy抓取上万RSS订阅,聚集千万条目。 除存储,复杂查询之一:从一个资源集合中读取按时间排序的所有条目列表。 为了保障数据库随扩展而保持速度,想尽办法(用尽所有RDBMS优势)。整个团队成为DBA。,Streamy障碍一:大批量条目,起初单条目表,大量二级索引使更新变慢 将条目分成一对一链接表 静态区域从动态区域分离出来 据查询方法分区 问题无法解决 单个更新还是要重写整个记录 条目追踪统计数据非常难扩展 重写记录和一直保持更新索引是RDBMS固有特性,Streamy障碍二:超大排序合并,对按时间排序的lists进行排序合并很常见 假设id是
27、主键,stamp和type有二级索引,RDBMS查询设计器做如下处理: 问题:只排前10条ID,但查询设计器实现整个合并。,Streamy 解决办法,RDBMS能实现需求,但是- 需要考虑伸宿性和性能,而非正确性 RDBMS开销和复杂性成为障碍 存储层抽象都是障碍 Hbase解决 信赖Hbase扩展存储而非逻辑 专注于应用逻辑而非扩展本身 目前已有上亿行上万列。可放心存储几十的行和几百万的列,比较,RDBMS 模式固定 拥有ACID特性 适于大中小程序 HBase 对数据集大小 或读写并发性或两者兼容的伸宿性要求,发现RDBMS性能损失大。,Hbase数据模型,定义:是一个稀疏的,长期存储的,
28、多维度的,排序的映射表。 索引:行关键字,列关键字和时间戳 值:一个不解释的字符数组 数据都是字符串,没类型,格式由客户来解释 (row:string, column:string,time:int64)-string,Hbase数据模型 行,每一行都有一个可排序的主键和任意多的列。 行关键字可以是任意字符串 表用行键即主键排序,通过主键访问表。 在一个行关键字下的每一个读写操作都是原子操作 有利于同行并发操作 举例,在Webtable里,通过反转URL中主机名的方式,可以把同一个域名下的网页组织成连续行。,Hbase数据模型 列族,每行列分组形成列族:“:” 每张表有一个family集合,固
29、定不变,相当于表结构 列族成员有相同前缀。OK:a与OK:b都属于OK列族成员 同一列族下存放的所有数据通常都是同一类型 列族必须先创建,然后能在其中的列关键字下存放数据,动态增加列 限定词任意字符串。比如,Webtable列族是anchor;给列族的每一个列关键字代表一个锚链接 物理存储 列族成员在文件系统存在一起,(确切)面向列族。 这是访问控制的基本单位。,Hbase数据模型 时间戳,表中每一个表项都可以包含同一数据的多个版本不同版本的表项内容按时间戳倒序排列,即最新的排在前面。 自动进行垃圾清除。用户可以指明只保留表项的最后n个版本 在Webtable中,在contents:列中存放确
30、切爬行一个网页的时间戳。如上的垃圾清除机制可以让我们只保留每个网页的最近三个版本。,Hbase数据模型,行名是一个反向URL即n.www。 contents列族存放网页内容 anchor列族存放引用该网页的锚链接文本。 CNN的主页被Sports Illustrater和MY-look的主页引用,因此该行包含了名叫“anchor:”和 “anchhor:my.look.ca”的列。列名字的格式是: 时间戳 每个锚链接只有一个版本,由时间戳标识, 如t9,t8;而contents列则有三个版本,分别由时间 戳t3,t5,和t6标识。,一个存储Web网页的例子的表的片断,Hbase数据模型 概念视
31、图,一个表可以想象成一个大的映射关系,通过主键,或者主键+时间戳,可以定位一行数据,由于是稀疏数据,所以某些列可以是空白的,下面就是数据的概念视图:,Hbase数据模型物理视图,在物理存储上面,它是按照列来保存的, 在概念视图上面有些列是空白的,这样的列实际上并不会被存储 如果在查询的时候不提供时间戳,返回最新版本,区域(tablet),表横向分不同区域,各区域代表所有行一个子集 区域确定:第一行(包含)最后行(不含)+随机标识 表初始单个区域-逐渐扩大超过阈值-以行为界分割 区域分散在HBase集群上单元 Bigtable通过行关键字的字典序来维护数据。动态划分成多个连续行叫做“子表”(ta
32、blet)是数据分布和负载均衡的单位。这样一来,读较少的连续行就比较有效率,架构与实现,Hbase由主节点master多个区域服务器regionserver从结点 Master 分配区域给已注册的区域服务器 Regionserver 负责0到多个区域,响应客户端读写请求 通知master分裂成子区域信息,特性,无真正索引 行顺序,无索引膨胀问题,插入操作性能与表大小无关 自动分区 商用硬件 建立在1000-5000节点,RDBMS非常消耗IO?,Hbase API,BT的提供了建立和删除表和列族的函数还提供了函数来修改集群,表和列族的元数据,比如说访问权限,Hbase API: 写入Bigtable.,/ Open the table Table *T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新财经背景下行为金融学课程教学探索与实践
- 众数中位数的题目及答案
- 阿坝州区域经济协调发展:现状剖析、问题洞察与策略探寻
- 图管会笔试题目及答案
- 龙盈智达笔试题及答案
- 防波堤全生命周期风险解析与科学管控策略研究
- 阿里巴巴社招c笔试题及答案
- 司法鉴定笔试题及答案
- 横店群演笔试题及答案
- 公关笔试题及答案
- 2026年四川省南充市中考历史试卷(含详细答案解析)
- 11-四年级数学期末模拟卷-含答案解析
- 2026年广西中考数学试卷(含答案)
- GB/T 451.3-2026纸和纸板第3部分:厚度的测定
- 2026年河南事业单位招聘(职业能力测验)考试真题及答案
- 2026年山东高考考生高考志愿填报指南课件
- 2026甘肃白银景泰县公安局招聘警务辅助人员25人笔试备考试题及答案详解
- 2025-2026学年福建省漳州市八年级下册期末考试数学试题 含答案
- 家用电器-5个问题理清海信集团旗下家电业务
- 2026年中国中医科学院广安门医院医护人员招聘笔试参考试题及答案详解
- 广东省广州市广大附中教育集团2022-2023学年九年级上学期自主招生数学试题(含答案解析)
评论
0/150
提交评论