玩转阿里云EMR三部曲-高级篇 交互式查询及统一数据源

本文涉及的产品
EMR Serverless Spark 免费试用,1000 CU*H 有效期3个月
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 利用阿里云EMR生态定制化集群,实现数据仓库满足商业/运营的查询需求,并提供横向扩展提升性能的空间,结合多样服务达到数据交互查询及统一数据源下的最佳成本控制。

作者:邓力,entobit技术总监,八年大数据从业经历,由一代HADOOP入坑,深耕云计算应用领域,由从事亚马逊EMR和阿里云EMR应用开发逐步转入大数据架构领域,对大数据生态及框架应用有深刻理解。

引言

笔者近几年工作以架构为主,本系列文章旨在从系统架构层面提供一定参考和帮助。
本文默认阅读文章的小伙伴们有MR/SPARK等基础,文中不再重复介绍相关知识。

本文为玩转阿里云EMR系列最终篇,第一篇文章为基础介绍和样例实战,可以查看玩转阿里云EMR三部曲-入门篇,第二篇文章为集成自有服务于EMR,可以查看玩转阿里云EMR三部曲-集成篇

多样化的数据需求
随着数据越来越多,商务和运营同学们需求更多的数据开发和维护,但是研发同学忙于产品线,没有足够的资源可以持续满足日益增多的数据开发。

宝贵的硬盘空间
之前数据结果集中存放于自有的FTP服务器,磁盘空间越来越紧张,需要不停的增加硬盘,也会受到单节点磁盘性能的影响。

不统一的数据源
不同的业务线使用了不同的数据库,有一些类日志行为使用MONGODB,事务类使用了MYSQL,还有搜索服务等,不同的数据源极大增加了开发/维护的难度

寻找解决方案

目标

  • 统一数据源
  • 释放单点硬盘瓶颈
  • 引入交互式类SQL查询

方案选型

1.阿里云数据湖
2.基于EMR定制
3.自建加定制混合云

三种方案成熟,最终都能达到效果。不同的公司/组织架构会有差异化,以下是三种方案的侧重点

  • 阿里云数据湖
    完美兼容阿里云生态下的各种服务,比如OSS,阿里云MYSQL版,阿里云MONGODB版,图形化界面
  • 基于EMR定制
    完美兼容OSS,兼容自有MYSQL,MONGODB等,图形化界面(hue)
  • 混合云
    自有IDC与阿里云结合

其中阿里云数据湖也可以兼容自有MYSQL/MONGODB服务等,只不过可能会因为版本不同有异常问题。

一点点建议:

  • 首选阿里云数据湖
  • 次选EMR定制
  • 忽略成本问题可以参考混合云

团队控制成本非常严格,所以这次只能选用的是方案2-基于EMR定制

实现细节
1.创建EMR包月集群,可以参考玩转阿里云EMR三部曲-入门篇

2.等待集群创建成功,在EMR控制台界面修改HIVE参数 hive.execution.engine=tez,重启HIVE服务

image

3.登陆MASTER并查看HUE服务是否正常,不正常重新启动HUE进程 参考命令(默认端口为8888)

/usr/lib/hue-current/build/env/bin/supervisor >/dev/null 2>&1 &
AI 代码解读

4.绑定域名至阿里云ECSIP

5.利用域名绑定ECS NGINX跳转MASTER端口开启公网HUE服务

# nginx核心部分
upstream hue {
    server ip:8888 max_fails=3 fail_timeout=20s;
}

server {
    listen 80;
    server_name HOSTNAME;
    location / {
        proxy_pass http://hue;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-SSL-Protocol $ssl_protocol;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-HTTPS-Protocol $ssl_protocol;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
    }
}
AI 代码解读

重启或者重载NGINX服务
备注:

  • 这里可以设置IP黑白名单
  • 开启公网TEZUI可以类似设置
  • 如果实在没有域名可以在EMR安全组设置打开公网端口访问,不推荐
    登陆公网域名并访问HUE,其中域名为NGINX内配置加域名后缀,比如:hue.abcd.com。默认账号和密码可以在EMR控制台查看,这里涉及安全问题不予描述

6.登陆公网域名并访问HUE,其中域名为NGINX内配置加域名后缀,比如:hue.abcd.com。默认账号和密码可以在EMR控制台查看,这里涉及安全问题不予描述
image

7.进入notebook工作台页面,在IDE内可以建表并查询如下:

