信息科技为大数据时代提供技术支持
存储设备容量不断增加CPU处理能力大幅度提升网络带宽不断增加
大数据4V特征
数据量大数据类型繁多处理速度快价值密度底
大数据对思维方式的影响
全样而非抽样效率而非精确相关而非因果
云计算关键技术
虚拟化分布式存储分布式计算多租户
大数据与云计算,物联网的关系
三者区别
大数据侧重与对海量数据的存储,处理分析,从海量数据中发现价值,服务生产生活云计算本质旨在整合优化各种IT资源,通过网络方式廉价提供给用户物联网发展目标是实现物物相连,应用创新是物联网发展的核心 三者联系
整体上看,三者相辅相成。大数据根植与云计算,大数据分析的很多技术都来自云计算云计算的分布式数据存储和管理系统提供了海量数据的存储和管理能力,分布式平并行处理框架MR提供了海量数据分析能力。大数据为云计算提供了用武之地。物联网传感器构成大数据重要数据来源,没有物联网飞速发展,就不会带来数据产生方式的变革。物联网也需借助云计算,大数据技术实现物联网大数据的存储分析和处理。
hadoop生态系统
hdfs:是针对谷歌文件系统的开源实现,hdfs具有处理超大数据,流式处理,可以运行在廉价商用服务器上等优点。hbase:是一个提供可靠性,高性能,可伸缩,实时读写,分布式的列示数据库,一般采用hdfs作为其底层数据存储。MapReduce:MapReduce是针对谷歌MapReduce的开源实现。是一种用于大规模集群上的并行计算过程。Hive:hive是一个基于Hadoop的数据仓库工具,对Hadoop文件中的数据集进行整理,特殊查询和分析存储。Pig:是一种数据流语言和运行环境,适合于使用Hadoop和MapReduce平台来查询大型半结构化数据集。Mahout:提供一些可扩展的机器学习领域经典算法的实现Zookeeper:针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供分布式锁之类的基本服务,用于构建分布式应用,减轻分布式应用程序所承担的协调任务。Flume:提供的一个高可用,高可靠,分布式的海量日志采集,聚合和传输系统。Sqoop:主要用来在Hadoop和关系数据库之间交换数据,可以改进数据的互操作性。Ambari(Hue):基于web工具,支持hadoop集群安装,部署,配置和管理,支持大多数Hadoop组件,包括hdfs,MapReduce,Hive,Pig,Hbase,Zookeeper,Sqoop等。
HDFS默认的冗余复制因子是3
HBASE数据模型概述
hbase是一个稀疏,多维度,排序的映射表,这张表的索引是行键,列族,列限定符和时间戳。habse更新操作时,不会删除数据旧的版本,而是生成一个新的版本,旧版本仍保留,可对保留版本数量进行设置
数据模型的相关概念
表
行
列族
列限定符
单元格
时间戳
数据坐标是什么
hbase使用坐标来定位表中的数据,也就是说,每个值都是通过坐标来访问的。
hbase中需要根据行键,列族,列限定符和时间戳来确定一个单元格,因此可以视为一个"四维坐标",即[行键,列族,列限定符,时间戳]
如果把所有坐标看成一个整体,视为"键",把四维坐标对应的单元格中的数据视为"值",那么Hbase也可以看成一个键值数据库。
Hbase的功能组件
hbase的实现包括3个主要的功能组件:
库函数,链接到每个客户端
一个Master主服务器
许多个Region服务器
客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据,尤其需要指出,Hbase客户端并不依赖于Master而是借助于Zookeeper来获得Region的位置信息,所以大多数客户端从来不和主服务器Master通信,这种设计方式使得Master的负载很小。
Hbase常用的shell命令
创建表
create ‘t1’, {‘name’=>‘f1’,version=5}create ‘t1’, {‘name’=>‘f1’},{‘name’=>‘f2’},{‘name’=>‘f3’}create ‘t1’, ‘f1’,‘f2’,‘f3’创建t1表,将表按照分割算法HexStringSplit分布在15个Region里
create ‘t1’, ‘f1’, {numregions=>15,splitalgo=>‘HexStringSplit’} create ‘t1’, ‘f1’,{splits=>[‘10’,‘20’,‘30’,‘40’} list:列出所有表信息put:向表,行,列指定的单元格添加数据
put ‘t1’ , ‘row1’, ‘f1:c1’, ‘value1’, 时间戳 向表t1行row1和列f1:c1所对应的单元格添加数据value1 get:通过指定表名,行,列,时间戳,时间范围和版本号来获得相应单元格的值
get ‘t1’, ‘r1’,{column=>‘c1’,timerange=>[ts1,ts2],version=>4} 获得表t1 行r1 列c1时间范围为[ts1,ts2]版本号为4的数据get ‘t1’, ‘r1’, ‘c1’, ‘c2’ 获取t1表,行r1,列c1和c2上的数据 scan:浏览表的相关信息alter:修改列族模式
alter ‘t1’, name=>‘f1’ 向表中添加列族f1alter ‘t1’, name=>‘f1’,method=>‘delete’ 删除表t1中的列族f1alter ‘t1’, method=>‘table_att’,maxfilesize=>‘134217728’ count:统计表中的行数describe:显示表的线管信息enable/disable:使表有效或无效delete:删除指定单元格的数据
delete ‘t1’. ‘r1’, ‘c1’, ts1 删除表t1,行r1,列c1,时间戳ts1上的数据 drop:删除表exists:判断表是否存在truncate:使表无效,删除该表,然后重新建立表exit:退出hbase shellshutdown:关闭hbase集群version:输出hbase版本信息status:输出hbase集群状态信息
NoSQL数据库具有以下3个特点:
灵活的可扩展性灵活的数据模型与云计算紧密融合
关系数据库无法满足web2.0的需求
无法满足海量数据的管理需求无法满足数据高并发的需求无法满足高扩展性和高可用性的需求
关系数据库在web2.0时代鸡肋方面
web2.0网站系统通常不要求严格的数据库事务web2.0并不要求严格的读写实时性web2.0通常不包含大量复杂的SQL查询
关系数据库和NOSQL比较
NOSQL四大类型
键值数据库
列族数据库
文档数据库
图数据库
NOSQL三大基石CAP,BASE和最终一致性理论
CAP
C Consistency:一致性。它是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是分布式环境中,多点数据一致。A Availability: 可用性。它是指快速获取数据,可以在确定的时间内返回操作结果P Tolerance of Network Partition:分区容忍性。指当出现网络分区的情况时(系统中部分节点无法同其他节点进行通信),分离的系统也能够正常运行。
CAP理论告诉我们,一个分布式系统不可能同时满足一致性,可用性和分区容忍性这3个需求,最多只能同时满足其中2个。
BASE
说起BASE,不得不谈到ACID。
A 原子性 数据修改,要么全部执行,要么全都不执行C 一致性 事务前后,数据总额一致I 隔离性 所有操作全部执行完以前,其他会话不能看到过程D 持久性 一旦事务提交,对数据的改变就是永久的
BASE的基本含义是基本可用,软状态和最终一致性。强调的是系统的高可用性,可适当牺牲一致性活分区容忍性。
基本可用软状态最终一致性
MapReduce简介
谷歌发布的GFS,MapReduce和BigTable的三篇论文
MapReduce将复杂的,运行与大规模集群上的并行计算过程高度地抽象到两个函数,Map和Reduce,这两个函数及其核心思想都源自函数式编程语言。 MR中,一个存储在分布式文件系统中的大规模数据集会被切分成许多独立的小数据块,这些小数据块可以被多个Map任务并并行处理。MR会为每个map任务输入一个数据子集,map任务的结果会继续作为reduce任务的输入,最终由reduce任务输出最后结果,并写入分布式文件系统,使用mr处理的数据集需可以被分解为许多小数据集,而且每个小数据集都可以完全并行地进行处理。
MR的各个执行阶段(与书上略有不同)
Map阶段
设置InputFormat类,将数据切分为key-value(k1,v1)对,输入到第二步自定义Map逻辑,将第一步的结果转换为另外的key-value(k2,v2)对,输出结果 Shuffle阶段
对输出的key-value对进行分区对不同分区的数据按照相同的key排序(可选)对分组过的数据初步规约,降低数据的网络拷贝对数据进行分组,相同key的value放入一个集合中 Reduce阶段
对多个map任务的结果进行排序以及合并,编写Reduce函数实现自己的逻辑,对输入的key-value进行处理,转为新的key-value(k3,v3)输出设置OutputFormat处理并保存Reduce输出的key-value
hadoop的改进提升(改变1.0和2.0比较)
HDFS HA描述
HDFS2.0采用了HA架构。在一个典型的HA集群中,一般设置两个名称节点,其中一个名称节点处于“活跃”状态,另一个处于”待命“状态,处于活跃状态的名称节点负责对外处理所有客户端的请求,而处于待命状态的名称节点则作为备用节点,保持了足够多的系统元数据,当名称节点出现故障时提供快速恢复能力。也就是说,在HDFS HA中,处于待命状态的名称节点提供了“热备份”,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点,不会影响到系统的正常对外服务。
HDFS 联邦描述
HDFS联邦的设计可以很好地解决可扩展性,系统性能和隔离性三个方面的问题。
HDFS联邦中,设计了多个互相独立的名称节点,使得hdfs的命名服务能够水平扩展,这些名称节点分别进行各自命名空间和块的管理,互相之间是联邦关系,不需要彼此协调。HDFS联邦并不是真正的分布式设计。
HDFS联邦中的名称节点提供了命名空间和块管理功能。在HDFS联邦中,所有名称节点会共享底层的数据节点存储资源,如图,每个数据节点要向集群中所有的名称节点注册,并周期性地向名称节点发送“心跳和块信息”,报告自己的状态,同时也会处理来自名称节点的指令。
Hadoop 2.0对1.0提升方面?改进?
设计了YARN组件,将原本JobTracker三大功能(资源管理,任务调度和任务监控)进行拆分,分别交给不同的新组件去处理。重新设计后得到的YARN包括ResourceManager,ApplicationMaster和NodeManager,其中,由ResourceManager负责资源管理,由ApplicationMaster负责任务调度和监控,由NodeManager负责执行原TaskTracker的任务。这种设计降低了JobTracker的负担,提升了系统运行的效率和稳定性。
Hadoop生态中具有代表性的功能组件
Pig:Hadoop生态系统中组件,提供了类似SQL的Pig Lation语言,运行用户通过编写简单脚本实现复杂数据分析,而不需编写复杂MR程序。通常用于ETLTez:Apache开源的支持DAG作业的计算框架,源于MR框架,核心思想是将map和reduce两个操作进一步进行拆分,即Map被拆分成input,processor,sort,merge和output,Reduce被拆分成input,shuffle,sort,merge,processor和output等,经过分解后的这些元操作可以进行自由组合产生新的操作,经过控制程序组装形成一个大的DAG(有向无环图)作业。Kafka:kaafka是LinkedIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量消息,同时也能实时订阅消费消息。设计初衷是构建一个可以处理海量日志,用户行为和网站运营统计等的数据处理框架。
Spark特点
运行速度快容易使用通用性运行模式多样
Spark与Hadoop比较(优缺点)
Hadoop缺点
表达能力有限磁盘IO开销大延迟高 Spark优点
spark计算模式属于MR,但不局限于MR,还提供了多种数据集操作类型,编程模型比MR更灵活spark提供了内存计算,中间结果直接放在内存中,带来了更高的迭代运算效率。spark基于DAG的任务调度执行机制,要优于MR的迭代执行机制。
大数据处理主要三个类型
复杂的批量数据处理:时间跨度通常在数十分钟到数小时之间基于历史数据的交互式查询:时间跨度通常在数十秒到数分钟之间基于实时数据流的数据处理:时间跨度通常在数百毫秒到数秒之间
Spark基本概念
RDD:弹性分布式数据集的英文缩写,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。DAG:有向无环图的英文缩写,反应RDD之间的依赖关系Executor:是运行在工作节点上的一个进程,负责运行任务,并为应用程序存储数据。应用:用户编写的spark程序任务:运行在Executor上的工作单元作业:一个作业包含多个RDD及作用于相应RDD上的各种操作。阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为阶段,或被称为任务集
图计算简介
实际应用中,存在许多图计算问题,如最短路径,集群,网页排名,最小切割,连通分支等。图计算算法的性能直接关系到应用问题解决的高效性,尤其对于大型图(如社交网络和网络图)而言,更是如此。两种通用图计算软件
基于遍历算法的,实时图数据库。以图为顶点为中心的,基于消息传递批处理的并行引擎。(基于BSP模型实现的并行图形处理系统)
BSP模型
一个BSP模型由大量通过网络互相连接的处理器组成,每个处理器都有快速的本地内存和不同的计算线程,一次BSP计算过程包括一系列全局超步,每个超步主要包括3个组件
局部计算:每个参与的处理器都有自身的计算任务,他们只读取存储在本地内存中的值,不同处理器的计算任务都是异步并且独立。通信:处理器群互相交互数据,交互的形式是,由一方发起推送(Put)和获取(Get)操作。栅栏同步:当一个处理器遇到“路障”(或栅栏),会等其他所有处理器完成他们的计算步骤,每一次同步也是一个超步的完成和下一个超步的开始。
PageRank算法
PageRank是一个函数,它为网络中每个网页赋一个权值,通过权值判断该网页的重要性。该权值分配的方法并不是固定的,网页链接排名算法,基本公式
对任意一个网页链接,其PR值为链入该链接的源链接的PR值对该链接的贡献和。其中,N表示该网络中所有网页的数量,Ni为第i个源连接的链出度,PRi表示第i个源连接的PR值
网络之间的关系可以用一个连通图来表示。
四个网页A,B,C,D互相链入链出组成的连通图,从图中可以看出,网页A中包含指向网页B,C和D的外连接,网页B和D是网页A的源链接。