#数据技术选型#即席查询Shib+Presto,集群任务调度HUE+Oozie

郑昀 创建于2014/10/30 最后更新于2014/10/31

一)选型:Shib+Presto

应用场景:即席查询(Ad-hoc Query)

1.1.即席查询的目标

使用者是产品/运营/销售运营的数据分析师;

要求数据分析师掌握查询SQL查询脚本编写技巧,掌握不同业务的数据存储在不同的数据集市里;

不管他们的计算任务是提交给 数据库 还是 Hadoop,计算时间都可能会很长,不可能在线等待;

所以,

使用者提交了一个计算任务(PIG/SQL/Hive SQL),控制台告知任务已排队,给出大致的计算时间等友情提示, 这些作业的权重较低,

使用者和管理员可以查看排队中的计算任务,包括已执行任务的执行时间、运行时长和运行结果;

当计算任务有结果后,控制台界面有通知提示,或者发邮件提示,使用者可以在线查看和下载数据。

1.2.即席查询的当下技术选型

图形交互界面:Shib;

数据查询引擎:Facebook Presto。

1.3.为什么要更换数据查询引擎?

基于 MapReduce 的 Hadoop 适合数据批处理,但不适合即席查询场景。基于 InnoDB/MyISAM 存储引擎的 MySQL 自然也不适合。当然我们也观察过 InfiniDB/InfoBright 这种列式存储数据库引擎(仍基于MySQL),它们更适合基本不再变更的历史归档数据,所以不太适合电商应用场景。

我们的鹰眼(Tracing)项目就曾折翼在即时查询上,后端的 HBase 扛不住在大数据量下的实时插入和查询。

『Hive 更适合于长时间的批处理查询分析,Impala、Shark、Stinger和Presto 适用于实时交互式SQL查询,它们给数据分析师提供了快速实验、验证想法的大数据分析工具。所以可以先使用 Hive 进行数据转换处理,之后使用这四个系统中的一个在 Hive 处理后的结果数据集上进行快速的数据分析。

Impala、Shark、Stinger和Presto四个系统都是类SQL实时大数据查询分析引擎,但是它们的技术侧重点完全不同。而且它们也不是为了替换Hive而生,Hive在做数据仓库时是非常有价值的。这四个系统与Hive都是构建在Hadoop之上的数据查询工具,各有不同的侧重适应 面,但从客户端使用来看它们与Hive有很多的共同之处,如数据表元数据、Thrift接口、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。』——《开源大数据查询分析引擎现状,2014》

最终我们选择了 Presto。

FaceBook于2013年11月份开源了Presto,一个分布式SQL查询引擎,它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。Presto设计了一个简单的数据存储的抽象层,来满足在不同数据存储系统(包括HBase、HDFS、Scribe等)之上都可以使用SQL进行查询。

Presto 简化的架构如下图1所示,客户端将 SQL 查询发送到 Presto 的协调器。协调器会进行语法检查、分析和规划查询计划。调度器将执行的管道组合在一起,将任务分配给那些离数据最近的节点,然后监控执行过程。客户端从输出段中将数据取出,这些数据是从更底层的处理段中依次取出的。

Presto 的运行模型与 Hive 有着本质的区别。Hive 将查询翻译成多阶段的 Map-Reduce 任务,一个接着一个地运行。 每一个任务从磁盘上读取输入数据并且将中间结果输出到磁盘上。然而 Presto 引擎没有使用 Map-Reduce。它使用了一个定制的查询执行引擎和响应操作符来支持SQL的语法。除了改进的调度算法之外,所有的数据处理都是在内存中进行的。不同的处理端通过网络组成处理的流水线。这样会避免不必要的磁盘读写和额外的延迟。这种流水线式的执行模型会在同一时间运行多个数据处理段,一旦数据可用的时候就会将数据从一个处理段传入到下一个处理段。

这样的方式会大大的减少各种查询的端到端响应时间。

同时,Presto 设计了一个简单的数据存储抽象层,来满足在不同数据存储系统之上都可以使用 SQL 进行查询。存储连接器目前支持除 Hive/HDFS 外,还支持 HBase、Scribe 和定制开发的系统。

图1. Presto架构

1.4.在HUE和Shib之间选择了后者

HUE 大家可能都听说过。Shib 相对陌生一些,它是这么介绍自己的:WebUI for query engines: Hive and Presto。

潘高锋介绍了二者的优缺点。

HUE

开发语言:Python

