Phoenix on HBase+Solr = 易用一体化大数据在线宽表引擎

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 在大数据场景中,HBase由于其高吞吐,高并发,实时可见等特性往往被作为在线主存储,云HBase团队融合了在线存储引擎和全文引擎的优势,解决了针对在线大数据存储的复杂查询难题,并提供SQL统一表达,降低用户使用门槛。通过一站式产品能力,用户可以更加灵活高效地解决业务问题。

一、背景概述

HBase作为海量在线存储引擎,被广泛应用于推荐、风控、物联网、画像、表单等大数据场景。Phoenix作为HBase的SQL层,极大降低了用户使用门槛,并且实现了二级索引、加盐表、动态列等大量实用功能。HBase底层存储基于LSM,LSM能将业务的随机写转为顺序写,能有效提升写吞吐,但是其查询只适合于Rowkey的前缀匹配,查询模式单一;Phoenix二级索引,底层是跟原表关联的索引表,同样也是前缀匹配,一个表可以有多个索引,这样可以增加查询范式,但是索引数目不能太多,否则写放大的问题会比较严重。对于更加复杂的查询场景,比如表单、日志查询里面的模糊查找,用户画像里面的随机条件组合等等,HBase + Phoenix的组合就不能支持。该问题是基于LSM的NoSQL数据库的通用问题,除了HBase,Cassandra、LevelDB、RocksDB、MongoDB的Wired Tiger引擎等都有相同的问题。

image

当前用户常见的解决方法就是给主存储引擎搭配检索引擎,比如Lucene、ElasticSearch、Solr。该方案实际使用过程中十分复杂:

  1. 用户学习成本double,门槛提高;
  2. 用户要解决数据同步,数据同步又分批量离线同步和增量实时同步,用户要选择不同的解决方案,比如用mr作业批量同步,分析wal日志或者双写的方式实时同步;
  3. 同步过程中有数据一致性问题,比如写入检索引擎跟写入存储引擎的数据顺序不一致,这个很难在应用层完全保证;
  4. 数据延迟问题,两个引擎的写入吞吐不一致,往往存储引擎要比检索引擎快很多,容易导致数据堆积,甚至带来稳定性问题。

阿里云HBase团队设计并实现了Search Index功能,一站式解决这些问题,并且支持SQL,用户通过DDL、DQL就可以进行复杂索引操作。

二、方案实现

image

SearchIndex架构如图所示,Phoenix会同时支持全文引擎(Solr)和KV引擎(HBase),并且提供管理和查询索引相关的SQL表达。我们目前基于Solr自研了SearchService服务,涵盖了所有索引管理,数据同步,元数据管理等方面的功能。下面结合图中的Create语句和Select语句对架构设计进行比较深入的说明。

create语句在执行的时候,可分为以下步骤:

  1. phoenix会解析SQL语句,确定Solr中Collection的存储格式,并生成从Phoenix表到Solr Collection的映射关系;
  2. 在IndexCloud(Solr)中创建Collection;
  3. 开启从Phoenix表到Solr Collection的实时数据同步;
  4. 启动分布式作业将存量数据同步到Solr中;

映射的时候,Phoenix默认只在Solr中存储索引,原始数据不需要存储,这样可以节省存储开销。创建成功后,用户可以直接使用Phoenix Upsert语句往Phoenix里面插入数据,后台会将做自动实时同步。为了解决Solr中数据延迟的问题,我们还实现了反压机制,数据可见时间可配置,比如10s,那么Solr中数据比HBase中数据可见最大间隔会由系统保证在10s左右。

Select语句在执行的时候,可分为以下步骤:

  1. Phoenix解析SQL语句,识别哪些请求需要下发到Solr,哪些需要去HBase中执行;
  2. 将1中识别到的请求发给Solr,拿到返回的RowKey列表;
  3. 根据2中拿到的RowKey列表,回查HBase,拿到最终的返回结果。

三、用法示例

SearchIndex可以很好地满足表单、用户画像、日志等场景的复杂查询需求,本章以表单查询为例说明SearchIndex的用法,在表单查询场景中,大部分查询可以通过前缀匹配的方式解决,但是会对表单详情数据进行模糊查找。

--创建表

create table items(col1 integer primary key, name varchar, content varchar, addr varchar);

--插入数据

upsert into items values(1, 'zhangsan', 'hello world!', 'hangzhou')

--创建索引,存量数据默认会同步导入

create search index on items(content{analyzer=standard})

--插入数据,会通过异步方式实时增量导入

upsert into items values(2, 'lisi', 'Xihu is a beautiful place.', 'hangzhou')

--查询表单

select name, addr from items where search_query='CONTENT:hello';

--删除索引

drop search index on items;

四、总结与展望

本文介绍了SearchIndex解决的用户问题,SearchIndex当前的实现逻辑,以及SearchIndex解决表单查询场景的简单示例。用户可以同时享受到KV引擎带来的高并发、高吞吐的读写能力,和全文引擎带来的在线复杂查询能力,并且提供SQL的统一表达,极大提升了产品易用性。通过SearchIndex的一站式产品能力,用户可以更加灵活高效地解决业务问题。

