震惊!Doris和Hive竟然能这样玩?数据分析的松弛感拉满

凌晨三点,办公室里只剩下屏幕的幽光。数据工程师小明正在和两个"大家伙"较劲 —— Doris和Hive。
“导出、清洗、导入…“他机械地在不同组件来回重复着这些步骤,眼睛都开始冒金星了。这样的场景在数据团队中太常见了,让人不禁想问:难道真的要这样手动倒腾数据一辈子吗?
就在这时,Doris向Hive递出了"橄榄枝” —— Hive Catalog闪亮登场!
它就像是给这对"数据CP"安排了一场完美联姻,从此Doris可以直接读写Hive的数据,让两个系统能够"双宿双飞”。不管是HDFS还是对象存储,不管是简单查询还是复杂分析,一个Catalog就能搞定!
这个神奇的功能让小明眼前一亮,终于可以跟那些繁琐的数据同步说再见了。让我们一起来揭秘这个数据工程师的"续命神器"吧!

[]

Doris与Hive的完美邂逅

深夜,小明正对着屏幕发愁。作为一名数据工程师,他面临着一个棘手的问题:公司的数据分散在Doris和Hive两个系统中,每次跨系统分析数据都要手动导出导入,繁琐且低效。

"要是能让Doris直接读写Hive的数据就好了…"他喃喃自语。

这个烦恼不止小明一个人有。随着数据量的爆炸式增长,企业的数据架构越发复杂,数据存储分散在各个系统中。如何打通这些数据孤岛,实现统一的数据访问和分析,成为了一个普遍的技术痛点。

[tu]

好消息是,Apache Doris通过Hive Catalog功能早已完美解决了这个问题。它好比是在Doris和Hive之间架起了一座桥梁,让两个系统能够无缝协作。

从Doris 2.1.3版本开始,通过Hive Catalog,Doris不仅能够查询和导入Hive中的数据,还能执行创建表、回写数据等操作,真正实现了湖仓一体的架构设计。

Hive Catalog的核心价值在于它提供了一个统一的数据访问层。对数据开发人员来说,不需要再关心数据具体存储在哪里,只需要通过Doris就能完成所有数据操作。比如,可以直接在Doris中创建Hive表:

CREATE CATALOG hive PROPERTIES (
    'type'='hms',
    'hive.metastore.uris' = 'thrift://172.21.16.47:7004'
);

设置完成后,就能像操作普通Doris表一样操作Hive表了。不仅支持查询,还能执行INSERT、CREATE TABLE AS SELECT等写入操作。系统会自动处理分区管理、文件格式转换等复杂细节。

更令人振奋的是,Doris还提供了完善的安全机制。通过集成Kerberos认证和Ranger权限管理,企业不用担心数据安全问题。可以精确控制到列级别的访问权限,保证数据访问的合规性。

现在,小明终于露出了笑容。有了Hive Catalog,他每天的工作效率提升了不少。跨系统的数据分析变得如此简单,就像在操作同一个系统一样流畅。

这仅仅是开始,下文我们将探讨Hive Catalog更多强大的特性。一起来瞅瞅Doris+Hive数据湖仓一体化的新篇章!

Doris-Hive Catalog核心特性

小明最近又遇到了新的挑战。公司的数据分析场景越来越复杂,既有传统的HDFS存储,又引入了对象存储。

如何让Doris优雅地处理这些不同的存储媒介?让我们深入浅出Doris Hive Catalog的强大功能。

[tu]

多样化的存储支持

每个存储系统都有其特色。HDFS+Hive适合历史全量大规模离线数据处理,对象存储则具有高可扩展性和低成本优势…

But,Hive Catalog提供了统一的访问接口,屏蔽了底层存储的差异:

-- 连接S3
CREATE CATALOG hive_s3 PROPERTIES (
    "type"="hms",
    "hive.metastore.uris" = "thrift://172.0.0.1:9083",
    "s3.endpoint" = "s3.us-east-1.amazonaws.com",
    "s3.region" = "us-east-1",
    "s3.access_key" = "ak",
    "s3.secret_key" = "sk",
    "use_path_style" = "true"
);
-- 可选属性:
-- s3.connection.maximum:S3 最大连接数,默认 50
-- s3.connection.request.timeout:S3 请求超时时间,默认 3000ms
-- s3.connection.timeout:S3 连接超时时间,默认 1000ms

-- 连接OSS
CREATE CATALOG hive_oss PROPERTIES (
    "type"="hms",
    "hive.metastore.uris" = "thrift://172.0.0.1:9083",
    "oss.endpoint" = "oss.oss-cn-beijing.aliyuncs.com",
    "oss.access_key" = "ak",
    "oss.secret_key" = "sk"
);

...

智能的元数据管理

Doris采用智能的元数据缓存机制,在保证数据一致性的同时提供高性能查询:

