大数据技术与实践

时间:2024-04-01 11:30:57

大数据概述

  大数据产生背景:
1.数据量大,数据种类多。
2.海量数据的高存储成本,大数据两下数据处理性能不足,流式数据处理缺失。
3.优先的扩展能力,单一数据源。
4.数据资产对外增值。

大数据定义

   大数据:指无法在可承受的时间内用软硬件进行捕捉、管理和处理的数据集合,需要新处理模式才能使数据集合称为具有更强的决策力、洞察力和流程优化等能力的海量、多样化的信息资产。

大数据的4V特征

1.量大(Volume):存储大,计算量大;
2.样多(Variety):来源多,格式多;
3.快速(Velocity): 生成速度快,处理速度要求快。
4.价值(Value):价值密度低,和数据总量的大小成反比。

大数据存储平台

HDFS

  Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。

HDFS体系结构

大数据技术与实践

HDFS体系结构

  HDFS副本放置策略对于HDFS可靠性和性能至关重要。副本放置策略关系到数据的可靠性、可用性和网络带宽的利用率。对于副本放置策略的优化让HDFS在分布式文件系统中脱颖而出,这一调优是需要大量实践经验作为依托的。
  HDFS采用基于机架感知的副本放置策略,将副本存放在不同的机架上,即第一个副本放在客户本地节点上,另外两个副本随机放置在远程机架上,这样可以防止当某个机架失效时数据的丢失,在一个数据中心中往往不只有一个机架,对于大部分数据中心来说,不同机架上节点之间的通信需要经过多个交换机,其带宽比相同机架节点之间的通信带宽要小。因此,基于机架感知的副本放置策略可以在网络带宽和数据可靠性之间取得平衡。

HBase

  HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

HBase的特性

1)线性和模块化的扩展性;
2)严格的读写一致性;
3)自动且可配置的数据表分片机制;
4)RegionServer之间可以进行热备份切换;
5)为MapReduce操作HBase数据表提供方便JAVA基础类;
6)易用的JAVA客户端访问API;
7)支持实时查询的数据块缓存和模糊过滤;
8)提供Trift网关和REST-ful Web服务,并支持XML,Protobuf和二进制编码;
9)可扩展的Jrubyshell;
10)支持通过Hadoop检测子系统或JMX导出检测数据到文件、Ganglia集群检测系统。

HBase体系架构

大数据技术与实践

Redis

Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景。
  Redis是一个支持持久化的内存数据库(与Memcache类似),也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库 数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
  Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。

MongoDB

  MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB的功能及使用范围

MongoDB的作用如下:
1.查询:基于查询对象或者类SQL语句搜索文档。查询结果可以排序,进行返回大小限制,可以跳过部分结果集,也可以返回文档的一部分。
2.插入和更新:插入新文档,更新已有文档。
3.索引管理:对文档的一个或者多个键(包括子结构)创建索引,删除索引等等。
4.常用命令:所有MongoDB 操作都可以通过socket传输的DB命令来执行。
MongoDB适用于:
1.适合实时的插入,更新与查询;
2.适合由数十或数百台服务器组成的数据库;
3.网站数据;
4.适合作为信息基础设施的缓存层;
5.大尺寸,低价值的数据;
6.用于对象及JSON数据的存储。

MongoDB数据组织形式

  组织数据的方式如下:Key-Value对 > 文档 > 集合 > 数据库。
  多个Key-Value对组织起来形成类似于JSON格式的文档,多个文档组织成为一个集合,多个集合组织起来,就形成了数据库(database)。单个MongoDB实例可以使用多个数据库。

大数据计算模式

PRAM

  PRAM模型,即并行随机存取机,也称之为SIMD-SM(共享存储的单指令流多数据流)模型,是一种应用于并行计算抽象模型。PRAM模型是顺序的冯·诺伊曼存储程序模型的自然扩展,由若干具有本地存储器的处理器和一个具有无限容量的共享存储器组成,处理器由公共的时钟进行控制,以同步方式运行。

PRAM分类:

1.互斥读和互斥写,简记之为PRAM-EREW;
2.并行读但互斥写,简记之为PRAM-CREW;
3.并行读并且并行写,简记之为PRAM-CRCW。

BSP

  BSP(Bulk Synchronous Parallel)模型,由哈佛大学Viliant和牛津大学Bill McColl提出,希望像冯·诺伊曼体系结构那样,架起计算机程序语言和体系结构间的桥梁,故又称作桥模型(Bridge Model)。本质上,BSP模型是分布存储的MIMD计算模型,被认为是最有前途的并行计算模型。

BSP模型的组成

  一个BSP计算机由n个处理机/存储器组成,通过通信网络进行互联,。一台BSP并行计算机包含三个部分组成:并行计算模块、通信模块、路障同步模块。
  一台BSP并行计算机由3个部分组成:
1.并行计算机模块;
2.通信模块
3.路障同步模块

LogP

LogP使用了L,O,G,P四个参数来描述这个模型。LogP模型是一种面向分布式存储器、点对点通信的多计算机系统的并行计算模型。

MapReduce

   MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)“和"Reduce(归约)”,是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

MapReduce实现原理

MapReduce执行流程:
1.数据分片
2.Master分配Map任务
3.分配了map任务的worker读取和处理相关split的内容
4.Master协调分配reducer到相应Mapper获取数据,期间称为Shuffle,包括一个按Key排序过程。
5.Reducer对每个Key相应的Value列表进行读取并处理
6.Reducer将处理后的文件写入HDFS输出文件
大数据技术与实践

Spart总体构架

   Spark 是一种与 Hadoop 相似的而又强于Hadoop的开源集群计算环境,由加州大学伯克利分校 AMP 实验室开发。Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

大数据分析处理平台

impala平台

   Impala是CDH(Cloudera Distribution with Apache Hadoop)的一个组件,是一个对大量数据并行处理(MPP-Massively Parallel Processing)的查询引擎。

Impala基本构架

大数据技术与实践

HadoopDB平台

  HadoopDB旨在结合MapReduce的可扩展性优势和并行数据库的性能、效率优势,以管理和分析大数据。HadoopDB背后的基本思想是,连接多个单节点数据库系统 (PostgreSQL),使用 Hadoop 作为任务协调者和网络通信层;查询用 SQL 表达,但是其执行是使用 MapReduce 框架跨节点并行化的,以便将单一查询工作尽可能推送到相应的节点数据库中。

HadoopDB总体架构

大数据技术与实践