Building the Enterprise Fabric for Big Data with Vertica and Spark Integration

翻译 2017年01月03日 13:45:33

通过大数据分析与Spark构建企业级大数据平台

主要工作:集成了HPE Vertica enterprise database和Spark开源大数据计算引擎

优势:
可以快速、可靠地在Vertica和Spark中传输数据,并将spark生成的机器学习库部署在Vertica,来分析Vertica中的数据。这种架构扩展了Vertica的丰富的SQL分析功能和Spark的机器学习库,给Vertica用户提供了大量机器学习的功能。用户也可以将Spark作为一个先进的ETL引擎,用来针对那些需要Vertica保证的性质的数据


Vertica:
大规模并行处理(MPP)列式存储的分布式数据库,具有传统事务语义。是传统的关系型数据库,特点是按列存储。适合OLAP。

分ROS和WOS,WOS支持写时不排序不压缩,所以吞吐率较高。ROS是个高度优化的面向读的磁盘存储,包括压缩和索引。密集包装,不浪费磁盘页。排序压缩。定期从WOS转移到ROS,异步和批量做。 适合ETL结果存储。

一张表的各个列通过不重复的hash排列分到不同机器上,hash结果的不同范围存在不同机器。
k-safety。也可以一张表在一台机器上。

支持高级SQl分析,用户定义扩展。分析功能可以支持很多算法。

Spark:
支持批处理,流式计算,并行的机器学习算法,SQL,图形计算。但是数据管理比较弱,与商业数据库系统相比。

不支持数据共享的足够的孤立语义,不提供数据完整性保证。不适合重要任务的交易数据。不支持共享数据访问和ACID特性。

主要的数据抽象是RDD (弹性分布式数据集 ),RDD是不可更改的内存结构,被切分成不同的partition,分布在集群中,RDD本身不可持久,但是可以保存在外部存储。工作节点管理本地task的执行,来操作RDD的数据。task无状态,互相不可通信。一个job包含多个task。

DataFrames:类似数据库的表,对RDD进行了包装,加入了schema。不可更改。



工作介绍:
可靠的数据转换:精确一次语义
     -V2S:并行算法 消除了所有Vertica节点间的data shuffling
          Vertica-centric: push-based
          Connector在load api中被唤醒,支持额外的处理操作(过滤,选择,计数),Connector将这些操作下推至Vertica,来减少数据的网络传输。将Vertica的一张表
传输到spark是原子的,会load一个一致表。
          可以利用Vertica的数据分布和ACID特性来支持快速数据传输来读取一个一致的数据并保持精确一次语义。
          请求的数据存在本地Vertica节点。
          pull模型,需要数据时,启动spark任务,从Vertica中取数据。
          形成唯一的查询,请求需要的数据中各个不重复的部分,并且将各个查询结果聚合在一张表中。
          每个partition对应一个或多个相邻的hash环的segment,保证了请求本地数据
          使用vertica的时间版本特性,请求时指定版本,保证了一致性,避免了重复数据。

     -S2V:并行算法 避免了部分或重复的导入。
          Vertica-centric: pull-based
          Connector在save api中被唤醒,支持保存到一张已经存在的表(appending)或新创一个表。转化是原子的。不会由于部分导入或重复导入污染目的表。
          利用了Vertica的ACID特性保证精确一次语义(通过一个单独的spark作业)的数据存储。
          由于tasks之间不通信,用Vertica的一张表来记录全部转换进程,每个task通过这张表来查看其它task的处理状态。
          批量导入会包含被拒绝的行组。让用户指定可以容忍的被丢弃的行,并且提供丢弃的行的样例。如果丢弃的在范围内则success,否则fail
          spark作业启动时,会有一个setup阶段,会创建3张临时表和1张永久表,Staging表,和targe表schema一样。task status表,每行一个任务状态(task/partition id,行成功数,失败数,任务完成状态)。Last committer表,包括最后提交的task id。Final status表,包含唯一job name,失败行比例,作业的最终状态(以防止spark崩溃时用户不确定job状态)。这个阶段还会查询所有Vertica节点的ip。并且可以对DF重新分区来得到并行度。
     每个task包含5个阶段:
          第一阶段:和一个vertica节点连接,将数据写进staging表,并将task status表的完成状态写成true并提交(只有当前完成状态是false),否则放弃事务。写staging表和更新task status表在同一个事务中,来保证task中的记录将数据持久化。
          第二阶段:task检查task status表来检查是否所有task都完成了(包括自己),如果有一个没完成,那么这个task就完成。如果所有都完成了,就到第三阶段,可能有多个task同时到达第三阶段。
          第三阶段:更新las committer表(用task id),如果id依然是空则再次提交,否则终止。这来产生领导人。
          第四阶段:读last committer表,如果看到自己不是领导人,就终止。这样读两次表来保证不重复提交数据。
          第五阶段:last commiter表中的task是仅剩的task了,检查failed rows 总是是否满足要求。如果满足,则把staging table提交成targe table并更新final status表(如果final status表的finished是false),否则终止。保证staging表到targe表只做一次。在overwrite模式,就是改个名,在append模式,需要复制数据到targe表中。

          1、2阶段保证DF数据保存到staging 表,是作业的主要部分。
          3、4、5阶段保证最后staging表到target表只提交一次。
          由于staging表的存在,最坏的情况spark和vertica挂了,target表不会被影响。


