在腾讯云 EMR 上使用 GooseFS 加速大数据计算服务
GooseFS 是腾讯云对象存储团队最新推出的高性能、高可用以及可弹性伸缩的分布式缓存系统,依靠对象存储(Cloud Object Storage,COS)作为数据湖存储底座的成本优势,为数据湖生态中的计算应用提供统一的数据湖入口,可加速基于腾讯云对象存储的各类海量数据分析以及机器学习等任务。本文将介绍如何在腾讯云 EMR 上使用 GooseFS 加速大数据计算任务。
GooseFS 是腾讯云对象存储团队近期面向下一代云原生数据湖场景推出的存储加速利器,提供与 HDFS 对标的 Hadoop Compatible FileSystem 接口实现,可为云上的大数据计算任务提供:
- 高可靠、可弹性伸缩的分布式读写缓存服务;
- 内存级的数据本地化(Data Locality)访问性能;
- 基于 Namespace 粒度的读写缓存策略以及 Hive Table 级别预热;
- 与 HDFS 一致的 Ranger 鉴权机制;
- 对象存储 AZ 级别的加速访问与高 QPS 的元数据访问能力;以及快速部署和开箱即用等特性。

本文将基于腾讯云 EMR 介绍如何快速部署 GooseFS 用于加速云上大数据分析任务。
1 加速腾讯云 EMR 大数据计算任务
为了在腾讯云 EMR 中使用 GooseFS 加速大数据计算任务,可参考官网文档腾讯云 EMR 环境中部署和配置GooseFS(https://cloud.tencent.com/document/product/436/58513),即可开启 GooseFS 的缓存加速能力。下文将以数据仓库业务以及迭代计算场景展示 GooseFS 的加速访问能力。
2 加速基于Hive、Spark SQL和Presto数据仓库查询业务
很多大数据客户的数据仓库类业务具备明显的冷热周期特征,例如:某大数据客户每天会定时基于数仓生成日报报表,Hive 表的分区是日期维度。
GooseFS 集成了 Hive Table 的元数据管理能力,并且提供了 Hive table & partition 粒度的数据预热特性,用户可以通过配置工作流任务来每天在闲时预热加载 table & partition 以降低峰值查询的带宽消耗,然后在数据访问高峰期提供内存级的缓存加速能力。
在热表或分区变冷以后,使用 Free 命令将其从缓存中释放掉。

| 下面,将会详细地介绍 GooseFS Table 管理能力以及预热方法。
3 GooseFS Table & Partition 管理与预热
GooseFS Table & Partition 管理与预热能力都是通过 GooseFS 的 table 命令行来实现:
$ goosefs table
Usage: goosefs table [generic options]
[attachdb [-o|--option <key=value>] [--db <goosefs db name>] [--ignore-sync-errors] <udb type> <udb connection uri> <udb db name>]
[detachdb <db name>]
[free <dbName> <tableName> [-p|--partition <partitionSpec>]]
[help [<command>]]
[load <dbName> <tableName> [-g|--greedy] [--replication <num>] [-p|--partition <partitionSpec>]]
[ls [<db name> [<table name>]]]
[stat <dbName> <tableName>]
[sync <db name>]
[transform <db name> <table name> [-d <definition>]]
[transformStatus [<job ID>]]
其中,提供 Hive DB 绑定和解绑,预热加载DB下的指定 Table & Partition。
- 在预热 Hive DB 中的指定 Table & Partition 到 GooseFS 之前,需要先将 DB 挂载到 GooseFS 中:
$ goosefs table attachdb --db test_db hive thrift://metastore_host:port goosefs_db_demoresponse of attachdb
- 挂载完后,可使用 GooseFS 的命令行查看 DB 中的 Table 信息:
$ goosefs table ls test_db web_page
OWNER: hadoop
DBNAME.TABLENAME: testdb.web_page (
wp_web_page_sk bigint,
wp_web_page_id string,
wp_rec_start_date string,
wp_rec_end_date string,
wp_creation_date_sk bigint,
wp_access_date_sk bigint,
wp_autogen_flag string,
wp_customer_sk bigint,
wp_url string,
wp_type string,
wp_char_count int,
wp_link_count int,
wp_image_count int,
wp_max_ad_count int,
)
PARTITIONED BY (
)
LOCATION (
gfs://metastore_host:port/myiNamespace/3000/web_page
)
PARTITION LIST (
{
partitionName: web_page
location: gfs://metastore_host:port/myNamespace/3000/web_page
}
)
- 然后,可预热指定 Table 到 GooseFS中,同时还可以查看 Table 预热情况:
$ goosefs table load test_db web_pageAsynchronous job submitted successfully, jobId: 1615966078836
- 预热完成后,就可以正常的执行查询任务,获得 GooseFS 的本地缓存加速性能。
GooseFS 加速性能对比
这里,我们基于标准的 TPCDS benchmark 在腾讯云 EMR 环境中对比测试了本地 HDFS 得到整个测试过程总时延。其中,GooseFS 挂载 COSN 作为其UFS,并且提前预热了测试数据集。

在相同的测试数据集本地化的程度下,GooseFS 读数据访问性能上相对 HDFS 更好。具体分 SQL case 的时延数据可参考附录。
同时,COSN 和 CHDFS 作为腾讯云上两个比较常用的大数据文件系统实现,也可作为 GooseFS 的 Under File System 使用。这里也对比测试这三个文件系统,其中 GooseFS 挂载 COSN 作为其UFS,同样提前预热的测试数据集。

从该项测试结果,也可以看出,GooseFS 在预热数据的条件下,可以显著加速腾讯云上大数据存储系统的访问性能。具体分 SQL case 的时延数据可参考附录。
4 总结
GooseFS 作为腾讯云对象存储新推出的云原生大数据存储加速器,解决了基于 COSN 以及 CHDFS 等云上存储的 Data Locality 的缺陷,提供了本地近内存级的访问性能。
同时,GooseFS 提供了 Hive Table & Partition 级别的预热能力以及缓存策略管理,能够极大地方便用户完成数据预热和访问加速。在未来,GooseFS 会元数据访问性能、本地短路读性能以及智能 Cache 方向上做更深层次的优化开发,旨在进一步加速海量数据湖应用性能。关于了解更多请前往:https://cloud.tencent.com/document/product/436/56412
5 附件
case100_D3_本地SATA_HDFS 和 case100_D3_本地SATA_GOOSEFS 的 TPCDS 测试结果:
| SQL case | case100_D3_本地SATA-HDFS | case101_D3_本地SATA-GooseFS |
|---|---|---|
| 29618 | 28230 | |
| query1.sql | 150 | 167 |
| query2.sql | 1392 | 1213 |
| query3.sql | 402 | 329 |
| query8.sql | 338 | 255 |
| query12.sql | 280 | 252 |
| query13.sql | 367 | 293 |
| query15.sql | 767 | 706 |
| query19.sql | 368 | 297 |
| query20.sql | 503 | 441 |
| query21.sql | 170 | 182 |
| query22.sql | 96 | 94 |
| query26.sql | 582 | 583 |
| query31.sql | 1211 | 854 |
| query32.sql | 929 | 670 |
| query33.sql | 673 | 450 |
| query34.sql | 345 | 253 |
| query36.sql | 444 | 404 |
| query37.sql | 473 | 396 |
| query38.sql | 811 | 603 |
| query39.sql | 498 | 510 |
| query40.sql | 953 | 905 |
| query43.sql | 328 | 252 |
| query45.sql | 453 | 426 |
| query46.sql | 361 | 332 |
| query48.sql | 431 | 382 |
| query52.sql | 345 | 239 |
| query53.sql | 806 | 777 |
| query55.sql | 341 | 237 |
| query56.sql | 675 | 459 |
| query57.sql | 2627 | 2559 |
| query59.sql | 1711 | 1618 |
| query60.sql | 687 | 465 |
| query63.sql | 805 | 776 |
| query66.sql | 433 | 430 |
| query68.sql | 352 | 320 |
| query70.sql | 1261 | 3961 |
| query71.sql | 677 | 475 |
| query73.sql | 339 | 237 |
| query76.sql | 662 | 378 |
| query82.sql | 758 | 688 |
| query83.sql | 309 | 320 |
| query86.sql | 186 | 152 |
| query87.sql | 792 | 613 |
| query89.sql | 809 | 776 |
| query97.sql | 880 | 712 |
| query98.sql | 838 | 789 |
SSD 云盘环境的 GooseFS、CHDFS 以及 COSN 的对比测试结果:
| SQL case | case200_S5_SSD云盘-GooseFS | case201_S5_SSD云盘-CHDFS | case204_S5_SSD云盘-COSN |
|---|---|---|---|
| 30353 | 36820 | 41803 | |
| query1.sql | 194 | 212 | 205 |
| query2.sql | 1377 | 1558 | 1921 |
| query3.sql | 463 | 457 | 570 |
| query8.sql | 294 | 394 | 509 |
| query12.sql | 287 | 307 | 347 |
| query13.sql | 307 | 668 | 814 |
| query15.sql | 837 | 867 | 1074 |
| query19.sql | 354 | 512 | 586 |
| query20.sql | 576 | 554 | 680 |
| query21.sql | 213 | 196 | 210 |
| query22.sql | 111 | 109 | 107 |
| query26.sql | 806 | 882 | 973 |
| query31.sql | 972 | 1328 | 1817 |
| query32.sql | 778 | 949 | 1453 |
| query33.sql | 524 | 779 | 1049 |
| query34.sql | 292 | 428 | 526 |
| query36.sql | 479 | 545 | 688 |
| query37.sql | 449 | 500 | 679 |
| query38.sql | 691 | 868 | 1210 |
| query39.sql | 695 | 565 | 654 |
| query40.sql | 1098 | 1082 | 1251 |
| query43.sql | 304 | 378 | 514 |
| query45.sql | 506 | 568 | 628 |
| query46.sql | 412 | 557 | 610 |
| query48.sql | 437 | 697 | 847 |
| query52.sql | 242 | 328 | 501 |
| query53.sql | 946 | 899 | 1058 |
| query55.sql | 244 | 351 | 485 |
| query56.sql | 520 | 704 | 925 |
| query57.sql | 3223 | 2914 | 3469 |
| query59.sql | 1965 | 1930 | 2302 |
| query60.sql | 539 | 696 | 905 |
| query63.sql | 935 | 934 | 1025 |
| query66.sql | 543 | 593 | 584 |
| query68.sql | 380 | 570 | 578 |
| query70.sql | 1430 | 4173 | 1608 |
| query71.sql | 536 | 780 | 951 |
| query73.sql | 282 | 384 | 547 |
| query76.sql | 368 | 648 | 981 |
| query82.sql | 796 | 828 | 972 |
| query83.sql | 369 | 353 | 378 |
| query86.sql | 163 | 184 | 219 |
| query87.sql | 712 | 896 | 1038 |
| query89.sql | 951 | 924 | 1050 |
| query97.sql | 801 | 871 | 1213 |
| query98.sql | 952 | 900 | 1092 |
在腾讯云 EMR 上使用 GooseFS 加速大数据计算服务的更多相关文章
- 腾讯云EMR大数据实时OLAP分析案例解析
OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值.本文基于QQ音乐海量大数据实时分析场景,通过QQ音乐与腾 ...
- 怎样将本地web数据库项目部署到腾讯云服务器上?
怎样将本地web数据库项目 部署到腾讯云服务器上? 1.本地计算机的工作: 1.1用eclipse或者myeclipse做好一个web项目,可以只做一个数据库的增删改查,本地部署到Tomcat服务器, ...
- 怎样将本地web项目部署到腾讯云服务器上?
怎样将本地web项目部署到腾讯云服务器上? 1.本地计算机的工作: (1).用eclipse新建一个web项目,然后在webcontent下新建一个index.html,然后在本地部署到Tomcat服 ...
- 在腾讯云服务器上体验Docker
版权声明:本文由姚俊刚原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/85 来源:腾云阁 https://www.qclou ...
- Navicat连接腾讯云服务器上的数据库
下面介绍Navicat连接腾讯云服务器上的数据库的两种方法: 方法一:[不需要修改相关远程客户端连接权限] 点击安装好的桌面navicat图标,进入后如下图: 连接方法:ssh中输入自己服务器的外网i ...
- GooseFS助力大数据业务数倍提升计算能力
前言 GooseFS是由腾讯云推出的一款分布式缓存方案,主要针对包括需要缓存加速的数据湖业务场景,提供基于对象存储COS服务的近计算端数据加速层. GooseFS 基于开源大数据缓存方案 Alluxi ...
- 揭秘阿里云EB级大数据计算引擎MaxCompute
日前,全球权威咨询与服务机构Forrester发布了<The Forrester WaveTM: Cloud Data Warehouse, Q4 2018>报告.这是Forrester ...
- 奇点云数据中台技术汇(一) | DataSimba——企业级一站式大数据智能服务平台
在这个“数据即资产”的时代,大数据技术和体量都有了前所未有的进步,若企业能有效使用数据,让数据赚钱,这必将成为企业数字化转型升级的有力武器. 奇点云自研的一站式大数据智能服务平台——DataSimba ...
- 史上最易懂的大数据 OTO
史上最易懂的大数据 OTO http://network.51cto.com/art/201503/467068.htm 终于有人把O2O.C2C.B2B.B2C的区别讲透了 http://tech. ...
- 将禅道部署到腾讯云linux 上
部署环境 :linux(腾讯云),用到了 xshell FileZilla 使用禅道集成环境lampp直接部署 1.首先下载 lampp j集成环境包.https://sourceforge.ne ...
随机推荐
- RDK X5首发上手体验!真的太帅啦!!!
RDK X5首发上手体验!真的太帅啦!!! 本Blog同步发表于: 地瓜机器人开发者论坛: CSDN: 一年多以前无意中了解到了RDK X3,之后我便迅速的被地平线机器人开发者论坛(现在改名为了地瓜机 ...
- iOS中搜索框EVNCustomSearchBar使用小结
最近在项目开发中用到了搜索框,之前都是用的系统的searchbar,现有项目中用的是EVNCustomSearchBar,我试了一下还挺方便,下面说一下具体的用法. 第一步:引入添加相关的委托代理EV ...
- yarn 和 npm 不能混合使用
当有 yarn.lock 的时候说明项目使用的yarn 创建的 则后面的都要使用 yarn 操作,比如下载 包 等 : 当项目没有 yarn.lock 而是 package.json.lock 说明项 ...
- kotlin协程——>基础、取消与超时
Kotlin使用挂起函数为异步操作,使用kotlinx.coroutines中的launch.async 1. 第⼀个协程程序 import kotlinx.coroutines.* fun main ...
- Squid设置用户名密码
在ubutnu上设置squid代理认证 为了在Ubuntu上设置Squid代理身份验证,您需要对Squid配置文件进行以下一些调整: 生成Squid代理身份验证密码 htpasswd是两种可用于生成代 ...
- OOP七大原则
OOP七大原则 开闭原则 抽象约束.封装变化.对扩展开放,对修改关闭. 通过"抽象约束.封装变化"来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的 ...
- OGRE 渲染引擎 Windows 平台构建及编译
0 OGRE 机器人领域常见的Rviz和Gazebo可视化的渲染后端. 1 无数的坑 这东西真的可恶,官方教程文档以及项目构建的方式是真的繁琐,在Windows上. CMake 的构建必须要使用 CM ...
- CSS动画效果(炫酷登录页面)
1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa6ibiceejK9loT70yREYASOhuSRaI6vQtQ42zN48oafaWDzdn ...
- Computersystemsicherheit学习笔记
1.Verlässliche System 1.1 Security和Safety的区别 1.2 Fault,Error和Failure的区别 举例如下: 1.3 Verfügbarkeit 例题: ...
- 5道大厂的JAVA经典面试题
前言 本来想着给自己放松一下,刷刷博客,慕然回首,Java的四种引用,强弱软虚?泛型常用特点?Java创建对象有几种方式? 有没有可能两个不相等的对象有相同的hashcode?深拷贝和浅拷贝的区别是什 ...