Apache Kylin 实践:链家数据分析引擎

Apache Kylin™ 是一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的 Hive 表。

Apache Kylin
Apache Kylin

其特征包括:

  • 可扩展超快 OLAP 引擎:Kylin 是为减少在 Hadoop/Spark 上百亿规模数据查询延迟而设计
  • Hadoop ANSI SQL 接口:Kylin 为 Hadoop 提供标准 SQL 支持大部分查询功能
  • 交互式查询能力:通过 Kylin,用户可以与 Hadoop 数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能
  • 多维立方体(MOLAP Cube):用户能够在 Kylin 里为百亿以上数据集定义数据模型并构建立方体
  • 与 BI 工具无缝整合:Kylin  提供与BI工具的整合能力,如 Tableau,PowerBI/Excel,MSTR,QlikSense,Hue 和 KXCY-BD-VIZ(跨象乘云™大数据可视化探索平台)

其他特性还包括:Job 管理与监控 / 压缩与编码 / 增量更新 / 利用 HBase Coprocessor / 基于 HyperLogLog 的 Dinstinc Count 近似算法 / 友好的 Web 界面以管理,监控和使用立方体 / 项目及表级别的访问控制安全 / 支持 LDAP、SSO 等。

同时,伴随链家业务线的拓宽和发展,以及数据生态的建设,数据规模快速增长。从 2015 年大数据部门成立至今,集群数据存储量为 9PB,服务器规模为 200 台 +。与此同时,数据需求也随着业务的发展落地不断增长,如统计分析、指标 API、运营报表等,不同业务需求差异较大,维度越来越多,需要定制化开发。面对数十亿行级别的数据,低延迟响应的特性,保障服务稳定、数据准确,链家的数据分析引擎经历了如下的发展历程。

链家 OLAP 平台及 Kylin 使用

链家 OLAP 平台结构(By 邓钫元),于 2016 年底搭建。Kylin 采用集群部署模式,共部署 6 台机器,3 台用于分布式构建 Cube,3 台用于负载均衡查询,query 单台可用内存限制在 80 G。同时,计算集群一旦运行大任务,内存压力大的时候,Hbase 就会性能非常差,为避免和计算集群互相影响,Kylin 集群依赖独立的 Hbase 集群。同时,对 Hbase 集群做了相应的优化,包括:读写分离、SSD_FIRST 优先读取远程 SSD、并对依赖的 HDFS 做了相应优化。

由于 Kylin 只专注预计算,不保存明细数据,对于即席查询和明细查询,通过自研 QE 引擎实现,底层依赖 Spark、Presto、HIVE,通过特定规则,路由到相应查询引擎执行查询。多维分析查询,由 Kylin 集群提供查询服务,可实现简单的实时聚合计算。

当前 Kylin 主要查询方为指标 API 平台,能根据查询 SQL 特征,做相应缓存。指标 API 作为数据统一出口,衍生出其他一些业务产品。使用统计,如下:Cube 数量 350+,覆盖公司 12 个业务线。Cube 存储总量 200+ TB,数据行万亿级,单 Cube 最大 40+ 亿行。日查询量 27 万+,缓存不命中情况下,时延 < 500ms (70%), < 1s (90%),少量复杂 SQL 查询耗时 10s 左右。

Kylin 应用场景及使用规范

适用场景:数据规模大,非实时,目前能支持小时级别;维度组合和查询条件组合在可预见的范围内;查询条件扫描范围不会太大;不适合需要大范围模糊搜索排序的场景(类似 Search)。 如何能规范的使用 Kylin 很重要,在 Kylin 建设初期,踩过很多坑。并不是程序的错误,而是未能详细了解 Kylin 使用流程及规范,逐渐摸清积累了一些经验,沉淀到公司 wiki,供相关人员参考。大致如下:

一、维度优化,预计算的结果需要存储到 Hbase,且支持实时查询,因此,在配置维度时,要考虑到存储和查询的优化。包括:维度的编码,根据维度的值类型,选择合适的存储类型,可节省空间,加快 Hbase scan 效率;可根据业务需要,对维度进行分片存储,增加查询的并发度,缩短查询时间;基数允许范围内的维度,尽量采用字典编码;对于分区字段,一般格式为 yy-MM-dd hh:mm:ss,若只需要细化到天级别,可保存为数字类型 yyMMdd,极大降低维度基数。

二、根据 Hbase 的查询特性,rowkeys 是由维度组合拼接而成,因此要考虑到以后查询场景:对于查询频繁的维度,在设置 rowkeys 时,优先放在前面。

