知识图谱平台架构

 

  1. 使用数据/消息中间件+Spark Streaming批量接收处理;
  2. hbase存储源数据;
  3. 关系数据存入图数据库Janusgraph。
    1. 在线检索服务

用phoenix作为Hbase的数据访问中间件,不仅支持SQL标准访问Hbase数据,还支持二级索引,满足复杂的检索服务。

    1. 字典库

字典库数据量较小,使用关系型数据库Mysql。

    1. 数据分析仓库

有效数据仓库作为数据分析仓库,从数据分析角度考虑,有两种存储方案

  1. 存入Hbase,使用Hive建立外部关联表,与Hbase的表建立映射关系。优点是:因为是映射关系,Hbase写入的数据与Hive实时同步。缺点是:在数据量比较小的时候,比如只有10几个G以下时,第一种效率比较高,因为没有转换的时间,当数据量超过10几个G后,且后续需要很密集的查询,当然要选第二种转换方式,一次转换,终生无忧!!
  2. 直接存入Hive中。缺点:Hive不支持数据更新,源数据更新时,需要重新导入。

初步采用第1中方案

    1. 数据分析

数据分析采用Spark SQL+Hive+Impala+Azkaban,

分析结果写入Hbase、Janusgraph

  • Spark SQL(Spark组件): 分布式计算引擎,充分利用内存
  • Hive: 大数据查询,用简洁的SQL完成复杂的MapReduce任务
  • Impala: 大数据实时查询分析工具,提供SQL查询, 能够查询存储在Hadoop的HDFS和Hbase中的PB级大数据, 可以跟Hive整合, 读取Hive中数据。可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。
  • Azkaban: 分析任务调度,工作流.
  • Spark SQL+Hive: 把Spark作为Hive的一个计算引擎,将Hive的查询结果作为Spark的任务提交到Spark集群上进行计算。将数据查询与数据分析整合。
  • Impala +Hive:Implla提升Hive速度,且更加灵活易用。适用于交互式查询,秒级响应。
  1. 架构图

知识图谱平台架构_第1张图片

  1. 数据采集,数据同步

1.1用户数据

    用户提供数据的方式可以是:数据接口、数据文件、数据库

1.2数据采集

    数据采集的方法选择

  1. 直连同步

直连同步是指通过定义好的规范接口 API 和基于动态链接库的方式直接连接业务库,如JDBC 规定了统一规范的标准接口,不同的数据库基于这套标准接口提供规范的驱动,支持完全相同的函数调用和 SQL 实现。

    这种方式配置简单,实现容易。但是业务库直连的方式对源系统的性能影响较大,当执行大批量数据同步时会降低甚至拖垮业务系统的性能。果业务库采取主备策略,则可以从备库抽取数据,避免对业务系统产生性能影响。但是当数据量较大时,采取此种抽取方式性能较差,不太适合从业务系统到数据仓库系统的同步。

  1. 数据文件同步

数据文件同步通过约定好的文件编码、大小、格式等,直接从源系统生成数据的文本文件,由专门的文件服务器,如 FTP 服务器传输到目标系统后,加载到目标数据库系统中。当数据源包含多个异构的数据库系统(如 MySQL 、 Oracle、 SQL Server、 DB2 等)时,用这种方式比较简单、实用。如,业务系统、nginx等的日志类数据,通常是以文本文件形式存在的,也适合使用数据文件同步方式。

由于通过文件服务器上传、下载可能会造成丢包或错误,为了确保数据文件同步的完整性,通常除了上传数据文件本身以外,还会上传一个校验文件,该校验文件记录了数据文件的数据量以及文件大小等校验信息,以供下游目标系统验证数据同步的准确性。

另外,在从源系统生成数据文件的过程中,可以增加压缩和加密功能,传输到目标系统以后,再对数据进行解压缩和解密 , 这样可以大大提高文件的传输效率和安全性。

  1. 数据库日志解析同步

通过解析日志文件获取发生变更的数据,从而满足增量数据同步的需求。

1.3数据/消息中间件

1.4源数据库Hbase

  1. 数据预处理

2.1字典过滤

2.2字典库Mysql

2.3无效库Hbase

2.4数据/消息中间件

  1. 数据存储

3.1分析库Hive

3.2图数据库Janusgraph

3.3计算结果库Hbase

3.4查询库Hbase

  1. 数据计算
    1. 离线计算Azkaban+Spark+Hive

4.2实时计算Azkaban+Spark Streaming

4.3计算结果输出到Hbase,Mysql

  1. 管理、服务
    1. 数据采集管理、源数据管理
    2. 字典管理、无效库管理
    3. 数据查询服务
    4. 分析任务调度、管理

你可能感兴趣的:(Hadoop,Java,Graph,Hbase)