本地缓存策略

Doris会在本地缓存表的元数据信息,减少对HMS的访问频率。当缓存数量超过阈值后,会使用 LRU(Least-Recent-Used)策略移除部分缓存。

智能刷新

[Notification Event 图]

通过订阅HMS的Notification Event,Doris能及时感知元数据变更。例如可以在创建 Catalog 时,设置该 Catalog 的定时刷新:

CREATE CATALOG hive PROPERTIES (
    'type'='hms',
    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
    'metadata_refresh_interval_sec' = '3600'
);

也可以按需手动刷新:

-- 刷新指定 Catalog。
REFRESH CATALOG ctl1 PROPERTIES("invalid_cache" = "true");

-- 刷新指定 Database。
REFRESH DATABASE [ctl.]db1 PROPERTIES("invalid_cache" = "true");

-- 刷新指定 Table。
REFRESH TABLE [ctl.][db.]tbl1;

企业级安全特性

安全永远是企业数据管理的重中之重。Hive Catalog同时也提供了完整的安全解决方案:

Ranger权限控制

Apache Ranger 是一个用来在 Hadoop 平台上进行监控,启用服务,以及全方位数据安全访问管理的安全框架。

Doris 支持为指定的 External Hive Catalog 使用 Apache Ranger 进行鉴权。

目前支持 Ranger 的库、表、列的鉴权,暂不支持加密、行权限、Data Mask 等功能。

只需要配置下FE所有环境,再创建 Catalog 时增加即可:

-- access_controller.properties.ranger.service.name 指的是 service 的类型
-- 例如 hive,hdfs 等。并不是配置文件中 ranger.plugin.hive.service.name 的值。
"access_controller.properties.ranger.service.name" = "hive",
"access_controller.class" = "org.apache.doris.catalog.authorizer.ranger.hive.RangerHiveAccessControllerFactory",

Kerberos认证

除了可以集成Ranger,Doris Hive Catalog也支持与企业现有的Kerberos认证体系无缝集成。例如:

CREATE CATALOG hive_krb PROPERTIES (
    'type'='hms',
    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
    'hive.metastore.sasl.enabled' = 'true',
    'hive.metastore.kerberos.principal' = 'your-hms-principal',
    'hadoop.security.authentication' = 'kerberos',
    'hadoop.kerberos.keytab' = '/your-keytab-filepath/your.keytab',   
    'hadoop.kerberos.principal' = 'your-principal@YOUR.COM',
    'yarn.resourcemanager.principal' = 'your-rm-principal'
);

小明现在可以根据不同的业务需求,灵活选择存储方式和安全模式,真正实现了Doris+Hive数据的统一管理和高效分析。

数据湖和数据仓库的边界正在模糊,Doris通过Hive Catalog架起了连接两个世界的桥梁。随着技术的不断演进,我们期待看到更多创新的应用场景。

下期,我们将一起探讨其它更有趣有用有价值的内容,敬请期待!

### 关于DorisHive的关系及其交互方式 在现代大数据处理环境中,Apache Doris Apache Hive 都扮演着重要角色。然而两者的设计目标有所不同:Doris 是一款实时OLAP数据库,旨在提供快速的数据查询能力;而 Hive 更像是一个基于 Hadoop 的数据仓库工具,适合用于批处理大规模静态数据集。 为了实现更灵活的数据访问模式以及提高整体系统的效率,在某些场景下可以考虑将二者结合起来使用。具体来说,通过配置 DorisHive Catalog 功能[^1],可以让 Doris 直接读取存储在 Hive 中的数据文件,从而无需重复导入导出操作即可享受两种技术的优势——既保留了原有 Hive 数据湖中的海量历史资料,又能够利用 Doris 实现高效的即席查询服务。 #### 使用Doris连接到Hive的具体方法如下: 首先需要确保已经正确设置了 MySQL 客户端环境来管理多源之间的切换命令 `switch` 可以帮助用户轻松改变当前会话所使用的外部表所属的Catalog名称。当输入 `mysql> switch hive;` 后如果返回提示信息为 "Query OK, 0 rows affected" 则表示成功选择了名为 'hive' 的Catalog[^5]。 接着可以通过创建外表的方式定义指向HDFS上由Hive管理的实际位置路径下的Parquet/ORC等格式化后的结构化数据文件作为新的逻辑视图供后续SQL语句调用分析之需。 ```sql CREATE EXTERNAL TABLE IF NOT EXISTS dws_sales_order_detail ( order_id BIGINT, product_id INT, quantity DOUBLE, price DECIMAL(9,2), create_time DATETIME ) ENGINE=HIVE PROPERTIES( "resource" = "hive_catalog", "database" = "default" ); ``` 上述代码片段展示了如何在一个支持 SQL 查询接口的应用程序里声明一张关联至远端 Hive 表格的新实体对象实例。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值