三、维度组合优化,由于维度的组合影响最终的数据量,因此如何能减少维度的组合,是 Cube 配置时所要考虑的。根据业务需要,及 Kylin 支持的特性,可进行的维度组合优化有:使用衍生维度,只物化维度表的主键,牺牲部分运行时性能进行实时 join 聚合;使用聚合组,将相关维度内聚成一组,并在聚合组内,根据维度的特征,配置强制维度、层级维度、联合维度。聚合组的设计可以非常灵活,例如,高基数的维度,可以单独一个 group。

四、及时清理失效数据。由于构建过程出错或者集群故障,会导致一些垃圾文件,随着时间积累的一些无用 segment,不但占用存储空间,增加 namenode 内存压力,以及占用 Hbase、HIVE 及 Kylin 元数据空间,因此需要定期清理掉,保持存储环境干净。

应该实时监控集群状态,重点关注 Cube 构建和查询的低延迟,不断优化数据模型及 Cube 的设计和存储,根据用户真正的需求,在存储、构建及查询性能间找到最佳的平衡点。

Hive+HBase集成模型

伴随着大数据的应用,Google, 亚马逊,国内 BAT 等正在彻底的颠覆我们的生活。作为消费者,我们期望智能的应用程序能预知,建议,预测我们的每一个行为;筛选数百万种可能性后向我们推荐最适合我们的选择;借助智能应用在无尽的可能中挑选出最具个性化的配搭。—— 如此的个性化配搭要求系统存储并在短时间内分析处理海量数据源,这便是 Hadoop 诞生第一天所要完成的使命。

同时,大数据企业正在使用更为广泛的数据处理技术来构建具有深度分析的应用程序,常见的模式包括:

  • 使用 HBase 作为在线操作数据存储,以便快速更新热数据,例如当前的小时/分钟等
  • 使用 Apache Phoenix 直接对 HBase 执行操作查询
  • 使用标准 ETL 模式在 HBase 到 Hive 表中将数据老化(Aging)
  • 使用 Hive 执行深层次的 SQL 分析

Hive 和 Hbase 有各自不同的特征:

  • Hive 是高延迟、结构化和面向分析的
  • Hbase 是低延迟、非结构化和面向编程的
  • Hive 数据仓库在 Hadoop 上是高延迟的

Hive 集成 HBase,可以有效利用 HBase 数据库的存储特性,如:行更新和列索引等。在集成的过程中需要注意维持 HBase jar 包的一致性。Hive 集成 HBase 需要在 Hive 表和 HBase 表之间建立映射关系,也就是 Hive 表的列和列类型与 HBase 表的列族及列限定词建立关联。每一个在 Hive 表中的域都存在与 HBase 中,而在 Hive 表中不需要包含所有 HBase 中的列。下图显示了 Hive 与 Hbase 集成的几种常见集成模型:

hive-hbase-integration
hive-hbase-integration

企业正在使用广泛的数据深度分析架构组合,如:Apache HBase,Apache Hive,Apache Phoenix 等来处理对大量数据集的当前数据和分析的快速更新,这些数据集都存储在 HDFS 中,以实现闭环分析系统。

扩展阅读:Hortonworks HBASE AND HIVE – BETTER TOGETHER

大数据企业级仿真科研教学实践环境

大数据工程实践系统环境
工程实践系统环境 —— 大数据企业级仿真科研教学实践环境

