信息化浪潮 | 发生时间 | 标志 | 解决问题 | 代表企业 |
---|---|---|---|---|
第一次浪潮 | 1980年前后 | 个人计算机 | 信息处理 | Intel、AMD、IBM、苹果、微软、联想‘戴尔、惠普等 |
第二次浪潮 | 1955年前后 | 互联网 | 信息传输 | 雅虎、谷歌、阿里巴巴、百度、腾讯等 |
第三次浪潮 | 2010年前后 | 物联网、云计算和大数据 | 信息爆炸 | 将涌现出一批新的市场标杆企业 |
人类社会正在经历第二次“数据爆炸”,各种数据的产生速度之快,产生数量之大,已远远超出人类可以控制的范围,“数据爆炸’成为大数据时代的鲜明特征。
实验科学
采用实验来解决一些科学问题。
理论科学
采用各种数学、几何、物理等理论,构建问题模型和解决方案。
计算科学
通过设计算法并编写乡音程序输入计算机运行,人类可以借助于计算机的高速运算能力去解决各种问题。
数据密集型科学
一般先提出可能的理论,在手机数据,然后通过计算来验证。
全样而非抽样
科学分析完全可以针对全集数据而不是抽样数据,并且可以在短时间内迅速得到分析结果。
效率而非精确
全样分析结果不存在误差被放大的问题,海量数据的实时分析才是大数据时代的首要目标。
相关而非因果
大数据时代,因果关系不在那么重要,人们转而追求相关性。
传统的数据库以关系型数据库为基础,无论是数据类型还是数据量方面都存在较大的限制。而现在大数据决策可以面向类型繁多的、非结构化数据进行决策分析。
领域 | 大数据应用 |
---|---|
互联网 | 借助于大数据技术,可以分析客户行为,进行商品推荐和有针对性的广告投放 |
物流行业 | 利用大数据优化物流网络,提高物流效率,降低物流成本 |
···· |
技术层面 | 功能 |
---|---|
数据采集与预处理 | 利用ETL工具将分布的、异构数据源中的数据,如关系数据、平面数据文件等,抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础;也可以利用日志采集工具(如Flurme、Kafka 等)把实时采集的数据作为流计算系统的输人,进行实时处理分析 |
数据存储与管理 | 利用分布式文件系统、数据仓库、关系数据库、NoSQL数据库、云数据库等,实现对结构化、半结构化和非结构化海量数据的存储和管理 |
数据处理与分析 | 利用分布式并行编程模型和计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析;对分析结果进行可视化呈现,帮助人们更好地理解数据、分析数据 |
数据安全和隐私保护 | 在从大数据中挖掘潜在的巨大商业价值和学术价值的同时,构建隐私数据保护体系和数据安全体系,有效保护个人隐私和数据安全 |
大数据产业包括IT基础设施层、数据源层、数据管理层、数据分析层、数据平台层、数据应用层
可以说, 云计算、大数据和物联网三者已经彼此渗透、相互融合,在很多应用场合都可以同时看到三者的身影。在未来,三者会继续相互促进、相互影响,更好地服务于社会生产和生活的各个领城。
Hadoop 的核心是分布式文件系统 HDFS和 MapReduce,HDFS是谷歌文件系 统 GFS的开源实现, MapReduces是针对谷歌 MapReduce的开源实现。
高可靠性,高效性,高可扩展性,高容错性,成本低,运行在 Linux 平台, 支持多种编程语言。
2007年,雅虎在 Sunnyvale 总部建立了 M45——一个包含了 4000 个处理器 和 1.5PB 容量的 Hadooop集群系统; Facebook主要将 Hadoop平台用于日志处理,推荐系统和数据仓库等方面; 百度主要使用 Hadoop于日志的存储和统计、 网页数据的分析和挖掘、 商业分析、 在线数据反馈、网页聚类等。
Hadoop-env.sh
core-site.xml
NodeManger
Jps
NameNode
SecondaryNameNode
DateNode
ResourceManger
设计需求 | 含义 | HDFS的实现情况 |
---|---|---|
透明性 | 具备访问透明性、位置透明性、性能、和伸缩透明性 | 只能提供一定程度的访 问透明性,完全支持位置 透明性、性能和伸缩透明 性 |
并发控制 | 客户端对于文件的读写 不应该影响其他客户端 对同一个文件的读写 | 机制非常简单,任何时候 都只允许有一个程序写入某个文件 |
文件复制 | 一个文件可以拥有不同位置的多个副本 | HDFS采用了多副本机制 |
硬件和操作系统的异构 | 可以在不同的操作系统 和计算机上实现同样的 客户端和服务端程序 | 采用 Java 语言开发,具有很好的跨平台能力 |
可伸缩性 | 支持节点的动态加入或 退出 | 建立在大规模廉价机器 上的分布式文件系统集 群,具有很好的伸缩性 |
容错 | 保证文件服务在客户端 或者服务端出现问题的 时候能正常使用 | 具有多副本机制和故障 自动检测、恢复机制 |
安全 | 保证系统的安全性 | 安全性较弱 |
分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为俩类,一类叫“主节点”或者也被称为“名称节点”,另一类叫“从节点”或者也被称为“数据节点”。
名称节点不参与数据的传输。
HDFS 采用多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分不到不 同的数据节点上。
这个文件首先被写入本地,被切分成若干个块,每个块向 HDFS集群中名称节点发起写 请求,名称节点会将各个数据节点的使用情况,选择一个数据节点列表返回给客户端, 当第一个数据节点接收块的时候,写入本地,并且向第二数据节点发起连接请求,把自己的接收的块传给第二个数据节点,依次类推,列表中的对个数据节点形成一条数据复 制的流水线。最后数据写完后,数据复制同时完成。
HBase 利用 Hadoop MapReduce 来处理 HBase 中的海量数据,实现高 性能计算;利用 Zookeeper 作为协同服务,实现稳定服务和失败恢复;使用 HDFS 作为高可靠的底层存储, 利用廉价集群提供海量数据存储能力 ; Sqoop 为 HBase 的底层数据导入功能, Pig 和 Hive 为 HBase 提供了高层语言支持, HBase 是 BigTable 的开源实现。
项目 | BigTable | HBase |
---|---|---|
文件系统 | GFS | HDFS |
海量数据处理 | MapReduce | Hadoop MapReduce |
协同服务管理 | Chubby | Zookeeper |
区别 | 传统数据库 | HBase |
---|---|---|
数据类型 | 关系模型 | 列族数据模型 |
数据操作 | 插入、删除、更新、查询、 多表连接 | 插入、查询、删除、清空, 无法实现表与表之间关 联 |
存储模式 | 基于行模式存储,元组或 行会被连续地存储在磁盘中 | 基于列存储,每个列族都 由几个文件保存,不同列族的文件是分离的 |
数据索引 | 针对不同列构建复杂的 多个索引 | 只有一个行键索引 |
数据维护 | 用最新的当前值去替换 记录中原来的旧值 | 更新操作不会删除数据 旧的版本,而是生成一个 新的版本 |
可伸缩性 | 很难实现横向扩展,纵向 扩展的空间也比较有限 | 轻易地通过在集群中增 加或者减少硬件数量来 实现性能的伸缩 |
HBase 提供了 Native Java API , HBase Shell , Thrift Gateway , REST GateWay , Pig , Hive 等访问接口。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zjRKNwio-1605786639694)(D:\firefoxdowload\图片\image-20201011115504000.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TtQRvqhY-1605786639696)(D:\firefoxdowload\图片\image-20201011115756744.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N58HeT7M-1605786639697)(D:\firefoxdowload\图片\image-20201011115815500.png)]
在 HBase 的概念视图中,一个表可以视为一个稀疏、多维的映射关系。 在物理视图中,一个表会按照属于同一列族的数据保存在一起。
HBase 采用分区存储, 一个大的表会被分拆许多个 Region ,这些 Region 会被分发到不同的服务器上实现分布式存储。
通过构建的映射表的每个条目包含两项内容,一个是 Region标识符,另一 个是 Region 服务器标识,这个条目就标识 Region 和 Region 服务器之间的对应关系,从而就可以知道某个 Region 被保存在哪个 Region 服务器中。
层次 | 名称 | 作用 |
---|---|---|
第一层 | Zookeeper 文件 | 记录了 -ROOT-表的位置信息 |
第二层 | -ROOT-表 | 记录了 .META.表的 Region 位置信息 -ROOT-表只能有一个Region。通过 -ROOT-表,就可以访 问.META.表中的数据 |
第三层 | .META.表 | 记录了用户数据表的 Region 位置信息,.META.表可以有多个 Region,保存了 HBase中所有用户数据表的 Region 位置信息 |
首先访问 Zookeeper ,获取-ROOT 表的位置信息,然后访问 -Root- 表, 获得.MATA. 表的信息,接着访问 .MATA. 表,找到所需的 Region 具体位于哪个 Region 服务器,最后才会到该 Region 服务器读取数据。
客户端
客户端包含访问 HBase 的接口,同时在缓存中维护着已经访问过的 Region 位置信息,用来加快后续数据访问过程 。
Zookeeper 服务器
Zookeeper 可以帮助选举出一个 Master 作为集群的总管, 并保证在任何时 刻总有唯一一个 Master 在运行,这就避免了 Master 的“单点失效”问题。
Master
主服务器 Master 主要负责表和 Region 的管理工作:管理用户对表的增加、 删除、修改、查询等操作;实现不同 Region 服务器之间的负载均衡; 在 Region 分裂或合并后,负责重新调整 Region 的分布;对发生故障失效的 Region 服务 器上的 Region 进行迁移 。
Region
服务器 Region 服务器是 HBase 中最核心的模块,负责维护分配给自己的 Region ,并响应用户的读写请求。
Region 服务器内部管理一系列 Region 对象和一个 HLog 文件,其中, HLog 是磁盘上面的记录文件, 它记录着所有的更新操作。每个 Region 对象又是由多 个 Store 组成的,每个 Store 对象了表中的一个列族的存储。 每个 Store 又包含 了 MemStore 和若干个 StoreFile ,其中, MemStore 是在内存中的缓存。
每个 Store 对应了表中的一个列族的存储。每个 Store 包括一个 MenStore 缓 存和若干个 StoreFile 文件。 MenStore 是排序的内存缓冲区,当用户写入数据 时,系统首先把数据放入 MenStore 缓存,当 MemStore 缓存满时,就会刷新 到磁盘中的一个 StoreFile 文件中,当单个 StoreFile 文件大小超过一定阈值时, 就会触发文件分裂操作。
HBase 系统为每个 Region 服务器配置了一个 HLog 文件,它是一种预 写式日志( Write Ahead Log ),用户更新数据必须首先写入日志后,才能写入 MemStore 缓存,并且,直到 MemStore 缓存内容对应的日志已经写入磁盘, 该缓存内容才能被刷写到磁盘。
Zookeeper 会实时监测每个 Region 服务器的状态, 当某个 Region 服务器 发生故障时, Zookeeper 会通知 Master 。
Master 首先会处理该故障 Region 服务器上面遗留的 HLog 文件,这个遗 留的 HLog 文件中包含了来自多个 Region 对象的日志记录。
系统会根据每条日志记录所属的 Region 对象对 HLog 数据进行拆分,分别 放到相应 Region 对象的目录下,然后,再将失效的 Region 重新分配到可用的 Region 服务器中,并把与该 Region 对象相关的 HLog 日志记录也发送给相应 的 Region 服务器。
Region 服务器领取到分配给自己的 Region 对象以及与之相关的 HLog 日志记录以后,会重新做一遍日志记录中的各种操作, 把日志记录中的数据写入到 MemStore 缓存中,然后,刷新到磁盘的 StoreFile 文件中,完成数据恢复。
create 创建表
list 列出HBase中的所有表
put 向表,行,列指定单元格添加数据
get 通过指定表明,行键,列名,时间戳,时间范围和版本号来获得相应单元格的值
scan 流览表的相关信息
NoSQL,not only SQL, 是一种不同于关系数据库的数据库管理系统设计方式, 是对非关系型数据库的一类统 称,它采用的数据模型并非传统关系数据库的关系模型,而是类似键 /值、列族、文档等非关系模型。
比较标准 | RDBMS | NoSQL | 备注 |
---|---|---|---|
数据库原理 | 完全支持 | 部分支持 | RDBMS 有关系代数理论作为基础 NoSQL 没有统一的理论基础 |
数据规模 | 大 | 超大 | RDBMS 很难实现横向扩展,纵向扩展的 空间也比较有限,性能会随着数据规模的 增大而降低 NoSQL 可以很容易通过添加更多设备来支持更大规模的数据 |
数据库模式 | 固定 | 灵活 | RDBMS 需要定义 数 据库模式,严格遵守 数据定义和相关约束 条件 NoSQL 不存在数据库 模式,可以自由灵活 定义并存储各种不同 类型的数据 |
查询效率 | 快 | 可以实现高效的简单 查询,但是不具备高 度 结 构 化 查 询 等特性,复杂查询的性能 不尽人意 | RDBMS 借助于索 引 机制可以实现快速查 询(包括记录查询和 范围查询) 很多 NoSQL数据库没 有面向复杂查询的索 引,虽然 NoSQL可以 使用 MapReduce 来加速查询,但是,在复杂查询方面的性能仍然不如RDBMS |
一致性 | 强一致性 | 弱一致性 | RDBMS 严格遵守事务 ACID模型,可以保证事务强一致性 很多NoSQL数据库放松了对事务 ACID 四 性的要求,而是遵守 BASE模型,只能保证最终一致性 |
数据完整性 | 容易实现 | 很难实现 | 任何一个 RDBMS 都可以很容易实现数据完整性,比如通过主键或者非空约束来实现实体完整性,通过 主键、外键来实现参照完整性,通过约束或者触发器来实现用 户自定义完整性但是,在 NoSQL数据库却无法实现 |
扩展性 | 一般 | 好 | RDBMS 很难实现横向扩展,纵向扩展的空间也比较有限,NoSQL 在设计之初就充分考虑了横向扩展 的需求,可以很容易通过添加廉价设备实现扩展 |
可用性 | 好 | 很好 | RDBMS 在任何时候都以保证数据一致性为优先目标,其次才是优化系统性能,随着数据规模的增大, RDBMS 为了保证严格的一致性,只能提供相对较弱的可用性大多数 NoSQL都能提供较高的可用性 |
标准化 | 是 | 否 | RDBMS 已经标准 化 (SQL) NoSQL 还没有行业标 准,不同的 NoSQL数 据库都有自己的查询 语言,很难规范应用 程序接口 StoneBraker 认为:NoSQL 缺乏统一查询语言 , 将会拖慢NoSQL发展 |
技术支持 | 高 | 低 | RDBMS 经过几十 年 的发展,已经非常成 熟,Oracle 等大型厂商都可以提供很好的技术支持 NoSQL 在技术支持方面仍然处于起步阶段,还不成熟,缺乏有力的技术支持 |
可维护性 | 复杂 | 复杂 | RDBMS 需要专门的数据库管理员 (DBA) 维护 NoSQL 数据库虽然没有 DBMS 复杂,也难以维护 |
键值数据库、列族数据库、文档数据库和图数据库
数据库 | 适用场合 | 优点 | 缺点 |
---|---|---|---|
键值数据库 | 通过键而不是值来查询的业务 | 扩展性好,灵活性好,大量写操作时性能高 | 无法存储结构化信息,条件查询效率低 |
列族数据库 | 不需要ACID事务支持的情形 | 查找速度快,可扩展性强,容易进行分布式扩展,复杂性低 | 功能较少,大多不支持事务强一致性 |
文档数据库 | 只在相同的文档上添加事务 | 性能好(高并发),灵活性高,复杂性低, 数据结构灵活提供嵌入式文档功能,将经常查询的数 据存储在同一个文档中既可以根据键来构建索引,也可以根据内容构建索引 | 缺乏统一的查询语言 |
图形数据库 | 具有高度相互关联关系的数据 | 灵活性,支持复杂的图形算法,可用于构建复杂的关系图谱 | 复杂性高,只能支持一定的数据规模 |
C(consistency):一致性,是指任何一个读操作之前都能读到之前完成的写操作的结果,也就是说在分布式环境中,所有节点在同一时间的数据时相同的。
A(availability):可用性,是指获取数据时可以在确定的时间内返回操作结果,保证每个请求不管是否成功都能返回操作结果
P(tolerance of network partition):分区容忍性,是指当网络出现分区时,分离的系统也能进行正常工作。也就是说,任意数据的丢失不会影响系统的运作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVvkyzjR-1605786639700)(D:\firefoxdowload\图片\image-20201118210617503.png)]
BASE的基本含义是基本可用( Basically Availble)、软状态( Soft-state )和最终一致性 (Eventual consistency )
“软状态( soft-state )”是与“硬状态( hard-state )”相对应的一种提法。数据库保存的数据是“硬状态”时,可以保证数据一致性,即保证数据一直是正确的。 “软状态”是指状态可以有一段时间不同步,具有一定的滞后性。
最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以区分为:
(1)会话一致性:它把访问存储系统的进程放到会话( session)的上下文中,只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统保证不会延续到新的会话;
(2)单调写一致性:系统保证来自同一个进程的写操作顺序执行。系统必须保证这种程度的一致性,否则就非常难以编程了
(3)单调读一致性:如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值
(4)因果一致性:如果进程 A 通知进程 B 它已更新了一个数据项,那么进程 B 的后续访问将获得 A 写入的最新值。而与进程 A 无因果关系的进程 C的访问,仍然遵守一般的最终一致性规则
(5)“读己之所写”一致性:可以视为因果一致性的一个特例。当进程 A 自己执行一 个更新操作之后,它自己总是可以访问到更新过的值,绝不会看到旧值
所有后续的访问都可以读取到操作OP写入的最新值。从 OP操作完成到后续访问可以最终读取到OP写入的最新值,这之间的时间间隔称为“不一致性窗口”。
会话一致性、单调写一致性、单调写一致性、因果一致性和“读己之所写”一致性。
致性,否则就非常难以编程了
(3)单调读一致性:如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值
(4)因果一致性:如果进程 A 通知进程 B 它已更新了一个数据项,那么进程 B 的后续访问将获得 A 写入的最新值。而与进程 A 无因果关系的进程 C的访问,仍然遵守一般的最终一致性规则
(5)“读己之所写”一致性:可以视为因果一致性的一个特例。当进程 A 自己执行一 个更新操作之后,它自己总是可以访问到更新过的值,绝不会看到旧值
所有后续的访问都可以读取到操作OP写入的最新值。从 OP操作完成到后续访问可以最终读取到OP写入的最新值,这之间的时间间隔称为“不一致性窗口”。
会话一致性、单调写一致性、单调写一致性、因果一致性和“读己之所写”一致性。
NewSQL是对各种新的可扩展、 高性能数据库的简称, 这类数据库不仅具有 NoSQL对海量数据的存储管理能力,还保持了传统数据库支持 ACID和 SQL特性。
云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法、它极大地增强了数据库的存储能力, 消除了人员、 硬件、软件的重复配置,让软、硬件升级变得更加容易,同时,也虚拟化了许多后端功能。 云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。
项目 | 传统方式 | 云计算方式 |
---|---|---|
使用方式 | 本地安装本地使用 | 软件运行在云计算厂商的服务器上,在任何有网络接入的地方的都可以随时使用软件 |
付费方式 | 需要一次性支付较大的初期投入成本,包括建设机房、配置硬件、购买各种软件 | 零成本投入就可以立即获得所需的IT资源 |
维护成本 | 需要自己花钱聘请专业技术人员维护 | 零成本,所有维护工作由云计算厂商负责 |
获得IT资源的速度 | 需要耗费较长时间建设机房、购买和安装调试设备系统 | 随时可用,购买服务后立即可用 |
共享方式 | 自己建设,自给自足 | 云计算厂商建设好云计算服务平台后,同时为众多用户提供服务 |
维修速度 | 出现病毒、系统崩费等问题时,需要自己聘请IT人员维护,很多普通企业的IT人员技术能力有限,碰到一些问题甚至需要寻找外援,通常不能立即解决问题 | 出现任何系统问题时,云计算厂商都会凭借其专业化团队给出及时响应,确保云服的正常使用 |
资源利用率 | 利用率较低,投入大量资金建设的IT系统,往往只供企业自己使用,当企业不需要那么多IT资源时,就会产生资源浪费 | 利用率较高,每天都可以为大量用户提供服务;当存在闲置资源时,云计算管理系统会自动关闭和退出多余资源;当需要增加资源时,又会自动启动和加人相关资源 |
用户搬迁时的成本 | 当企业椒家时,原来的机房设施就要作度需要在新地方重新投入较大成本建设机房 | 企业无论搬迁到哪里,都可以通过网络零成本立即获得云计算服务, 因为资源在云端, 不在用户端,用户搬迁不会影响到IT资源的分布 |
资源可拓展性 | 企业自己建设的IT基础设施的服务能力通常是有上限的, 当企业业务量突然增加时,现有的基础设施无法立即满足需求,需要花费时间和金钱购买和安装新设备;业务高峰过去时,多余的设备就会闲置,造成资源浪费 | 云计算厂商可以为企业提供近无限的 IT,用户想用多少都可以立即获得,当用户不使用时,只需退订多余资源,不存在任何资源浪费问题 |
1)动态可扩展 2)高可用性 3)较低的使用代价 4)易用性 5)高性能 6)免维护 7)安全
在大数据时代,每个企业几乎每天都在不断产生大量的数据。企业类型不同,对于存储的需求也千差万别,而云数据库可以很好地满足不同企业的个性化存储需求。 首先,云数据库可以满足大企业的海量数据存储需求。云数据库在当前数据爆炸的大数据时代具有广阔的应用前景。 传统的关系数据库难以水平扩展, 相本无法存储如此海量的数据。因此,具有高可扩展性的云数据库就成为企业海量数据存储管理的很好选择。 其次,云数据库可以满足中小企业的低成本数据存储需求。中小企业在 IT 基础设施方 面的投人比较有限, 非常渴望从第三方方便、 快捷、廉价地获得数据库服务。云数据库采用 多租户方式同时为多个用户提供服务, 降低了单个用户的使用成本, 而且用户使用云数据库服务通常按需付费, 不会浪费资源造成额外支出, 因此, 云数据库使用成本很低, 对于中小 企业而言可以大大降低企业的信息化门槛, 让企业在付出较低成本的同时, 获得优质的专业 级数据库服务 ,从而有效提升企业信息化水平。 另外,云数据库可以满足企业动态变化的数据存储需求。 企业在不同时期需要存储的数 据量是不断变化的, 有时增加, 有时减少。在小规模应用的情况下,系统负载的变化可以由 系统空闲的多余资源来处理 ,但是,在大规模应用的情况下,传统的关系数据库由于其伸缩性较差, 不仅无法满足应用需求, 而且会给企业带来高昂的存储成本和管理开销。 而云数据 库的良好伸缩性,可以让企业在需求增加时立即获得数据库能力的提升 ,在需求减少时立即释放多余的数据库能力 ,较好地满足企业的动态数据存储需求。
云数据库供应商主要分为三类。
传统的数据库厂商,如 Teradata、Oracle、IBM DB2 和 Microsoft SQL Server 等。
涉足数据库市场的云供应商,如 Amazon、Google.Yahoo!、阿里、百度、腾讯等。
新兴厂商,如 IVertica.LongJump 和 EnterpriseDB 等。
SQL Azure 的体系架构中包含了一个虚拟机簇,可以根据工 作负载的变化 ,动态增加或减少虚拟机的数量。每台虚拟机 SQL Server VM ( Virtual Machine ) 安装了 SQL Server2008 数据库管理系统,以关系模型存储 数据。通常 ,-一个数据库会被分散存储到 3~5 台 SQL ServerVM 中。每台 SQL Server VM 同时安装了 SQL Azure Fabric 和 SQL Azure 管理服务 ,后者负责数 库的数据复写工作, 以保障 SQL Azure 的基本高可用性要求。不同 SQL Server VM 内的 SQLAzure Fabric 和管理服务之间会彼此交换监控信息,以保证整体服务的可监控性。
UMP 系统是构建在一个大的集群之上的,通过多个组件的协同作业,整个系统实现了对用户透明的容灾、读写分离、分库分表、资源管理、资源调度、资源隔离和数据安全功 能。
UMP 系统会为用户创建两个 MySQL 实例,一个是主库,一个是从库,且 这两个 MySQL 实例之间相互把对方设置为备份机,任何一个 MySQL 实例上面 发生的更新都会复制到对方。 一旦主机宕机,Controller 服务器会启动主从切换, 修改映射关系;宕机后的主库在恢复处理后会再次上线,并从从库中复制更新, 直到更新到完全一致状态的时候, Controller 服务器会再次发起主从切换操作。
UMP 系统实现了对于用户透明的读写分离功能,当整个功能被开启时,负责向用户提供访问 MySQL 数据库服务的 Proxy 服务器,就会对用户发起的 SQL 语句进行解析,如果属于写操作 ,就直接发送到主库,如果是读操作,就会 被均衡地发送到主库和从库上执行。
系统内部划分为 3 种规格的用户, 分别是数据量和流量比较小的用户、 中等 规模用户以及需要分库分表的用户。 多个小规模用户可以共享同一个 MySQL 实 例,中等规模用户独占一个 MySQL 实例,需要分库分表的用户的多个 MySQL 实例共享同一个物理机,通过这些方式实现了资源的虚拟化,降低了整体成本。 UMP 通过“用 Cgroup 限制 MySQL 进程。
RDS 是阿里云提供的关系型数据库服务 ,它将直接运行于物理服务器上的数 据库实例租给用户, 是专业管理、高可靠的云端数据库服务。 用户可以通过 Web 或 API 的方式,在几分钟内开通完全兼容 MySQL 或 SQL Server 的数据库实例。 RDS由专业数据库管理团队维护, 还可以为用户提供数据备份、 数据恢复、扩展 升级等管理功能,相对于用户自建数据库而言, RDS 具有专业、高可靠、高性能、 灵活易用等优点, 能够帮助用户解决费时费力的数据库管理任务, 让用户将更多 的时间聚焦在核心业务上。 RDS 适用于各行业数据库应用,如 SaaS 应用、电子 商务网站、商家后台应用、社区网站、手机 APP 以及游戏类应用等。 RDS 具有 安全稳定、数据可靠、自动备份、管理透明、性能卓越,灵活扩容等优点,可以提供专业的数据库管理平台、专业的数据库优化建议以及完善的监控体系。
RDS实例或简称 “实例 ”,是用户购买 RDS服务的基本单位。在实例中可以创建多个数据库,可以使用常见的数据库客户端连接、管理及使用数据库。可以通过 RDS管理控 制台或 OPEN API来创建、修改和删除数据库。各实例之间相互独立、资源隔离,相互之间不存在 CPU、内存、 IOPS等抢占问题。但是,同一实例中的不同数据库之间是资源共享的。 每个实例拥有其自己的特性,如数据库类型、版本等,系统有相应的参数来控制实例行为。 用户所购买 RDS实例的性能,取决于购买 RDS实例时所选择的配置,可供用户选择的硬件配置项为内存和磁盘容量。 RDS数据库或简称 “数据库 ”,是用户在一个实例下创建的逻辑单元,一个实例可以创建多个数据库,在实例内数据库命名唯一,所有数据库都会共享该实例下的资源,如 CPU、内 存、磁盘容量等。 RDS不支持使用标准的 SQL 语句或客户端工具创建数据库,必须使用 OPEN API或 RDS管理控制台进行操作。
方法 1: 使用客户端 MySQL-Front 访问。使用客户端 MySQL-Front,在连接 Host 框中 输人数据实例链接地址、端口 (默认 3306)、数据库用户名和数据库密码后,单击 “确定 ”按钮 即可。
方法 2: 使用数据库管理 T 具 Navicat MySQL。 Navicat_MySQL 是一套专为 MySQL 设计的强 大的数据库管理及开发工具,可以在连接输人框中输人数据实例地址、端口 (默认 3306 )、 数据库用户名和数据库密码后,单击 “确定 ”按钮即可。
方法 3: 使用 MySQL 命令登录。 用户安装 MySQL 客户端后, 可进人命令行方式连接数据库。 命令格式如下。 mysql -u user_name -h yuqianli.mysql.rds.aliyuncs.com -P3306 -pxxxx 其中, -u 指定的是用户名, -h 指定的是主机名, -P指定的是端口, -p 指定的是密码。
方法 4: 使用阿里云控制台 iDB Cloud 访问。阿里云控制台 iDB Cloud 的页面如图 6-7 所示, RDS 连接地址以及端口不需要再输人, 只需在 “用户名 ”中输人数据库的账号 ,在“密码 ”栏中输 人数据库账号的密码,便可以登录 RDS进行数据操作了。
MapRuduce是Hadoop的一个并行编程模型组件,属于Hadoop重要的组成部分,并且可以和Hadoop的其他组件相互合作完成任务。
适合用 MapReduce 来处理的数据集,需要满足一个前提条件 : 待处理的数据集可以分解成许多小的数据集, 而且每一个小数据集都可以完全并 行地进行处理。
JobTracker运行在master节点上,负责作业任务的调度,监控任务和作业的执行情况,并重新调度执行失败的任务。
TasktTracker运行在slave节点上,负责执行JobTracker调度给它的任务。
很不幸,JobTracker 存在单点故障,一旦出现故障,整个集群就不可用。这个是1.0里面出现的问题,在2.0里面这个问题已经得到了解决。 不过大家放心,即使在1.0中,MapReduce也不会经常出现故障。它可能一年也就是出现几次故障,出现故障之后,你重启一下,再把作业重新提交就可以了,它不会像HDFS那样出现数据的丢失。 因为 MapReduce 是一个计算框架,计算过程是可以重现的,即使某个服务挂掉了,你重启一下服务,然后把作业重新提交,也是不会影响你的业务的。
函数 | 输入 | 输出 | 处理过程 |
---|---|---|---|
Map | List( |
将输入的小数据集解析成一批键值对,输入map函数里进行处理 | |
Reduce | 将具有相同键的键值对以某种方式组合起来,输出处理后的键值对 |
shuffle就是对map任务的输出结果进行分区、排序、合并等处理并交给reduce任务的过程。
本地计算:在一个集群中,map程序尽量在就近的hdfs数据节点上进行运行,可以避免大规模数据移动带来的网络传输开销。
map任务数量取决于map作业的大小即数据量的大小。
reduce任务数量取决于map任务输出结果中key的数量。
不是。对于关系的选择运算,只需要 Map 过程就能实现,对于关系 R 中的每个元组 t,检测是否是满足条件,如果满足条件,则输出键值对 ,也就是说,键和值都是 t。这时的 Reduce 函数就只是一个恒等式,对 输入不做任何变换就直接输出。
合并(combine)是指将那些具有相同键的键值对的值加起来,经过合并操作这些键值对就会变成一个键值对,减少了键值对的数量。
不过,并不是所有mapreduce程序都可以进行combiner,只有在不改变reduce任务最终计算结果的前提下,才能进行combine操作,一般在累加,求和场景下都可进行。
reduce任务一旦输出最终结果,就可将map任务生成的中间结果删除,存储在hdfs上有些小题大做,当任务在map将中间结果传送给reduce时失败,也方便了重新进行任务的恢复。
采用更大的块可以最小化寻址开销。
优点:
缺点:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nrN4x1wh-1606559396824)(D:\firefoxdowload\图片\image-20201122230753868.png)]
map的输出结果溢写到磁盘中会根据key值进行分区,使得相同key的键值对保存在一个分区,并会对相同key的键值对进行归并,然后reduce任务会领取所有map端机器所要处理的分区的数据,此时同一个分区的键值对正是key值相同的键值对。
组件 | hadoop1.0的问题 | hadoop2.0的改进 |
---|---|---|
HDFS | 单一名称节点,存在单点失效问题 | 设计了HDFSHA,提供名称节点热备份机制 |
单一命名空间,无法实现资源隔离 | 设计了HDFS联邦,管理多个命名空间 | |
MapReduce | 资源管理效率低 | 设计了新的资源管理框架YARN |
HDFS1.0采用单点名称节点的设计,不仅会带来单点故障问题,还存在可扩 展性、性能和隔离性等问题。
在可扩展性方面,名称节点把整个 HDFS文件系统中的元数据信息都保存在 自己的内存中, HDFS1.0中只有一个名称节点,不可以水平扩展,而单个名称节点的内存空间是由上限的,这限制了系统中数据块、文件和目录的数目。 在系统整体性能方面,整个 HDFS文件系统的性能会受限于单个名称节点的 吞吐量。 在隔离性方面,单个名称节点难以提供不同程序之间的隔离性,一个程序可能会影响会影响其他运行的程序。
在一个典型的 HA 集群中,一般设置两个名称节点,其中一个名称节点处于 “活跃”状态,另一个处于“待命”状态。处于活跃状态的名称节点负责对外处 理所有客户端的请求, 而处于待命状态的名称节点则作为备用节点, 保存了足够多的系统元数据,当名称节点出现故障时提供快速回复能力也就是说,在 HDFS HA 中,处于待命状态的名称节点提供了“热备份”,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点,不会影响到系统的正常对外服务。
在 HDFS联邦中,所有名称节点会共享底层的数据节点存储资源。每个数据节点要向集群中所有的名称节点注册, 并周期性地向名称节点发送 “心跳”和块 信息,报告自己的状态,同时也会处理来自名称节点的指令。
可解决名称节点存在的一下问题
HDFS联邦拥有多个独立的命名空间,其中,每一个命名空间管理属于自己的一组块,这些属于同一个命名空间的块构成一个“块池”。 每个数据节点会为多个块池提供块的存储。 可以看出,数据节点是一个物理逻辑, 而块池则属于逻辑概念, 一个块池是一组块的逻辑集合, 块池中的各个块实际上是存储在各个不同的数据节点中的。因此 HDFS联邦中的一个名称节点失效,也 不会影响到与它相关的数据节点继续为其他名称节点提供服务。
存在单点故障;
JobTracker“大包大揽”导致任务过重;
容易出现内存溢出;
资源划分不合理。
①用户编写客户端应用程序,向 YARN提交应用程序,提交的内容包括 ApplicationMaster 程序、启动 ApplicationMaster 的命令、用户程序等。 ②YARN中的 ResourceManager负责接收和处理来自客户端的请求。接到客户端 应用程序请求后,ResourceManager里面的调度器会为应用程序分配一个容器。 同时,ResourceManager的应用程序管理器会与该容器所在的 NodeManager 通信,为该应用程序在该容器中启动一个 ApplicationMaster ③ApplicationMaster 被创建后会首先向 ResourceManager注册,从而使得用户可 以通过 ResourceManager来直接查看应用程序的运行状态 ④ApplicationMaster 采用轮询的方式通过 RPC协议向 ResourceManager申请资 源。
⑤ResourceManager以“容器”的形式向提出申请的 ApplicationMaster 分配资源, 一旦 ApplicationMaster 申请到资源后,就会与该容器所在的 NodeManager 进行 通信,要求它启动任务。
⑥当 ApplicationMaster 要求容器启动任务时, 它会为任务设置好运行环境 (包括 环境变量、 JAR包、二进制程序等),然后将任务启动命令写到一个脚本中,最 后通过在容器中运行该脚本来启动任务。
⑦各个任务通过某个 RPC协议向 ApplicationMaster 汇报自己的状态和进度,让 ApplicationMaster 可以随时掌握各个任务的运行状态, 从而可以在任务失败时重 启任务。
⑧应用程序运行完成后, ApplicationMaster 向 ResourceManager的应用程序管理 器注销并关闭自己。若 ApplicationMaster 因故失败, ResourceManager中的应用程序管理器会监测到失败的情形,然后将其重新启动,直到所有任务执行完毕。
①Pig是 Hadoop 生态系统的一个组件, 提供了类似 SQL的 Pig Latin语言(包 含 Filter、GroupBy、Join、OrderBy等操作,同时也支持用户自定义函数),允 许用户通过编写简单的脚本来实现复杂的数据分析,而不需要编写复杂的 MapReduce应用程序, Pig会自动把用户编写的脚本转换成 MapReduce作业在 Hadoop 集群上运行,而且具备对生成的 MapReduce程序进行自动优化的功能, 所以用户在编写 Pig程序的时候,不需要关心程序的运行效率,这就大大减少了 用户编程时间。
②Tez是 Apache开源的支持 DAG作业的计算框架,直接源于 MapReduce框架, 核心思想是将 Map 和 Reduce两个操作进一步进行拆分, 即 Map 被拆分成 Input、 Processor、Sort、Merge 和 Output,Reduce被拆分成 Input、Shuffle、Sort、Merge、 Processor和 Output 等,经过分解后的这些元操作可以进行自由任意组合产生新 的操作,经过一些控制程序组装后就可形成一个大的 DAG作业。 通过 DAG作业的方式运行 MapReduce作业,提供了程序运行的整体处理逻辑, 就可以去除工作流当中多余的 Map 阶段,减少不必要的操作,提升数据处理的 性能。Hortonworks 把 Tez应用到数据仓库 Hive 的优化中,使得性能提升了约 100 倍。
③Kafka是由 LinkedIn公司开发的一种高吞吐量的分布式发布订阅消息系统,用 户通过 Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。 Kafka设计的初衷是构建一个可以处理海量日志、 用户行为和网站运营统计等的数据处理框架。
Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成一套完整生态系统, 既能够提供内存计算框架, 也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。 Spark可以部署在资源管理器 YARN之上,提供一 站式的大数据解决方案。因此, Spark所提供的生态系统同时支持批处理、交互 式查询和流数据处理。
Spark可以运行与 YARN之上,与 Hadoop 进行统一部署,即“Spark on YARN”, 其架构如图所示,资源管理和调度用 YARN,分布式存储则以用HDFS。
RDD:弹性分布式数据集
DAG:有向无环图,可以反映RDD之间的依赖关系。
阶段(stage):是作业调度的基本单位,包含一组任务,也称为任务集。
分区:一个RDD就是一个分布式对象集合,每个RDD可以分成多个分区,每个分区都是一个数据集片段。
窄依赖:父RDD的一个分区只被一个子RDD的一个分区所使用就是窄依赖。
宽依赖:父RDD的一个分区被一个子RDD的多个分区所使用的就是宽依赖。
答:行动( Action):在数据集上进行运算,返回计算值。
转换( Transformation):基于现有的数据集创建一个新的数据集。
流数据,即数据以大量、快速、时变的流形式持续到达
流数据具有如下特征:
数据的价值会随着时间的流逝而逐渐减小
对于一个流计算系统来说,它应达到如下需求:
高性能:处理大数据的基本要求,如每秒处理几十万条数据
海量式:支持 TB级甚至是 PB 级的数据规模
实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别
分布式:支持大数据的基本架构,必须能够平滑扩展
易用性:能够快速进行开发和部署
可靠性:能可靠地处理流数据
MapReduce框架无法满足流计算实时响应的需求
不可行,mapreduce是面向静态数据就的批量处理的,内部各种实现机制都为批处理做了高度优化,不适用于处理持续到达的动态数据
目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自身业务开发的流计算框架
商业级: IBM InfoSphere Streams 和 IBM StreamBase
较为常见的是开源流计算框架,代表如下: Twitter Storm :免费、开源的分布式实时计算系统,可简单、高效、可靠地处理大 量的流数据 Yahoo! S4(Simple Scalable Streaming System):开源流计算平台,是通用的、分布 式的、可扩展的、分区容错的、可插拔的流式系统
公司为支持自身业务开发的流计算框架: Facebook Puma Dstream(百度) 银河流数据处理平台(淘宝)
需要实时计算实时处理
通过流计算可以达到实时计算实时分析的效果,提高了业务分析的实时性,也带来了更高的分析价值。
气候模拟预测,运用流计算的计算框架,可以准确的捕捉到当前气候的变化,并且可以运用这些最新信息到预测未来气候的变化情况,为人们提供一个更加准确更加快速的天气预报。
开发人员可以基于开源流处理框架Storm,快速地搭建一套健壮、易用的实时流处理系统,并配合Hadoop等平台,就可以低成本地做出很多以前很难想象的实时产品。
以往开发人员在开发一个实时应用的时候,除了要关注处理逻辑,还要为实时数据的获取、传输、存储大伤脑筋;在Storm流处理框架下,Storm可以简单、高效、可靠处理流数据,并支持多种编程语言,且能方便地与数据库系统进行整合,从而开发强大的实时应用。
Twitter采用了由实时系统和批处理系统组成的分层数据处理架构;一方面,由Hadoop和ElephantDB组成了批处理系统;另一方面,由Storm和Cassandra组成实时系统。在计算查询时,该数据库会同时查询批处理视图和实时视图,并把它们合并起来得到最终结果。实时系统处理结果最终会由批处理系统来修正。
1) 整合性,可方便地与队列系统和数据库系统进行整合;
2) 简易的API;
3) 可扩展性,其并行特性使其可以运行在分布式集群中;
4) 容错性,可以自动进行故障节点的重启,以及节点故障时任务的重新分配;
5) 可靠的消息处理,保证每个消息都能完整处理;
6) 支持多种编程语言;
7) 快速部署,只需要少量的安装和配置就可以快读进行部署和使用;
8) 免费、开源。
实时分析、在线及其学习、持续学习、远程RPC、数据提取加载转换等。
Streams:是对数据流的抽象描述,即一个无限的Tuple序列。这些Tuple序列会以分布式的方式并行的创建和处理。
Spouts:Streams的抽象源头,Spouts会从外部读取流数据并持续发出Tuple。
Bolts:抽象的状态转换过程,既可以处理Tuple,也可以将处理后的Tuple作为新的Streams发送给其他的Bolts。对Tuple的处理逻辑都封装在Bolts中,可执行过滤、聚合、查询等操作。
Topology:Storm将Spouts和Bolts组成的网络抽象成Topology,是Storm中最高层次的抽象概念,可以被提交到Storm集群执行。一个Topology就是一个流转换图,其中的节点是一个Spout或Bolt,边表示Bolt订阅了哪个Stream。
Stream Groupings:用于告知Topology如何在两个组件间(如Spout和Bolt之间或者不同的Bolt之间)进行Tuple的传送。
Tuple即元组,是元素的有序列表,每一个Tuple就是一个值列表,列表中的每个值都有一个名称,且该值可以是基本类型、字符类型、字节数组等。
处理组件(Spout或Bolt)、组件之间的连接。
通过序列化、套接字传输、反序列化完成。
//通过订阅Tuple的名称来接收相应的数据。
随机分组、按照字段分组、广播发送、全局分组、不分组、直接分组。
其运行任务的方式类似:Hadoop上运行的是MapReduce作业,而在Storm上运行的是Topology。
区别是两者的任务大不相同,MapReduce作业最终会完成计算并结束运行,而Topology将持续处理消息(直到人为终止)。
Master负责运行“Nimbus”的后台程序,负责在集群范围中分发代码、为Worker分配任务和检测故障。
Worker负责运行“Supervisor”的后台程序,负责监听分配给它所在机器的工作,即根据Nimbus分配的任务来决定启动或停止Worker进程。
Zookeeper作为分布式协调组件,负责一个Nimbus和多个Supervisor之间的所有协调工作。
节点故障时可以进行快速恢复。
可以。这两个进程借助Zookeeper将状态信息存放在了Zookeeper中或本地磁盘中,当Nimbus进程或Supervisor进程终止后,一旦进程重启,他们将恢复之前的状态并继续工作。这种设计使Storm极其稳定。
1) 客户端提交Topology到Storm集群中;
2) Nimbus将分配给Supervisor的任务写入Zookeeper;
3) Supervisor从Zookeeper中获取所分配的任务,并启动Worker进程;
4) Worker进程执行具体的任务。
1) 从Spout中发送Stream(每个英文句子为一个Tuple);
2) 用于分割单词的Bolt将接收的句子分解为独立的单词,将单词作为Tuple的字段名发送出去;
3) 用于计数的Bolt接收表示单词的Tuple,并对其进行统计;
4) 输出每个单词以及单词出现的次数。
MapReduce框架使用了Map和Reduce的过程,将文本进行分割后,由Map进行各文本段的单词计数再传输到Reduce中计数;而Storm框架使用了Spout和Bolt的抽象,由一个Bolt进行单词分割,另一个Bolt进行计数。
第一个Bolt用于单词的分割,该Bolt中的任务随机接收Spout发送的句子,并从接受的句子中提取出单词;
第二个Bolt接收第一个Bolt发送的Tuple进行处理,统计分割后的单词出现的次数。
Bolt通过订阅Tuple的名称来接收相应的数据,第一个Bolt声明其输出的Stream的名称为‘split’,第二个Bolt声明其订阅的Stream为‘split’。
将具有相同字段值的所有Tuple(即单词相同的Tuple)发送到同一个任务中进行统计,从而保证了统计的准确性。
局部计算:每个参与的处理器都有自身的计算任务,它们只读取存储在本地内存中的值,不同处理器的计算任务都是异步并且独立的。
通信:处理器群相互交换数据,交换的形式是,由一方发起推送(Put)和获取(Get)操作
栅栏同步:当一个处理器遇到“路障”,会等其他所有处理器完成它们的计算步骤,每一次同步也是一个超步的完成和下一个超步的开始。
1) 消息传递具有足够的表达能力;
2) 有助于提高系统整体性能;其消息模式采用同步和批量的方式传递消息,因此可以缓解远程读取的延迟。
在Vertex的原有类中改写Compute()函数,在这里比较节点V及其连接的节点Vi的值,如果V的值小于周围连接节点Vi的值,其值修改为连接节点的最大值;如果大于等于,节点V将值传递出去后进入“非活跃”状态。经过层层迭代直至图中没有活跃节点为止。
Aggregator提供了一种全局通信、监控和数据查看的机制。Aggregator的聚合功能,允许在整型和字符串类型上执行最大值、最小值、求和操作;还可以实现全局协同的功能,例如通过多个and条件来决定Combine()函数是否执行某些逻辑分支。
1) 局部有序。执行一个超步时,先执行删除操作,先删除边,再删除顶点;再执行增加操作,先增加顶点,再增加边;
2) Handler。用户可以通过在Vertex自定义的Hander来实现一个更好的冲突处理方式,或者系统随机挑选一个请求进行处理。
1) 选择集群中的多台机器执行图计算任务,一台机器作为Master,其他机器作为Worker。
2) Master把一个图分为多个分区,并把分区分配给多个Worker,一个Worker会收到一个或多个分区,每个Worker知道其他所有Worker所分配到的分区情况。
3) Master会把用户输入划分成多个部分,通常是基于文件边界进行划分。然后Master会为每个Worker分配用户输入的一部分。当所有的输入被加载后,图中的所有定点都会被标记为“活跃”状态。
4) Master向每个Worker发送指令,Worker收到指令后,开始运行一个超步。Worker会为自己管辖的每个分区分配一个线程,对于分区中的每个顶点,Worker会把来自上一个超步的、发送给这个顶点的消息传递给它,调用“活跃”状态顶点上的Compute()函数,在执行过程中,顶点可以对外发送消息。当所有工作完成后,Worker会通知Master,将“活跃”的顶点状态报告给Master。上述步骤不断重复直到所有顶点不再活跃且系统中不会有任何消息在传输,此时执行过程才会结束。
5) 计算过程结束后,Master会给所有的Worker发送指令,通知每个Worker对自己的计算结果进行持久化存储。
Master会周期性的向每个Worker发送ping消息,Worker收到ping消息后会向Master反馈消息。如果Master在指定时间间隔内没有收到某个Worker的反馈消息,就会把该Worker标记为失效。这些丢失的状态信息会直接丢失。Master会把失效Worker所分配到的分区重新分配到其他处于正常工作状态的Worker集合上,然后所有这些分区会从最近的某超步S开始时写出的检查点中,重新加载状态信息,再执行从超步S到超步S1的所有操作。
Master:1)主要负责协调各个Worker执行任务,为每个Worker分配一个唯一的ID。2)Master维护着关于当前处于“有效”状态的所有Worker的各种信息。3)对Worker进行故障检测,并进行故障恢复。4)在内部运行了一个HTTP服务器来显示图计算过程的各种信息供用户在网页随时监控图计算执行的各个细节。
Worker:
对管辖分区的每个顶点进行遍历,并调用顶点上的Compute()函数。对于一个顶点需要发送消息的时候,Worker会判断目标顶点是否在自己机器上,如果在,直接将该消息放入与目标顶点相关的消息队列中,如果不在则将消息缓存到本地消息队列中,等到达到阈值的时候将这些消息批量异步发送到目标顶点所在在Worker上。
其优势是迭代次数少,即Pregel的迭代次数即开始顶点到最远的顶点(此时指经过的边最多)的边数。
该问题其实是单源到每个顶点的最短路径的一个变形,即仍然按照寻找全部最短路径的方法,结束迭代的条件改为,和顶点t相邻的所有节点都不活跃即可。
1) Pregel将PageRank处理对象看成连通图,而MapReduce看做键值树;
2) Pregel在顶点控制迭代次数和计算,MapReduce将计算批量化处理,并且按任务进行循环迭代控制。
3) 图算法如果用MapReduce实现,需要一系列的MapReduce调用。从一个阶段到下一个阶段时需要传递整个图的状态,会产生大量不必要的序列化和反序列化的开销。而Pregel使用超步简化了这个过程。
数据可视化是指将大型数据集中的数据以图形图像的形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。
让数据以可视化形式呈现,让枯燥复杂的数据以简单友好的图表形式展现出来,可以让数据变得更加通俗易懂,有助于用户更加方便快捷地理解数据的深层次含义,有效参与复杂的数据分析过程,提高数据分析效率,改善数据分析效果。
入门级工具、信息图表工具、地图工具、时间线工具、高级分析工具。
全球黑客活动、互联网地图、编程语言之间的影响力关系图。