大数据处理技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单词统计
单词统计 map(String key, String value): // key: document name // value: document contents for each word w in value: EmitIntermediate(w, “1″);
reduce(String key, Iterator values): // key: a word // values: a list of counts int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result));
3. mapreduce的编程模型原理: 开发人员用两个函数表达这个计算: Map和Reduce。 即:(input)<k1, v1> ====> map(k1,v1) >list(k2,v2) ===> combine---> <k2, v2[List]> => reduce(k2,list(v2)) ->list(v2) >(output)
大数据处理技术
科信办 刘伟 2014年4月
第一节 Mapreduce编程模型 第二节 hadoop HDFS原理
第三节 nosql之hbase
第一节 Mapreduce编程模型
1.技术背景
2. mapreduce的概念 3.mapreduce的编程模型原理 4mapreduce工作流程 5.mapreduce的局限
列族:列名 column=anchor:bar, column=anchor:foo, column=anchor:foo, column=anchor:bar, column=anchor:foo, column=anchor:foo, column=anchor:bar, column=anchor:foo, column=anchor:foo,
工业界试图做的事情就是要实现一个 能够媲美或者比Google mapreduce更好的 系统,多年的努力下来,Hadoop(开源) 脱颖而出,成为外界实现MapReduce计算 模型事实上的标准,围绕着Hadoop,已经 形成了一个庞大的生态系统。
2. mapreduce的概念: MapReduce是一个编程模型,一个处 理和生成超大数据集的算法模型的相关实 现。简单的一句话解释MapReduce就是 “任务的分解与结果的汇总”。 mapreduce成功的最大因素是它简单的编 程模型。程序员只要按照这个框架的要求, 设计map和reduce函数,剩下的工作,如 分布式存储、节点调度、负载均衡、节点 通讯、容错处理和故障恢复都由 mapreduce框架(比如hadoop)自动完成, 设计的程序有很高的扩展性。
HBase表 •一个HBase集群是由任意数量的用户定义的表组成 •表模式只定义列族 ——每个列族包含任意数量的列 ——每一列包含任意数量的版本 ——列只在插入时才产生,空值不占用空间 ——除了表名和列族名外,所有的数据都是字节存储 ——表中的行已被排序,顺序存储 ——列族里列也被排序,顺序存储 (表、行、列族、列,时间戳)值
1.技术背景: 分布式并行计算是大数据(pb)处理 的有效方法,编写正确高效的大规模并行 分布式程序是计算机工程领域的难题。 并行计算的模型、计算任务分发、计 算机结果合并、计算节点的通讯、计算节 点的负载均衡、计算机节点容错处理、节 点文件的管理等方面都要考虑。
为了解决上述复杂的问题,谷歌设计 一个新的抽象模型,使用这个抽象模型, 普通程序员只要表述他们想要执行的简单 运算即可,而不必关心并行计算、容错、 数据分布、负载均衡等复杂的细节,这些 问题都被封装了,交个了后台程序来处理。 这个模型就是mapreduce。 谷歌2004年公布的mapreduce编程模型, 在工业界、学术界产生巨大影响,以至于 谈大数据必谈mapreduce。
4、容错:第一部分:故障类型及其检测方法 (nodeserver 故障,和网络故障,和脏数据问题)
5、容错第二部分:读写容错
6、容错第三部分:dataNode 失效
7、备份规则
8、结束语
第三节 nosql——hbase
为什么要用HBase ?
1.数据集成长为tb和pb级 2.横向扩展(增加节点)比扩容便宜,通过添加节点即 可适应数据的持续增长 *出于同样的原因,我们需要Hadoop,但有时Hadoop是不 够的 3.需要支持随机读取和随机写入 4,传统数据库扩容很昂贵,而且数据很难分发(分布式 计算)
5.mapreduce的局限 一个mapreduce任务的瓶颈往往在中间的shuffle阶段。 启动开销大,简单任务也要尽力map-shuffle-redcuce三个阶段,无法实时响应。 只能处理静态数据,对于变化快的数据无能为力。 mapreduce的系统实现是谷歌的机密,据说2007年谷歌mapreduce版本比2012 年hadoop快一个数量级。 Hadoop的mapreduce框架在2013年升级mapreduceV2,yarn。
value ……
特点 良好的压缩比。由于大多数数据库设计都有冗余,如此一来,压缩比非常高,把 40多M的数据导入infobright,没想到数据文件只有1M多 列上的计算非常的快。 方便MapReduce和Key-value模型的融合 读取整行的数据较慢,但部分数据较快
HBase Regions •表由任意数量的Regions 组成 •regions用startKey和endKey来标记 ——空表: (Table, NULL, NULL) ------两个region表: (Table, NULL, ―MidKey‖) and (Table, ―MidKey‖, NULL) •一个region放在一个RegionServer节点上 •多个region,可能放在一个不同的节点上,每一个region由若干个HDFS files and blocks组成,每个HDFS files and blocks由Hadoop复制,保存多个副本。
HBase是如何工作的呢? 两种类型的HBase节点: Master管理节点和RegionServer分区节点 •master(只有一个管理节点) ——管理集群的操作•任务调度、负载平衡、数据分裂 ——它不负责读/写数据 ——通过ZooKeeper and standbys(备用服务器)实现高度 可用性 •RegionServer(一个或多个) ——存表格的节点:执行读取、缓冲写 ——与客户端直接点对点进行读/写
– rowKey (ASC) + columnLabel(ASC) + Version (DESC) --> value
行键升序 row=row0, row=row0, row=row0, row=row1, row=row1, row=row1, row=row2, row=row2, row=row2,
HBase关键特性 •数据的自动分区——数据的增长,region是自动分裂 •数据透明分布 ——节点间的负载自动均衡 •表按照行排序,行按照列排序 ——这个设计可以高效读取和扫描 ——组合键(即列)可以排序也可以分组 •有服务器端的过滤功能 •因为集成ZooKeeper,所以没有单点故障 •在线状态下(不终止服务的情况下)快速添加/移除的节点——移动数 据的位置,不移动数据(指向另外两个备份的中的一个) •在线状态下(不终止服务的情况下)支持创建/修改表——可以配置表 和列族的参数 •与Hadoop MapReduce关系密切: -TableInputFormat / TableOutputForma表输入/输出格式化 HFileOutputFormat文件输出格式化(都是mapreduce计算)
4. mapreduce工作流程
Map阶段:数据经过分片化成M个数据集,每个数据集由一个maper节点经 过map函数处理成key-value对形式的数据集。 Shuffle阶段:map输出的结果放在maper节点本地内存缓存区,缓存区先按 照key进行分区(如果有R个reducer,hash(key) mod R分成R个分区,初步 划分)、分区内对key排序(排序后可附加combiner合并操作,减少写磁盘数 据量),缓冲区快要溢出时,溢写文件,多个溢写文件合并,合并过程再次 排序(排序后可附加combiner合并操作),最后形成一个已经分区的、已经 排序(对key的排序)的文件。 Reduce端会把属于本区的数据取(fetch)到内存,进行合并,合并过程再次 排序,缓冲区快要溢出时,溢写文件,多个溢写文件合并,合并过程再次排 序,合并为更大的排序文件,最终实现reduce输入数据是经过排序(对key的 排序)的数据。有r个reduce,就有r个结果。 其实不管在map端还是reduce端,MapReduce都是反复地执行排序,合并操 作,所以说:mapreduce是大数据处理的灵魂,排序是mapreduce的灵魂。 Reduce阶段:最后一次合并的数据总是直接送到Reduce 函数那里,Reduce 函数会作用在排序输入的每一个key-list(value)上,最后的输出key-value对 被直接写到HDFS上(分布式文件系统)。
第二节 HDFS (hadoop分布式文件系统)
1.三个部分: 客户端、nameserver(可理解为主控和文件 索引,类似linux的inode)、datanode(存放实际数据)
2、如何写数据过程
2、如何写数据过程
2、如何写数据过程
3、读取数据过程
4、容错:第一部分:故障类型及其检测方法 (nodeserver 故障,和网络故障,和脏数据问题)
HBase架构 •region信息和位置信息存储在特殊目录表 ----ROOT表包含元数据表的位置 ----.META表包含user regions的模式(结构说明)和位置信息 •-ROOT的位置存储在zookeeper上,-这是“引导”区 •zookeeper节点用于协调/监控 ——引导集群选举一个节点作为master节点 ——检测RegionServer节点故障 的临时节点(故障信息传递给master处理)
时间戳 timestamp=1174184619081 timestamp=1174184620720 timestamp=1174184617161 timestamp=1174184619081 timestamp=1174184620721 timestamp=1174184617167 timestamp=1174184619081 timestamp=1174184620724 timestamp=1174184617167
一共分为map(分解) shuffle(洗牌) reduce(归并)三个阶段。map阶段,每个节 点调用程序员编写的map函数,作用于每一个 在此节点存放的键值对,map函数的输出同样 是一些键值对,中间结果进入shuffle阶段, shuffle系统自动完成,程序员无须也无法控制, shuffle阶段会把所有中间结果里的键相同的所 有键-值对通过网络传递给同一个目标节点。 在最后的reduce阶段,每个节点会对所有键相 同的键值对调用程序员编写的reduce函数,输 出最终结果。
HBase是什么? •分布式 •列式数据库 •多维 •高可用性 •高性能 •存储系统 目标:十亿行*数百万列*成千上万的版本 Pb级数据分布在成千上万的服务器节点上
Leabharlann Baidu
HBase不是… 不是传统的SQL数据库 ——没有连接,没有查询引擎,没有类型,没有SQL ——有事务和二级索引,但这些是插件,而不是HBase的核心 部分 •作为RDBMS的替代• 必须了解RDBMS 相反的模式 ——非标准的数据 ——表格很宽,数据分布稀疏
HBase表数据结构 •一张表里行的映射与其列族是一个有序映射关系 ——SortedMap(rowlist(ColumnFamilies)) •一个列族里的列名与版本值是一个有序映射关系 ——SortedMap(columnSortedMap(Versioned Values)) •一列里时间戳与值是一个有序映射关系 ------SortedMap(Timestamp Value) HBase表是一个三维有序的映射表 SortedMap(RowKey,List(SortedMap(Column, List( SortedMap (Timestamp, Value)) ) ))