千亿级数据整合方案架构

说明

本文着重于针对数据整合案例进行总结描述,选取部分数据ETL及平台应用中面临的问题及经验进行介绍,未对完整平台功能及流程进行展开描述。以下总结均来源于自身过往经验。特别的,融合数据安全模块及DaaS服务建议进行简要描述。

需求分析

  1. 数据量:每天千亿级别
  2. 数据格式:以RDBMS数据及log数据为例
  3. 数据来源:sybase,服务器
  4. 传输要求:以离线为例
  5. 存储平台:基于Hadoop技术栈部署
  6. 数据安全:按公司内部标准构建

方案架构

方案架构图

如图为融入数据安全管理及DaaS服务的整合架构图(南北向架构),其中黑色实线部分为大数据平台范围。

针对海量日志数据部署建议:

  • 构建全流程统一数据模型
  • 采用边缘SDK或者节点服务器进行计算
  • 先经过实时数据缓存区,HBASE/SNAPPYDATA
  • 历史数据通过dumper沉淀,建立索引
  • 使用dremio、Presto、Impala、Clickhouse等统一建立查询
  • 通过Edge computing技术,在边缘端有更多的交互可以做,可以通过在Realtime Data去设定规则来对Edge SDK端进行控制,例如,数据上传的频次降低,某些条件和规则的触发等等

整体思路是设定标准数据模型,通过边缘计算技术把所有的计算过程分散在数据产生、计算和查询过程当中,以统一的数据模型贯穿始终,从而提高整体的预算效率,同时满足即时计算的需要,可以使用各种Ad-hoc Query来查询底层数据。

经验总结:

  1. 数据ETL:
    • 数据编码统一:涉及源库数据编码,系统编码,ETL工具编码,目标库数据编码等。
      • 通过kettle进行ETL涉及源库/文件系统连接,编码设置,数据转化脚本支持sql编写。
      • 针对亿级数据可直接应用sparkSQL进行处理。
    • 数据倾斜处理:在数据计算过程中,计算逻辑根据业务逻辑编写,可能涉及大量聚合关联等操作。由于数据key计算时默认hash分配不均往往容易造成数据倾斜。解决方法尝试:
      • 修改原计算逻辑或数据分片逻辑,如判断不同规模的表,尽量按数据大小和key分布进行归类聚合,保持聚合字段均匀分配。
      • 尽量转化reduce任务避免shuffle。
      • 使用hive on MR需设置参数:hive.map.aggr,hive.groupby.skewindata。
      • 添加随机字段或key前后缀。
    • 数据标准化:针对不同来源的数据,需要在统一标准下进行数据标准化处理。
      • 缺失值处理:中心度量值/自定义数据进行填补或者丢弃。
      • 时空对齐:不同来源数据在统一时间或空间下表示方式不同,采用统一标准转化对齐。
      • 离群点分析:EDA分析即可判断。
      • 数据解析:针对日志数据,可通过logastsh,scala脚本,python脚本进行数据分词解析等操作,其中logstash能方便的配置分词策略,并完美的对接ES,但是速率较慢。
  2. 数据存储平台:
    • 历史数据建仓基于HIVE,整合后数据按照不同主题构建内部表,结构化数据可直接构建外部表。
    • 针对大量数据快速查询需求,计算后得到的结果数据存入HBASE,通过HIVE外部表或Phoenix访问,且HBASE能很好的适应数据稀疏问题。
    • 针对大量日志数据,使用ES作为存储平台,在无实时要求情况下,logstash(同场景下比flume慢)能配置不同的分词策略进行数据抽取和处理,并存入ES,同时,利用kibana进行可视化分析和操作。

数据安全

针对已部署平台所提供的安全能力进行介绍。

安全要求

针对内部平台安全要求,按照六大核心功能提供安全保障。

  1. 集群安全管理
    需要提供用户友好的统一安全管理界面。
  2. 身份认证
    需要满足不同角色用户认证。
  3. 授权管理
    需要支持安全策略配置。
  4. 边界安全
    需要支持不同身份认证、不同程度授权的单点访问隔离。
  5. 数据治理与审计
    需要支持元数据管理,数据控制管理,数据生命周期管理,数据血缘操作,集中式审计等。
  6. 数据保护
    需要提供数据加密功能

安全模块

  • 基于ranger统一管理控制台提供可视化配置操作。结合ambari界面,实现各安全模块的基本配置。
  • 基于Kerberos提供身份认证功能,通过KDC构建身份认证服务器。
  • 基于ranger提供数据库,表,列和文件级别定义安全策略能力,还可以管理基于LDAP的特定组或单个用户的权限。也可以将基于时间或地理位置等动态条件的规则添加到现有策略规则中。
  • 基于knox提供边界网关服务。
  • 基于atlas提供数据治理和审计服务,包括:
    • 数据集检索和血缘操作;
    • 元数据驱动的数据接入控制;
    • 可索引的及可搜索的集中式审计;
    • 从抽取到处理的整个过程的数据生命周期管理;
    • 与其他工具的元数据交换
  • 基于wire加密提供数据保护服务。其中RPC加密需要设置hadoop.rpc.protection=privacy,dfs.encryt.data.transfer=true,加密算法可通过dfs.encrypt.data.transfer.algorithm指定为“3des”(默认)或“rc4”,前者更安全,后者更快。
  • HTTPS加密:用户通常使用浏览器或组件CLI与Hadoop交互,而应用程序使用REST api或Thrift。HTTP协议上的加密是通过跨Hadoop集群和对单个组件(如Ambari)的SSL支持实现的。
  • JDBC:HiveServer2使用Java SASL协议的质量保护(QOP)设置实现加密。通过这种方式,可以对通过JDBC在HiveServer2和JDBC客户端之间移动的数据进行加密。

数据应用

针对大量数据,建议采用DaaS模式进行数据应用模式构建,为不同业务部门或数据使用者提供各自所需数据视图,且针对数据使用人员、管理或维护人员,提供统一数据接口,并支持多种数据存储介质的连接,使用户仅需要关注数据本身,减少配置和清洗整合数据的任务量,较好的满足用户友好需求。
目前已经引入到自主搭建的大数据平台,使用技术为dremio,实现根据不同用户需求返回各自权限内所需数据。目前存在配置较为复杂的问题待改进。

dremio部署(Hadoop on yarn模式)

  • dremio Coordinator应该部署于边缘节点
  • 部署后通过dremio UI配置executors数量以及yarn资源分配
  • 为了避免资源冲突,单独为dremio executor 分配一个yarn队列
  • 使用hdfs卷来进行dremio coordinators和executors的缓存和分区目录配置
  • yarn health检查用于监控dremio进程和kill没关干净的进程。

个人博客

个人博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章