// 建测试表
create external table a (
  c0 bigint,
  day string,
  name string,
  channel string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
location 'oss://xxx:yyy@bucket.oss-cn-beijing-internal.aliyuncs.com/daily/test/'

// 查询
select * from a limit 10

// 结果
2018-04-19    2018-07-04    一代倾城逐浪花    youku
2018-04-22    2018-09-02    丧尸屠城2    iqiyi
2018-08-07    2018-08-08    前任攻略    letv
2018-08-07    2018-08-08    复仇者联盟2:奥创纪元    letv
2018-04-18    2018-09-02    外八门之雪域魔窟    iqiyi
AI 代码解读

8.引入更多支持格式,统一数据源,添加JSON格式JAR包,MONGDODB驱动等等

// 下载JAR包
wget "http://www.congiu.net/hive-json-serde/1.3.8/cdh5/json-serde-1.3.8-jar-with-dependencies.jar"
// 拷贝至hive jar路径
cp json-serde-1.3.8-jar-with-dependencies.jar /usr/lib/hive-current/lib/
// 利用EMR控制台重启HIVE服务
// 建立json表,注意key大小写映射
CREATE EXTERNAL TABLE default.json_test (isOriginal BOOLEAN,`@timestamp` STRING,official_account STRING,down BIGINT,duration BIGINT)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
with serdeproperties ("mapping.isOriginal"="isOriginal")
location 'oss://xxx:yyy@bucket.oss-cn-beijing-internal.aliyuncs.com/json/test/'
AI 代码解读

9.查看正在执行的任务可以查看链接 http://hue.abcd.com/jobbrowser/ 或者通过TEZUI页面查看

更多思考
1.包月集群任务优先级或者资源如何隔离:使用队列

2.包月集群在某个时间段负载过高如何解决: 使用EMR弹性伸缩,可以更具CPU负载或者时间设定增加/缩减节点数量

3.统计结果查询过慢如何解决:可以使用HUE打开IMPALA/PRESTO查询接口,使用新引擎接口可以更快查询

4.运营报表维度太多,每次HIVE计算过慢,IMPALA有内存限制:可以采用预计算机制,提前计算中间表,更好的方案是SparkSQL, 3.22版本支持RelationalCache,除此之外还有阿里云DRUID,但更适用于通用报表统计,adhoc需求推荐使用SparkSQL实现

5.包月集群磁盘空间已满:善用OSS作为备份存储或者开启JINDOFS文件系统(强烈推荐)
使用OSS作为存储,请使用external建立外表,否则drop会删除OSS数据

总结
利用阿里云EMR生态定制化集群,实现数据仓库满足商业/运营的查询需求,并提供横向扩展提升性能的空间,结合多样服务达到数据交互查询及统一数据源下的最佳成本控制。

欢迎对EMR及相关技术感兴趣的同学进钉钉群一起讨论 :)

image

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
目录
打赏
0
0
0
0
1336
分享
相关文章
阿里云 EMR Serverless Spark 在微财机器学习场景下的应用
面对机器学习场景下的训练瓶颈,微财选择基于阿里云 EMR Serverless Spark 建立数据平台。通过 EMR Serverless Spark,微财突破了单机训练使用的数据规模瓶颈,大幅提升了训练效率,解决了存算分离架构下 Shuffle 稳定性和性能困扰,为智能风控等业务提供了强有力的技术支撑。
176 15
美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台
美的楼宇科技基于阿里云 EMR Serverless Spark 建设 IoT 数据平台,实现了数据与 AI 技术的有效融合,解决了美的楼宇科技设备数据量庞大且持续增长、数据半结构化、数据价值缺乏深度挖掘的痛点问题。并结合 EMR Serverless StarRocks 搭建了 Lakehouse 平台,最终实现不同场景下整体性能提升50%以上,同时综合成本下降30%。
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
阿里云 EMR 发布托管弹性伸缩功能,支持自动调整集群大小,最高降本60%
阿里云开源大数据平台 E-MapReduce 重磅推出托管弹性伸缩功能,基于 EMR 托管弹性伸缩功能,您可以指定集群的最小和最大计算限制,EMR 会持续对与集群上运行的工作负载相关的关键指标进行采样,自动调整集群大小,以获得最佳性能和资源利用率。
176 15
阿里云EMR StarRocks X Paimon创建 Streaming Lakehouse
本文介绍了阿里云EMR StarRocks在数据湖分析领域的应用,涵盖StarRocks的数据湖能力、如何构建基于Paimon的实时湖仓、StarRocks与Paimon的最新进展及未来规划。文章强调了StarRocks在极速统一、简单易用方面的优势,以及在数据湖分析加速、湖仓分层建模、冷热融合及全链路ETL等场景的应用。
421 8
阿里云EMR StarRocks X Paimon创建 Streaming Lakehouse
|
6月前
|
降本60% ,阿里云 EMR StarRocks 全新发布存算分离版本
阿里云 EMR Serverless StarRocks 现已推出全新存算分离版本,该版本不仅基于开源 StarRocks 进行了全面优化,实现了存储与计算解耦架构,还在性能、弹性伸缩以及多计算组隔离能力方面取得了显著进展。
585 6
|
6月前
|
阿里云EMR StarRocks X Paimon创建 Streaming Lakehouse
讲师焦明烨介绍了StarRocks的数据湖能力,如何使用阿里云EMR StarRocks构建基于Paimon的极速实时湖仓,StarRocks与Paimon的最新进展及未来规划。
226 3
阿里云 EMR Serverless Spark 版正式开启商业化
阿里云 EMR Serverless Spark 版正式开启商业化,内置 Fusion Engine,100% 兼容开源 Spark 编程接口,相比于开源 Spark 性能提升300%;提供 Notebook 及 SQL 开发、调试、发布、调度、监控诊断等一站式数据开发体验!
273 3
阿里云 EMR Serverless Spark 版正式开启商业化
|
7月前
|
阿里云 EMR StarRocks 在七猫的应用和实践
本文整理自七猫资深大数据架构师蒋乾老师在 《阿里云 x StarRocks:极速湖仓第二季—上海站》的分享。
464 2