优点:Hue 是一个能够与 Apache Hadoop 交互的 Web 应用程序。一个开源的 Apache Hadoop UI。我们已经在生产环境使用Hue了,而且Hue在管理Hbase/Pig/Hive方面有很大的优势,它还附带了一个Oozie的应用程序,用于创建和监控工作流程 。

缺点:Hue 是一个比较重的工具,改动起来涉及的东西会比较多,而且以后每次升级都可能会导致我们改动的功能要再修改 。

Shib

开发语言:Nodejs

优点:Shib 通过简单的配置就可以直接操作 hive 和 presto。代码量比较小,修改起来工作量少很多 。

缺点:对 Nodejs 不熟悉,有学习成本 。

最后我们选定了代码量和开发量相对较少的 Shib 。

1.5.即席查询的界面展示

登录 shib 后,选择数据仓库 presto-wowo_dw。编写 sql 的时候,可以把表结构的提示框移到一边,边写边参照,如下图所示。

图2 边查询边看数据结构

由于所有的查询都是异步的,所以可以在“我的查询”列表中看到自己的查询语句的执行状态和执行结果,这样不用自己在一直在查询界面等待了,如下图所示。

图3 我的查询

还可以把自己常用的查询语句保存到“书签”里,这是一个很实用的功能。

接下来就可以开发SQL查询结果站内通知机制以及更复杂的用户访问权限控制机制了。

二)选型:HUE+Oozie

应用场景:Hadoop集群计算任务调度和管理平台。

2.1.数据平台跑数据所面对的困难

电商数据平台的报表维度有很多种,有总体简报角度、运营角度、媒体投放角度等,也可以有商品、商户、用户、竞品等维度,还有日报、周报和月报之分。所以对应了很多个计算任务。每一个计算任务可以视为一个工作流,毕竟计算过程是很复杂的、一环套一环。那么 HUE+Oozie 就是可视化管理和调度这些工作流的。

没有 Oozie 之前是什么样?

一,计算脚本被配置为定时任务,跑飞了只能从海量日志中大海捞针,不知道断在哪儿,只能手动清数据从头再跑。任务计算时间特别长,不知道当前跑到哪一步了,还需要多久能跑完。

二,难以精确控制任务A跑完了才能跑任务B,只能在不同定时任务之间留足够长的时间间隔,缺乏弹性。

2.2.Oozie是什么

Oozie是一种 Java Web 应用程序,它运行在 Tomcat 中,并使用数据库来存储以下内容:工作流定义、当前运行的工作流实例(包括实例的状态和变量)。

我们最欣赏它的三点:

  • Oozie允许失败的工作流从任意点重新运行,这对于处理工作流中由于前一个耗时活动而出现瞬态错误的情况非常有用。
  • 工作流执行过程可视化。
  • 工作流的每一步的日志、错误信息都可以点击查看,并实时滚动,便于排查问题。

2.3.还是看截图吧

先选择HUE导航栏上的“Oozie Editor/Dashboard”,看到默认面板:

图5 oozie默认面板

点击某个工作流,进入详情页:

图6 工作流详情页

一个工作流的定义如下图7所示,XML格式的 hPDL。hPDL是一种很简洁的语言,只会使用少数流程控制和动作节点。控制节点会定义执行的流程,并包含工作流的起点和终点(start、end和fail节点)以及控制工作流执行路径的机制(decision、fork和join节点)。

图7 工作流定义

现在,数据平台的各种计算任务都迁移到 Oozie 中,按照 hPDL 语言格式一一重新定义。

三)总结一下数据中心的各种技术选型

罗列如下,不再解释:

Apache Hadoop/Hive/HBase

Apache Pig

Flume/Kafka/Storm/Sqoop/awk

Facebook Presto

MySQL

HUE/Shib

Oozie

-over-

时间: 2024-10-26 02:45:56

#数据技术选型#即席查询Shib+Presto,集群任务调度HUE+Oozie的相关文章

大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo

上篇小弟分享了几个"即席查询与分析"的典型案例,引起了不少共鸣,好多小伙伴迫不及待地追问我们:说好的"手把手教你搭建即席查询与分析Demo"啥时候能出?说到就得做到,差啥不能差人品,本篇只分享技术干货,目的只有一个,就是让每一个伙伴都能根据本篇向导搭建出一个"即席查询与分析Demo". 为了让各位伙伴能够尽快上手体验,所选案例就以上一篇中的"机动车缉查布控即席查询与分析"为例,上篇我们已经比较详尽的分析了用户需求,没好好听课的

中小企业的大数据技术路线选择(二)-Cassandra+Presto方案