后续我们团队会对SearchIndex持续优化升级。比如,1. 目前用户还需要自己识别那些字段在Search Index中,然后编写Search Query,后续我们会支持native SQL,用户只需要按照普通的SQL语法写Query语句就可以了;2. 第一版本中还只支持条件组合,全文等查询语法,对于分组聚合、排序的加速还不支持,在后续版本中也会增强该功能;3. 数据同步和查询性能也会持续优化。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
5天前
|
机器学习/深度学习 数据可视化 大数据
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
59 15
|
4月前
|
Java 大数据 分布式数据库
Spring Boot 与 HBase 的完美融合:探索高效大数据应用开发的新途径
【8月更文挑战第29天】Spring Boot是一款广受好评的微服务框架,以其便捷的开发体验著称。HBase则是一个高性能的大数据分布式数据库系统。结合两者,可极大简化HBase应用开发。本文将对比传统方式与Spring Boot集成HBase的区别,展示如何在Spring Boot中优雅实现HBase功能,并提供示例代码。从依赖管理、连接配置、表操作到数据访问,Spring Boot均能显著减少工作量,提升代码可读性和可维护性,使开发者更专注业务逻辑。
289 1
|
6天前
|
存储 SQL 分布式计算
大数据时代的引擎:大数据架构随记
大数据架构通常分为四层:数据采集层、数据存储层、数据计算层和数据应用层。数据采集层负责从各种源采集、清洗和转换数据,常用技术包括Flume、Sqoop和Logstash+Filebeat。数据存储层管理数据的持久性和组织,常用技术有Hadoop HDFS、HBase和Elasticsearch。数据计算层处理大规模数据集,支持离线和在线计算,如Spark SQL、Flink等。数据应用层将结果可视化或提供给第三方应用,常用工具为Tableau、Zeppelin和Superset。
82 8
|
2月前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
243 6
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
3月前
|
存储 分布式计算 分布式数据库
深入理解Apache HBase:构建大数据时代的基石
在大数据时代,数据的存储和管理成为了企业面临的一大挑战。随着数据量的急剧增长和数据结构的多样化,传统的关系型数据库(如RDBMS)逐渐显现出局限性。
547 12
|
2月前
|
存储 数据采集 分布式计算
大数据技术:开启智能时代的新引擎
【10月更文挑战第5天】大数据技术:开启智能时代的新引擎
|
4月前
|
分布式计算 大数据 分布式数据库
"揭秘HBase MapReduce高效数据处理秘诀:四步实战攻略,让你轻松玩转大数据分析!"
【8月更文挑战第17天】大数据时代,HBase以高性能、可扩展性成为关键的数据存储解决方案。结合MapReduce分布式计算框架,能高效处理HBase中的大规模数据。本文通过实例展示如何配置HBase集群、编写Map和Reduce函数,以及运行MapReduce作业来计算HBase某列的平均值。此过程不仅限于简单的统计分析,还可扩展至更复杂的数据处理任务,为企业提供强有力的大数据技术支持。
84 1
|
4月前
|
Java Spring 安全
Spring 框架邂逅 OAuth2:解锁现代应用安全认证的秘密武器,你准备好迎接变革了吗?
【8月更文挑战第31天】现代化应用的安全性至关重要,OAuth2 作为实现认证和授权的标准协议之一,被广泛采用。Spring 框架通过 Spring Security 提供了强大的 OAuth2 支持,简化了集成过程。本文将通过问答形式详细介绍如何在 Spring 应用中集成 OAuth2,包括 OAuth2 的基本概念、集成步骤及资源服务器保护方法。首先,需要在项目中添加 `spring-security-oauth2-client` 和 `spring-security-oauth2-resource-server` 依赖。
58 0
|
4月前
|
消息中间件 数据挖掘 Kafka
揭秘大数据时代的极速王者!Flink:颠覆性流处理引擎,让实时数据分析燃爆你的想象力!
【8月更文挑战第29天】Apache Flink 是一个高性能的分布式流处理框架,适用于高吞吐量和低延迟的实时数据处理。它采用统一执行引擎处理有界和无界数据流,具备精确状态管理和灵活窗口操作等特性。Flink 支持毫秒级处理和广泛生态集成,但学习曲线较陡峭,社区相对较小。通过实时日志分析示例,我们展示了如何利用 Flink 从 Kafka 中读取数据并进行词频统计,体现了其强大功能和灵活性。
92 0
|
5月前
|
存储 分布式计算 定位技术
高德地图与阿里云MaxCompute:构建智慧出行的数据引擎
通过与阿里云MaxCompute的紧密结合,高德地图成功构建了一个高效、稳定的大数据处理平台,实现了从数据采集到价值输出的全过程自动化。这不仅提升了数据处理效率,还极大地改善了用户体验,为智慧出行的发展奠定了坚实的基础。随着技术的不断进步,未来高德地图还将探索更多创新的应用场景,持续推动地图服务向智能化方向演进。