大数据企业级仿真科研教学实践环境,是跨象乘云公司专门为高校教师与学生定制化的设计的企业级大数据项目开发综合环境,可供大数据专业学生或项目开发小组完成大数据全生命周期的工程实践及实验操作。厂家工程师在工程实践系统环境内部,对应相关课程模块教学与实验需求,预装包含:系统环境,功能连接中间件,应用数据库,SQL 结构化大数据数据库,NoSQL 非结构化数据库,教学用示例数据资源,以及面向专业类开发,管理,调优等功能组件及应用软件,满足相关教学与实验所需的应用场景。完整的大数据生态部件包括:

  • Airflow – ELT数据采集、导入、处理管道
  • Crunch – 编写、测试、运行MapReduce管道的JAVA框架
  • Flume – 分布式海量日志流采集架构
  • HBase – Hadoop数据库,面向分布式可扩展的大数据存储
  • HCatalog – 对接不同数据处理工具的Hadoop表与存储管理接口
  • Hive – 使用SQL语法读取、写入分布式存储大数据集的数据仓库
  • HttpFS – 支持所有Hadoop文件系统读写操作的HTTP网关服务器
  • Hue – 可视化大数据分析工作平台
  • Impala – Hadoop本地分析数据库
  • Jupyter Notebook – Web应用程序,创建和共享包含实时代码,方程式,可视化和叙述文本的文档。同时可实现数据清理和转换,数值模拟,统计建模,数据可视化,机器学习等。
  • Kafka – 用于构建实时数据管道和流式应用程序
  • kxcyViz – 跨象乘云™可视化数据统计与多维分析探索平台
  • Llama – 协调、管理和监控Impala和YARN之间的集群资源
  • Mahout – 提供分布式线性代数的机器学习与数据挖掘框架
  • Oozie – 管理Hadoop作业的工作流调度程序系统
  • Open Refine – 数据清理与处理,格式转换工具,支持Web服务和外部数据扩展
  • Pig – 大型数据集并行分析平台
  • Rapid Miner – 数据科学团队工作平台,集成机器学习和预测模型部署
  • R &. RStudio – 统计运算与数据可视化环境及工作平台
  • Search (Solr) – 企业级分布式索引,检索,复制与负载均衡查询平台
  • Sentry – Hadoop集群数据和元数据细粒度角色授权系统
  • Snappy – 高效数据压缩/解压缩库
  • Spark – 最流行的用于大规模数据处理的高速通用引擎
  • Sqoop – 用于在Hadoop和结构化数据存储/关系数据库之间高效传输批量数据的工具
  • Whirr – 运行大数据云服务的库
  • ZooKeeper – 分布式服务器开发与运维协调枢纽

大数据基础与实战(90学时)

无论是人工智能,机器学习还是深度学习,其发展与壮大均得益于大数据产业的不断成熟。只有在海量数据,多来源数据,多格式数据分析框架的支撑下,机器学习与深度学习的各种算法模型,才能经过不断的训练,重复验证循环,最终得到理想的结果,而形成机器智能认知。大数据已成为人工智能的基础设施,如何实现大数据与人工智能的有机结合,已成为现今高科技互联网企业的重点探索方向。《大数据基础与实战》课程,是真正面向企业大数据业务的实践性课程,基于跨象乘云公司集成部署的大数据工程实践系统环境,旨在帮助学生了解:各种大数据技术如何运作,这些技术应何时用于较大规模的大数据项目中,它们如何同时发挥作用,为企业提供最高的投资回报率。该课程旨在阐述大数据项目的五个阶段战略,使学生了解如何使用并充分利用大数据。这五个阶段包括:

  • 数据处理底层架构(阶段1)
  • 数据采集和存储(阶段2)
  • 数据访问和处理(阶段3)
  • 数据统一和分析(阶段4)
  • 数据安全/可视化/性能优化(阶段5)

每个阶段均包括 Hadoop 核心组件和生态系统技术以及大数据技术或产品。学生将学习信息管理系统如何采用一种全面的方法将大数据(非结构化和半结构化)与关系数据(结构化)进行整合,从而发现更多嵌入大数据池中的价值。同时,通过电子商务,金融,健康医疗等真实的商业级项目实训案例,完整的“端到端”业务流程演示与上机操作训练,让学生真正了解大数据行业背景以及企业实施技术需求,通过直观而具备针对性的训练使学生在最短时间内得到应用技术技能的提升,更进一步满足职业岗位对工作技能的需求。从而使学生能够学习到:

  • 大数据整体业务流程及系统组件部署模式;
  • 数据源捕获与多格式数据集成,
    实现“全”数据分析与挖掘;
  • 应用多种分析算法获得最佳预测计算模型;
  • 利用数据可视化分析系统展现最佳商业智能视图;
  • 通过参与商业项目研发流程,有效掌握岗位所需技能,实现精确匹配;

大数据基础与实战(90学时)

本课程是真正面向企业大数据业务的实践性课程,基于跨象乘云公司集成部署的大数据工程实践系统环境,旨在帮助学生了解:各种大数据技术如何运作,这些技术应何时用于较大规模的大数据项目中,它们如何同时发挥作用,为企业提供最高的投资回报率。该课程旨在阐述大数据项目的五个阶段战略,使学生了解如何使用并充分利用大数据。这五个阶段包括:

  • 数据处理底层架构(阶段1)
  • 数据采集和存储(阶段2)
  • 数据访问和处理(阶段3)
  • 数据统一和分析(阶段4)
  • 数据安全/可视化/性能优化(阶段5)

每个阶段均包括Hadoop核心组件和生态系统技术以及大数据技术或产品。学生将学习信息管理系统如何采用一种全面的方法将大数据(非结构化和半结构化)与关系数据(结构化)进行整合,从而发现更多嵌入大数据池中的价值。