中小企业的大数据技术路线选择(二)-Cassandra+Presto方案 我前面曾经写过:中小企业的大数据技术路线选择 和 低调.奢华.有内涵的敏捷式大数据方案:Flume+Cassandra+Presto+SpagoBI . 最近用了两个月的时间终于把Cassandra+Presto+SpagoBI方案验证通过了.验证了Presto的JDBC Driver .Prestogres网关.SHIB三种方式. 一.Presto JDBC驱动方案 Presto JDBC驱动方案,Java动用客户端,如

presto集群安装&整合hive|mysql|jdbc

Presto是一个运行在多台服务器上的分布式系统. 完整安装包括一个coordinator(调度节点)和多个worker. 由客户端提交查询,从Presto命令行CLI提交到coordinator. coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker中. 目录: 搭建前环境准备 集群计划 连接器 安装步骤 配置文件 运行presto 整合hive测试 整合mysql测试 整合jdbc测试 1.搭建前环境准备 CentOS 6.7 java8 Python3.4.4

如何在本地数据中心安装Service Fabric for Windows集群

概述 首先本文只是对官方文档(中文,英文)的一个提炼,详细的安装说明还请仔细阅读官方文档. 虽然Service Fabric的官方名称往往被加上Azure,但是实际上(估计很多人不知道)Service Fabric可以安装到本地数据中心或者任意公有云上,这不官方文档就有一章专门讲如何安装到AWS的内容. 所以现在为了区分,一般把在Azure上提供的开箱即用的PaaS称之为Azure Service Fabric,而把本地安装的称之为Service Fabric Standalone. 同时,Se

为社么要用分布式集群任务调度?

作为一个开发者,避免不了定时任务的问题,最粗暴和简单直接的解决方案就是crontab.当然在机器少,任务不多,定时任务之间关联少的情况下,crontab效率还是比较高和便捷的.但当机器越多.定时任务越多,各个任务联系越紧密的情况下,用crontab进行定时任务的管理配置,就会非常混乱,严重影响工作效率. 机器多.定时任务多的情况下,就会遇到以下问题:1.每个服务器各个用户下的crontab任务管理混乱,生命周期无法统一协调管理2.定时任务运行异常告警难以统一对接3.任务A和任务B如果存在互斥关系

流式大数据计算实践(2)----Hadoop集群和Zookeeper

一.前言 1.上一文搭建好了Hadoop单机模式,这一文继续搭建Hadoop集群 二.搭建Hadoop集群 1.根据上文的流程得到两台单机模式的机器,并保证两台单机模式正常启动,记得第二台机器core-site.xml内的fs.defaultFS参数值要改成本机的来启动,启动完毕后再改回来 2.清空数据,首先把运行单机模式后生成的数据全部清理掉 rm -rf /work/hadoop/nn/current rm -rf /work/hadoop/dn/current hdfs namenode

大数据学习之MapReduce基础与Yarn集群安装09

1大数据解决的问题? 海量数据的存储:hadoop->分布式文件系统HDFS 海量数据的计算:hadoop->分布式计算框架MapReduce 2什么是MapReduce? 分布式程序的编程框架,java->ssh ssm ,目的:简化开发! 是基于hadoop的数据分析应用的核心框架. mapreduce的功能:将用户编写的业务逻辑代码和自带默认组件整合成一个完整的 分布式运算程序,并发的运行在hadoop集群上. 3 MapReduce的优缺点 优点: (1)易于编程 (2)良好的拓

关于大数据领域各个组件打包部署到集群运行的总结(含手动和maven)(博主推荐)

对于这里的打包,总结: (1)     最简单的,也是为了适应公司里,还是要用maven,当然spark那边sbt,maven都可以.但是maven居多. Eclipse/MyEclipse下如何Maven管理多个Mapreduce程序?(企业级水平) IDEA里如何多种方式打jar包,然后上传到集群 Spark编程环境搭建(基于Intellij IDEA的Ultimate版本)(包含Java和Scala版的WordCount)(博主强烈推荐) (2)     将整个项目打jar包进去,只需指定

Bare Metal K8S集群在美国快餐连锁Chick-fil-A 的大规模使用

美国快餐连锁店Chick-fil-A在其2000多家餐厅的边缘计算中使用着Kubernetes,在规模上看,这意味着有大约6000台设备上同时运行着Kubernetes.其中与此相关的最大的一个挑战是:如何在餐厅的物理机上部署和管理这么多Kubernetes集群.本文由Chick-fil-A的技术团队所写,分享他们在Kubernetes集群管理技术选型.物理机上Kubernetes集群的安装和管理方面的经验. 大多数情况下,Kubernetes都在云中部署,或由熟练Kubernetes的技术人员