-
杨魅力
基于企业级传统数据仓库应用的特点和要求,以及Hadoop技术的原理和特点,在使用Hadoop大数据平台实现传统数仓应用的过程中,需要关注和解决的关键问题有很多,本文主要列举在以下几个核心问题和解决思路:模型和SQL支持、海量数据的存储和高效计算、高并发查询、事务支持。1、模型和SQL支持模型方面,原量收系统模型设计原则是基于中国邮政整体企业管理和业务管理的规则和流程,同时考虑到系统的扩展。为了便于理解,整个模型先按照数据仓库典型方式划分为接口贴源层、逻辑层和汇总层。接口贴源层按照接口来源各个系统进行划分,系统模型和源系统模型基本保持一致;逻辑层和汇总层则按照主题域进行划分。接口层模型与源业务系统基本一致,结构简单,关联度相对较低,大部分源业务系统使用Oracle数据库。基础层模型结构相对复杂,关联度相对较高,系统使用Teradata数据库,汇总层模型结构相对简单,关联度低,系统使用Teradata数据库。中国邮政大数据平台选用的底层产品全面支持Oracle数据表模型,支持大部分的Teradata模型。但在实践过程中,从Teradata数据库向Hadoop平台进行模型迁移时,还是有许多特殊语法需要进行修订,下图为Teradata语法与Hadoop平台语法的对比和转换关系举例:表3-1 Teradata语法与Hadoop平台语法的对比和转换关系举例SQL方面,系统的报表查询和ETL加工采用了大量的复杂SQL。中国邮政大数据平台选用的底层产品支持99%的ANSI SQL2003语法,也支持Oracle PL/SQL,包括完整的数据类型、流程控制、Package、游标、异常处理以及动态SQL执行,可以支持迁移大部分的语法和脚本。但在实践过程中,从Teradata数据库向Hadoop平台进行SQL迁移时,还是有许多特殊语法需要进行针对性改进,下表为Hadoop平台不支持的语法和问题举例:表3-2 Hadoop平台不支持的语法和问题举例上述问题需要在开发过程中进行针对性的产品更新或代码更新2、海量数据的存储和高效计算中国邮政大数据平台汇集了中国邮政各大业务系统的历史业务数据,需要经过T+1的数据处理得到分析和计算结果进行展示。因此需要对海量数据进行存储,并提供高效的数据计算。中国邮政大数据平台的底层数据产品通过内存计算技术、高效索引、执行计划优化和高度容错的技术,能够处理从TB的数据,并且在数据量级上都能提供比现有技术更快的性能。底层平台基于Spark的分析引擎,从下往上包含三层架构,底层是分布式内存列式存储,可建在内存或者SSD上,中间层是Spark计算引擎层,最上层包括一个完整的SQL99和PL/SQL编译器、统计算法库和机器学习算法库。因此可以分析存储在HDFS,HBase或者Holodesk分布式缓存中的数据,可以处理的数据量从GB到数十TB,即使数据源或者中间结果的大小远大于内存,也可高效处理。同时,采用跨内存/闪存等介质的分布式混合列式存储,可用于缓存数据供Spark高速访问。小内存+SSD+磁盘的新方案可以提供跟大内存+磁盘的传统方案性能接近的交互式SQL分析能力。由于内存的价格是SSD的10倍,因此可以采用SSD来替代内存作为缓存,一方面可以增大分布式内存数据库Holodesk存储容量,另一方面可以降低成本,同时性能没有明显损失。同时解决开源Spark在稳定性、可管理性和功能不够丰富上的问题。平台对Spark进行了大量的改进,极大提高了Spark功能和性能的稳定性。能稳定的运行7*24小时,并能在TB级规模数据上高效进行各种稳定的统计分析。3、高并发查询中国邮政大数据平台经过数据处理和汇总,为中国邮政各大业务板块各及机构提供数据报表和数据查询,用户数超过5万,并发数超过2千。因此需要解决高并查询的性能和效率问题。中国邮政大数据平台的底层数据产品支持使用大表交互等一系列复杂的SQL分析语法操作。同时支持多种索引,包括全局索引(Global Index)、局部索引(Local Index)、高维索引(High-dimensionalIndex)以及全文索引(Full-textIndex)等;支持通过SQL进行复杂条件毫秒级高并发查询。主要通过使用索引来加快数据的查询速度。包括三种索引:本地索引、全局索引、全文索引,支持索引的自动创建(在创建表时指定索引),也支持对已有表创建索引。索引的基本设计思想是对表中的需要经常作为查询条件的列建立一个映射到主数据的索引。查询时可以利用索引特性进行快速定位并返回查询结果。实验证明,通过使用索引,用户查询的响应速度可以达到原来的20~100倍。同时支持全局、局部、高维索引和高级过滤器,,满足在线存储和在线业务分析系统(OLAP)的低延时需求,实现高并发低延时的OLAP查询。
-
收到一只叮咚
Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合,如pageRank、K-Means等算法就非常适合内存迭代计算。Spark整个生态体系正逐渐完善中,GraphX 、 SparkSQL、 SparkStreaming 、 MLlib,等到Spark有了自己的数据仓库后,那就完全能与Hadoop生态体系相媲美。
-
潇湘沐
进行ssh的设置,但是你问到这个问题,我们可以从理论上推一下,namenode和datanode肯定是需要交互的,故需要ssh设置,而namenode和datanode之间交互的都是“头参数”,具体的数据交互,还是由datanode和datanode之间来自行拷贝或交互的,因此我认为数据节点之间是肯定需要ssh设置的,你也可以直接试试看。~