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

简介: 利用阿里云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 &

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;
    }
}

重启或者重载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

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/'

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

相关实践学习
数据湖构建DLF快速入门
本教程通过使⽤数据湖构建DLF产品对于淘宝用户行为样例数据的分析,介绍数据湖构建DLF产品的数据发现和数据探索功能。
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
1月前
|
安全 API 持续交付
要利用阿里云控制API查询您的阿里云资源
【2月更文挑战第33天】要利用阿里云控制API查询您的阿里云资源
100 3
|
13天前
|
存储 SQL BI
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
|
22天前
|
SQL 分布式计算 监控
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
本文演示了使用 EMR Serverless Spark 产品搭建一个日志分析应用的全流程,包括数据开发和生产调度以及交互式查询等场景。
56382 2
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
|
22天前
|
运维 数据挖掘 Serverless
阿里云Elasticsearch Serverless助力某电商平台公司实现商品订单数据的实时写入查询
某电商平台公司采用阿里云Elasticsearch Serverless解决方案,实现商品、订单和其他关键信息的写入和查询的实时响应。
194 1
|
23天前
|
存储 SQL 数据可视化
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
EMR StarRocks 线上公开课第1期 ,直播主题:EMR Serverless StarRocks3.x,极速统一的湖仓新范式。
891 1
|
27天前
|
SQL 关系型数据库 Java
实时计算 Flink版操作报错之在阿里云DataHub平台上执行SQL查询GitHub新增star仓库Top 3时不显示结果,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
28天前
|
存储 分布式计算 Serverless
阿里云 EMR Serverless Spark 版开启免费公测
EMR Serverless Spark 版免费公测已开启,预计于2024年06月25日结束。公测阶段面向所有用户开放,您可以免费试用。
529 4
|
1月前
|
存储 缓存 安全
阿里云EMR数据湖文件系统: 面向开源和云打造下一代 HDFS
本文作者详细地介绍了阿里云EMR数据湖文件系统JindoFS的起源、发展迭代以及性能。
72325 78
|
1月前
|
存储 监控 Apache
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
网易的灵犀办公和云信利用 Apache Doris 改进了大规模日志和时序数据处理,取代了 Elasticsearch 和 InfluxDB。Doris 实现了更低的服务器资源消耗和更高的查询性能,相比 Elasticsearch,查询速度提升至少 11 倍,存储资源节省达 70%。Doris 的列式存储、高压缩比和倒排索引等功能,优化了日志和时序数据的存储与分析,降低了存储成本并提高了查询效率。在灵犀办公和云信的实际应用中,Doris 显示出显著的性能优势,成功应对了数据增长带来的挑战。
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
|
1月前
|
分布式计算 运维 大数据
阿里云 EMR Serverless Spark 版免费邀测中
阿里云 EMR Serverless Spark 版,以 Spark Native Engine 为基础,旨在提供一个全托管、一站式的数据开发平台。诚邀您参与 EMR Serverless Spark 版免费测试,体验 100% 兼容 Spark 的 Serverless 服务:https://survey.aliyun.com/apps/zhiliao/iscizrF54
857 0
阿里云 EMR Serverless Spark 版免费邀测中