`

【赵强老师】大数据分析引擎:Presto

阅读更多

一、什么是Presto?

 

  • 背景知识:Hive的缺点和Presto的背景

Hive使用MapReduce作为底层计算框架,是专为批处理设计的。但随着数据越来越多,使用Hive进行一个简单的数据查询可能要花费几分到几小时。Presto是一个分布式SQL查询引擎,它被设计为用来专门进行高速、实时的数据分析。它支持标准的SQL,包括复杂查询、聚合、连接和窗口函数。这其中有两点就值得探究,首先是架构,其次自然是怎么做到低延迟来支持及时交互。

 

  • PRESTO是什么?

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。

  • 它可以做什么?

Presto支持在线数据查询,包括Hive, Cassandra, 关系数据库以及专有数据存储。 一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。Presto以分析师的需求作为目标,他们期望响应时间小于1秒到几分钟。 Presto终结了数据分析的两难选择,要么使用速度快的昂贵的商业方案,要么使用消耗大量硬件的慢速的“免费”方案。

  • 谁在使用它?

Facebook使用Presto进行交互式查询,用于多个内部数据存储,包括300PB的数据仓库。 每天有1000多名Facebook员工使用Presto,执行查询次数超过30000次,扫描数据总量超过1PB。领先的互联网公司包括Airbnb和Dropbox都在使用Presto。

 

二、Presto的体系架构

 

Presto是一个运行在多台服务器上的分布式系统。 完整安装包括一个coordinator和多个worker。 由客户端提交查询,从Presto命令行CLI提交到coordinator。 coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker。

 

Presto查询引擎是一个Master-Slave的架构,由一个Coordinator节点,一个Discovery Server节点,多个Worker节点组成,Discovery Server通常内嵌于Coordinator节点中。Coordinator负责解析SQL语句,生成执行计划,分发执行任务给Worker节点执行。Worker节点负责实际执行查询任务。Worker节点启动后向Discovery Server服务注册,Coordinator从Discovery Server获得可以正常工作的Worker节点。如果配置了Hive Connector,需要配置一个Hive MetaStore服务为Presto提供Hive元信息,Worker节点与HDFS交互读取数据。

 

三、安装Presto Server

  • 安装介质
presto-cli-0.217-executable.jar
presto-server-0.217.tar.gz

 

  • 安装配置Presto Server
1、解压安装包
tar -zxvf presto-server-0.217.tar.gz -C ~/training/

2、创建etc目录
cd ~/training/presto-server-0.217/
mkdir etc

3、需要在etc目录下包含以下配置文件
Node Properties: 节点的配置信息
JVM Config: 命令行工具的JVM配置参数
Config Properties: Presto Server的配置参数
Catalog Properties: 数据源(Connectors)的配置参数
Log Properties:日志参数配置

 

  •  编辑node.properties
#集群名称。所有在同一个集群中的Presto节点必须拥有相同的集群名称。
node.environment=production
  
#每个Presto节点的唯一标示。每个节点的node.id都必须是唯一的。在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id。
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
  
# 数据存储目录的位置(操作系统上的路径)。Presto将会把日期和数据存储在这个目录下。
node.data-dir=/root/training/presto-server-0.217/data

 

  • 编辑jvm.config

由于OutOfMemoryError将会导致JVM处于不一致状态,所以遇到这种错误的时候我们一般的处理措施就是收集dump headp中的信息(用于debugging),然后强制终止进程。Presto会将查询编译成字节码文件,因此Presto会生成很多class,因此我们我们应该增大Perm区的大小(在Perm中主要存储class)并且要允许Jvm class unloading。

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

 

  • 编辑config.properties

    coordinator的配置

 

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://192.168.157.226:8080

     workers的配置

 

coordinator=false
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://192.168.157.226:8080

     如果我们想在单机上进行测试,同时配置coordinator和worker,请使用下面的配置:

 

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://192.168.157.226:8080

     参数说明:

 

  • 编辑log.properties

    配置日志级别。

 

com.facebook.presto=INFO 

 

  • 配置Catalog Properties

Presto通过connectors访问数据。这些connectors挂载在catalogs上。 connector可以提供一个catalog中所有的schema和表。例如:Hive connector 将每个hive的database都映射成为一个schema,所以如果hive connector挂载到了名为hive的catalog, 并且在hive的web有一张名为clicks的表, 那么在Presto中可以通过hive.web.clicks来访问这张表。通过在etc/catalog目录下创建catalog属性文件来完成catalogs的注册。 如果要创建hive数据源的连接器,可以创建一个etc/catalog/hive.properties文件,文件中的内容如下,完成在hivecatalog上挂载一个hiveconnector。

 

#注明hadoop的版本
connector.name=hive-hadoop2
  
#hive-site中配置的地址
hive.metastore.uri=thrift://192.168.157.226:9083
  
#hadoop的配置文件路径
hive.config.resources=/root/training/hadoop-2.7.3/etc/hadoop/core-site.xml,/root/training/hadoop-2.7.3/etc/hadoop/hdfs-site.xml

  注意:要访问Hive的话,需要将Hive的MetaStore启动:hive --service metastore

四、启动Presto Server

 

./launcher start 

 

五、运行presto-cli

  • 下载:presto-cli-0.217-executable.jar
  • 重命名jar包,并增加执行权限
cp presto-cli-0.217-executable.jar presto
chmod a+x presto 

 

  • 连接Presto Server
./presto --server localhost:8080 --catalog hive --schema default 

 

六、使用Presto

  • 使用Presto操作Hive

  • 使用Presto的Web Console:端口:8080



  • 使用JDBC操作Presto

    1、需要包含的Maven依赖

 

<dependency>
    <groupId>com.facebook.presto</groupId>
    <artifactId>presto-jdbc</artifactId>
    <version>0.217</version>
</dependency>

     2、JDBC代码

 


==================================================

 

 

分享到:
评论

相关推荐

    传智播客 赵强 Oracle课件

    赵强老师在传智播客的Oracle课程是专为IT专业人士和对数据库技术感兴趣的学员设计的一系列教学资料,旨在深入浅出地讲解Oracle的核心概念、功能以及实际操作技巧。 在赵强老师的课程中,你可以学到以下几个重要的...

    赵强老师的Oracle课件

    想要好好地学习Oracle数据库的朋友呀,你错过了她就太不值得了。里面有好多的Oracle操作命令可能你都没接触过吧。好了,话不多多说。坚信资料不错!你,值得拥有!OK.还有,之所有要你2分打赏,是我给了你这么好的...

    精通JSP编程 作者赵强

    3. **第6章** - 可能是关于JSP表达式语言(EL)和统一建模语言(JSTL)的内容,这两个工具极大地简化了JSP页面中的数据访问和控制流程。EL用于简化表达式,而JSTL提供了标准标签库,如fmt、sql、fn等,用于日期格式...

    精通JSP编程 作者赵强 编

    精通JSP编程 作者赵强 编 12-18节

    [1120][赵强精通JSP编程][37M]

    根据提供的文件信息,我们可以推断出这是一份与Java Server Pages (JSP)相关的学习资料介绍,特别是关于赵强编写的《精通JSP编程》这本书的相关信息。下面将基于这个理解来生成相关知识点。 ### 一、JSP基础概念 ...

    Oracle学习笔记(传智播客 赵强)

    这样可以减少不必要的数据传输,提高查询速度。 2. **AND和OR操作符的使用策略**:在条件组合中,应将更可能为假的条件放在`AND`操作符的右侧,将更可能为真的条件放在`OR`操作符的右侧。这是因为SQL通常从右向左...

    Oracle数据库赵强视频教程【3天】

    教程名称:Oracle 数据库赵强视频教程【3天】教程目录:【】Oracle安装与管理、SQL语句(赵强)【】Orcale存储过程jdbc与Orcale大文本操作等(赵强)【】SQL简单查询触发器视图(赵强)  资源太大,传百度网盘了,链接在...

    10天掌握MongoDB

    综上所述,MongoDB作为一种现代的NoSQL数据库系统,其强大的功能和灵活的数据模型使其成为处理大规模、高并发数据场景的首选数据库之一。通过熟悉上述知识点,开发者能够更加高效地运用MongoDB进行应用程序开发,...

    LoadRunner性能测试巧匠训练营-完整版(带目录)-赵强邹伟伟

    《LoadRunner性能测试巧匠训练营》是一本深入讲解LoadRunner性能测试的教材,由赵强和邹伟伟两位专家共同编著。该资源提供的是完整版,且无需密码即可解压阅读,对于想要学习和提升LoadRunner性能测试技能的人来说,...

    day2013-0110-webLogic配置和集群(赵强).zip

    2. JDBC数据源:配置和管理JDBC数据源,连接到数据库,提供统一的访问接口,支持数据源的连接池和事务管理。 3. SSL安全配置:为了保障通信安全,可以配置WebLogic支持SSL(Secure Sockets Layer),加密传输数据,...

    游戏运营策划手册.pdf

    6. **数据分析**:利用大数据工具对用户行为进行深度分析,如用户活跃度、付费率、ARPU(平均每用户收入)、LTV(生命周期总价值)等指标,以评估运营效果并指导决策。 7. **社区建设**:建立和维护玩家社区,鼓励...

    从零开始oracle

    - **数据分析工具**:用于深入分析数据仓库中的数据。 ##### 1.4.3 智能管理 Oracle9i提供了先进的管理工具和技术,使得DBA可以更加高效地监控和维护数据库系统。 ##### 1.4.4 分布式 Oracle9i支持跨多个地理...

    信息存储技术的发展赵强.doc

    从古代的岩画到现代的云存储,存储技术的进步极大地丰富了我们的信息获取途径,提升了数据处理和传输的效率,同时也对数据安全、隐私保护提出了更高的要求。随着技术的不断演进,未来的存储技术将会更加智能、高效,...

    赵强_微信购物首页改版用户调研1

    报告通过定性和定量研究方法,包括一对一深访和问卷调查,收集了大量数据,旨在理解用户需求并优化用户体验。 首先,报告指出在主要的电商平台中,微信购物和京东APP的用户主要动机是寻找推荐商品和优惠信息,而无...

    精品资料(2021-2022年收藏)迅速提升品牌和销量的营销马步功0409赵强..doc

    4. 实战营销三大方阵: - 第一方阵:战略规划,包括竞争性定位、创造独特地位、满足需求以获取竞争优势,并通过分析消费者、竞争对手和企业内部因素制定战略。 - 消费者分析:了解“谁”、“为什么”、“什么”、...

    java代码-46 赖赵强

    【标题】"java代码-46 赖赵强" 暗示这是一份与Java编程相关的代码示例,可能由一位名为赖赵强的开发者编写或分享。这个标题可能指的是第46个编程练习、问题解决方案或者是某个功能模块的实现。在Java开发中,代码...

    oracle讲义

    Oracle数据库管理系统是全球广泛使用的大型关系型数据库系统之一,它为各类企业和组织提供高效的数据存储和管理解决方案。本文将深入探讨"Oracle讲义"中涉及的关键知识点,包括Oracle的体系结构、文件管理、光标、...

Global site tag (gtag.js) - Google Analytics