-将spark构建的机器学习模型在vertica中部署并执行,为 MD(Model deployment)
     由于模型种类不同,不同的PMML模型不能放在同一个表中,需要存在内部分布式文件系统中。可以通过数据库查询隐形和UDF访问。
     DeployMPPLModel方法:将模型存在DFS中,并将metadata信息插入一张vertica表中。
     当模型部署了,可以用来做数据库内的预测。这需要写UDF来读取模型并用JPMML构建模型评估器来预测。为了简便,提供了一个通用的模型评价器,来评价那些输入时一个数值向量输出一个数值的模型。
     用户可以在数据库中运行预测器,通过SQL查询。


总结:数据在Vertica中,想用机器学习模型来分析,把数据导入spark中,用MLLib生成模型,将模型写到vertica中并部署,在vertica中运行模型查看结果。


实验:
将数据存在hdfs上,通过spark存到vertica中,再读到spark中。
关掉了k-safety复制。来简化评估数据转移而不是数据库容错。

D1:csv格式的100列8字节浮点数140G,100M行。
D2:csv格式的2列twitter数据,140G,1.46B行。

4个vertica节点,8个spark/hdfs节点

比较不同并行度对v2s和s2v的影响。




BigData学习1_数据处理平台架构中的SMACK组合:Spark、Mesos、Akka、Cassandra以及Kafka

在今天的文章中,我们将着重探讨如何利用SMACK(即Spark、Mesos、Akka、Cassandra以及Kafka)堆栈构建可扩展数据处理平台。虽然这套堆栈仅由数个简单部分组成,但其能够实现大量不...
  • wang_zhenwei
  • wang_zhenwei
  • 2016年02月18日 16:32
  • 1826

Spark和Scala的网络资源汇集

Spark和Scala的网络资源汇集作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs本文的目的是为Spark和Scala初...
  • chszs
  • chszs
  • 2016年04月19日 21:08
  • 3387

分清big data,ML,AI之间的关系

How are big data and machine learning related?(大数据与机器学习间关系)下面是回答: 1. Big data and machine learning...
  • he_world
  • he_world
  • 2016年06月01日 11:46
  • 1430

《大数据时代(BIG DATA)》

—-豆瓣链接—- 大数据的时代思维变革 不是随机样本,而是全体数据 小数据时代的随机采样,最少的数据获得最多的信息 采样分析的精确性随着采样随机性的增加而大幅提高,但与样本数量的增加...
  • my_precious
  • my_precious
  • 2016年10月12日 09:56
  • 1167

Oracle 大数据集成实施

Oracle 大数据实施架构Oracle为广大客户提供了一个预装的用于测试和学习目的的免费大数据环境。你可以在这个环境中对Oracle大数据一体机(Big Data Appliance)上的可选软件产...
  • caixingyun
  • caixingyun
  • 2016年08月07日 18:54
  • 1733

BlueDBM个人读感

BlueDBM个人读感     BlueDBM是麻省理工学院Sang-Woo Jun等人发表在2015年ISCA会议上的论文。该篇论文的启发点似乎来自于RAMCloud,该团队发现完全基于DRAM的系...
  • xiaorenzhi
  • xiaorenzhi
  • 2015年07月31日 13:56
  • 1662

Spark - 大数据Big Data处理框架

Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右。    Spark是hadoop的升级版本,Hadoop作为第一代产品使用HDFS,第二代加入了Ca...
  • joeyon
  • joeyon
  • 2014年11月30日 16:59
  • 426

Spark - 大数据Big Data处理框架

Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右。   Spark是hadoop的升级版本,Hadoop作为第一代产品使用HDFS,第二代加入了C...
  • judyge
  • judyge
  • 2015年11月10日 09:13
  • 304

Big Data 学习笔记【1】

俗话说得好:温故而知新。 开课两周了,趁讲的东西还不多,先随手记一下这两天学的东西。 先开始,约瑟夫讲了一堆数据存储设备的演变,从刚开始的1990s的只有1.4M的floppy drive,到so...
  • Cola_Jay
  • Cola_Jay
  • 2015年09月22日 01:56
  • 360

Spark - 大数据Big Data处理框架

Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右。   Spark是hadoop的升级版本,Hadoop作为第一代产品使用HDFS,第二代加入了C...
  • lantian0802
  • lantian0802
  • 2014年03月25日 13:26
  • 968
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Building the Enterprise Fabric for Big Data with Vertica and Spark Integration
举报原因:
原因补充:

(最多只允许输入30个字)