presto集群安装

presto集群安装 整合hive

张映 发表于 2019-11-07

分类目录: hadoop/spark/scala

标签:hive, presto

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

Presto通过使用分布式查询,可以快速高效的完成海量数据的查询。作为Hive和Pig的替代者,Presto不仅能访问HDFS,也能访问不同的数据源,包括:RDBMS和其他数据源(如Cassandra)。虽然Presto可以解析SQL,但它不是一个标准的数据库。不是MySQL、PostgreSQL或者Oracle的代替品,也不能用来处理在线事务(OLTP)

 

一,presto与hive对比

优点

1.Presto与hive对比,都能够处理PB级别的海量数据分析,但Presto是基于内存运算,减少没必要的硬盘IO,所以更快。
2.能够连接多个数据源,跨数据源连表查,如从hive查询大量网站访问记录,然后从mysql中匹配出设备信息。
3.部署也比hive简单,因为hive是基于HDFS的,需要先部署HDFS。

缺点

1.虽然能够处理PB级别的海量数据分析,但不是代表Presto把PB级别都放在内存中计算的。而是根据场景,如count,avg等聚合运算,是边读数据边计算,再清内存,再读数据再计算,这种耗的内存并不高。但是连表查,就可能产生大量的临时数据,因此速度会变慢,反而hive此时会更擅长。
2.为了达到实时查询,可能会想到用它直连MySql来操作查询,这效率并不会提升,瓶颈依然在MySql,此时还引入网络瓶颈,所以会比原本直接操作数据库要慢。

二,集群服务器说明

bigserver1(10.0.40.237):调度节点(coordinator)

bigserver2(10.0.40.222):worker节点

bigserver3(10.0.40.193):worker节点

Coordinator服务器是用来解析语句,执行计划分析和管理Presto的worker结点。Presto安装必须有一个Coordinator和多个worker。如果用于开发环境和测试,则一个Presto实例可以同时担任这两个角色。
Coordinator跟踪每个work的活动情况并协调查询语句的执行。 Coordinator为每个查询建立模型,模型包含多个stage,每个stage再转为task分发到不同的worker上执行。

Worker是负责执行任务和处理数据。Worker从connector获取数据。Worker之间会交换中间数据。Coordinator是负责从Worker获取结果并返回最终结果给client。
当Worker启动时,会广播自己去发现 Coordinator,并告知 Coordinator它是可用,随时可以接受task。

Coordinator与Worker通信是通过REST API。

三,下载presto

查看复制打印?

  1. # wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.227/presto-server-0.227.tar.gz  
  2. # tar zxvf presto-server-0.227.tar.gz  
  3. # mv presto-server-0.227 /bigdata  

四,调度节点presto配置

1,配置目录介绍

查看复制打印?

  1. [root@bigserver1 presto-server-0.227]# mkdir etc //创建配置目录  
  2. [root@bigserver1 etc]# tree  
  3. .  
  4. ├── catalog  
  5. │   ├── hive.properties  //连接hive  
  6. │   └── jmx.properties   //连接jmx  
  7. ├── config.properties    //Presto server的配置信息  
  8. ├── jvm.config           //JVM的命令行选项  
  9. ├── log.properties       //日志配置信息  
  10. └── node.properties      //每个节点的环境配置信息  

2,调度节点node.properties

查看复制打印?

  1. [root@bigserver1 etc]# mkdir /bigdata/presto-server-0.227/data  
  2. [root@bigserver1 etc]# cat node.properties  
  3. node.environment=production  
  4. node.id=coordinator1  
  5. node.data-dir=/bigdata/presto-server-0.227/data  

node.environment: 环境名字,Presto集群中的结点的环境名字都必须是一样的。
node.id: 唯一标识,每个结点的标识都必须是为一的。就算重启或升级Presto都必须还保持原来的标识。
node.data-dir: 数据目录,Presto用它来保存log和其他数据。

3,调度节点jvm.config

  1. [root@bigserver1 etc]# cat jvm.config  
  2. -server  
  3. -Xmx16G  
  4. -XX:+UseG1GC  
  5. -XX:G1HeapRegionSize=32M  
  6. -XX:+UseGCOverheadLimit  
  7. -XX:+ExplicitGCInvokesConcurrent  
  8. -XX:+HeapDumpOnOutOfMemoryError  
  9. -XX:+ExitOnOutOfMemoryError  
  10. -XX:OnOutOfMemoryError=kill -9 %p  
  11. -XX:ReservedCodeCacheSize=150M  

这份配置文件的格式是:一系列的选项,每行配置一个单独的选项。由于这些选项不在shell命令中使用。 因此即使将每个选项通过空格或者其他的分隔符分开,java程序也不会将这些选项分开,而是作为一个命令行选项处理

4,调度节点config.properties

查看复制打印?

  1. [root@bigserver1 etc]# cat config.properties  
  2. coordinator=true  
  3. node-scheduler.include-coordinator=false  
  4. http-server.http.port=38080  
  5. query.max-memory=3GB  
  6. query.max-memory-per-node=1GB  
  7. query.max-total-memory-per-node=2GB  
  8. discovery-server.enabled=true  
  9. discovery.uri=http://bigserver1:38080  

coordinator: 是否运行该实例为coordinator(接受client的查询和管理查询执行)。
node-scheduler.include-coordinator:coordinator是否也作为work。对于大型集群来说,在coordinator里做worker的工作会影响查询性能。
http-server.http.port:指定HTTP端口。Presto使用HTTP来与外部和内部进行交流。
query.max-memory: 查询能用到的最大总内存
query.max-memory-per-node: 查询能用到的最大单结点内存
query.max-total-memory-per-node:查询执行过程中,用户和系统所使用的最大内存,系统使用的内存包括,读,写,网络缓存
discovery-server.enabled: Presto使用Discovery服务去找到集群中的所有结点。每个Presto实例在启动时都会在Discovery服务里注册。这样可以简化部署,不需要额外的服务,Presto的coordinator内置一个Discovery服务。也是使用HTTP端口。
discovery.uri: Discovery服务的URI。将example.net:8080替换为coordinator的host和端口。这个URI不能以斜杠结尾,这个错误需特别注意,不然会报404错误。
query.max-memory-per-node必须小于query.max-total-memory-per-node,query.max-total-memory-per-node 与memory.heap-headroom-per-node 之和必须小于 jvm max memory .也就是jvm.config 中配置的-Xmx

5,调度节点log.properties

  1. [root@bigserver1 etc]# cat log.properties  
  2. com.facebook.presto=INFO  

日志等级有四个,DEBUG,INFO,WARN,ERROR

6,调度节点jmx.properties

  1. [root@bigserver1 etc]# cat catalog/jmx.properties  
  2. connector.name=jmx  

7,调度节点hive.properties

查看复制打印?

  1. [root@bigserver1 etc]# cat catalog/hive.properties  
  2. connector.name=hive-hadoop2  
  3. hive.metastore.uri=thrift://bigserver1:9083  
  4. hive.config.resources=/bigdata/hadoop/etc/hadoop/core-site.xml,/bigdata/hadoop/etc/hadoop/hdfs-site.xml  
  5. hive.allow-drop-table=true  

6和7的connector.name不是乱写的,不然就会报java.lang.IllegalArgumentException: No factory for connector

8,将调度节点presto复制到worker节点

  1. # scp -r presto-server-0.227 root@bigserver2:/bigdata  
  2. # scp -r presto-server-0.227 root@bigserver3:/bigdata  

五,worker节点presto配置

大部分的配置根调度节点一样,下面只例举出不同的部分

1,worker节点config.properties

查看复制打印?

  1. [root@bigserver2 etc]# cat config.properties  
  2. coordinator=false  
  3. http-server.http.port=38080  
  4. query.max-memory=3GB  
  5. query.max-memory-per-node=1GB  
  6. discovery.uri=http://bigserver1:38080  

2,worker节点node.properties

  1. [root@bigserver2 etc]# cat node.properties  
  2. node.environment=production  
  3. node.id=worker1  
  4. node.data-dir=/bigdata/presto-server-0.227/data  

每个presto节点的node.id都是不一样的,这一点要注意

六,设置环境变量,并启动

1,设置环境变量

查看复制打印?

  1. # echo "export PRESTO_HOME=/bigdata/presto-server-0.227" >> ~/.bashrc  
  2. # echo "export PATH=$PRESTO_HOME/bin:$PATH" >> ~/.bashrc  
  3. # source ~/.bashrc  

2,每个presto节点都要启动

查看复制打印?

  1. # launcher start //启动  
  2. # laucher status //查看状态  
  3. # laucher stop //停止  
  4.   
  5. # jps  
  6. 6065 DFSZKFailoverController  
  7. 5268 QuorumPeerMain  
  8. 17300 HMaster  
  9. 26484 PrestoServer //每个presto节点都有  
  10. 4869 JournalNode  
  11. 5302 Kafka  
  12. 5126 Jps  
  13. 4652 NameNode  
  14. 5150 ResourceManager  

启动后,web监控就要以看到了

七,Presto命令行工具

查看复制打印?

  1. # cd $PRESTO_HOME/bin  
  2. # wget -O presto  https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.227/presto-cli-0.227-executable.jar  
  3.   
  4. # nohup hive --service metastore 2>&1 >> /var/log.log &  //想要查询连接到hive中查询数据还需要先启动hive的metastore  
  5.   
  6. [root@bigserver1 etc]# presto --server bigserver1:38080 --catalog hive --schema default --debug  
  7. presto:default> show tables;  
  8.  Table  
  9. -------  
  10. (0 rows)  
  11.   
  12. Query 20191107_073229_00007_zn7nx, FINISHED, 3 nodes  
  13.   
  14. http://bigserver1:38080/ui/query.html?20191107_073229_00007_zn7nx  
  15.   
  16. Splits: 36 total, 19 done (52.78%)  
  17. CPU Time: 0.0s total,     0 rows/s,     0B/s, 15% active  
  18. Per Node: 0.0 parallelism,     0 rows/s,     0B/s  
  19. Parallelism: 0.0  
  20. Peak Memory: 0B  
  21. 0:01 [0 rows, 0B] [0 rows/s, 0B/s]  
  22.   
  23. presto:default> use tanktest;  
  24. USE  

--server连接presto调度节点

--catalog连接的数据源

--schema可以理解成数据库

八,presto与hive简单对比

从测试的结果来看,presto比hive要快4-5倍,个人觉得内存够的话,能达到8-10倍,上面的presto集群,是在测试环境,机器是退休的办公用公式机

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wps 复制流程图_简单三步,用WPS轻松完成一个又大气又好看的流程图!

流程图是工作中经常需要用到的图形,使用 WPS 可以方便地创建流程图。创建的流程图保存在云文档后,可以随时插入 WPS 的其他组件。新建流程图文件流程图可以从 WPS 的其他组件中创建,如 WPS 文字、WPS 表格等,也可以单独创建。流程…

Tez 0.9安装部署+hive on tez配置 + Tez-UI

Tez说明 将xyz替换为您正在使用的tez发行版号。例如0.5.0。对于Tez版本0.8.3和更高版本,Tez需要Apache Hadoop版本为2.6.0或更高版本。对于Tez版本0.9.0及更高版本,Tez需要Apache Hadoop版本为2.7.0或更高版本。 关于版本 1.Hadoop 2.7.0(我…

启动成功浏览器显示不了_移动端利用chrome浏览器在PC端进行调试方法

由于最近工作中遇到需要在电脑上调试手机端的功能和样式,之前也没有遇到过,所以就各种百度和试验。最后终于功夫不负有心人,成功了。(那一刻心情真滴很鸡冻啊~~~~~~~~~)。所以暂时记录下来。以免鸡冻过度再给忘记了。好,接下来就是…

在maven本地仓库导入jar包

# Dfile jar包所在位置 DgroupId 指定groupId DartifactId 指定artifactId Dversion 指定版本 mvn install:install-file -DfileC:\Users\zlf\Desktop\mybatis-main\target\mybatis.jar -DgroupId"cn.bugstack.middleware" -DartifactIdmybatis -Dversion"1.0.…

Flink完全分布式集群安装

Flink支持完全分布式模式,这时它由一个master节点和多个worker节点构成。在本节,我们将搭建一个如下的三个节点的Flink集群。 一、Flink集群安装、配置和运行 Flink完全分布式集群搭建步骤如下: 1、配置从master到worker节点的SSH无密登录&…

一个4体低位交叉的存储器_前交叉韧带术后关节粘连的康复策略

ACL术后粘连的康复现状在国外,前交叉韧带ACL重建术后关节粘连的发生率为1%。在国内,由于多数医院在行前交叉韧带重建术后,对患者缺少及时、系统、科学的康复治疗,大部分患者由此易发生关节粘连,而往往关节粘连造成的功…

Maven多模块打包

在类似如下的场景中进行打包 lottery-rpc 将出现报错&#xff0c;原因是没办法将 lottery-common 一起打包进去。 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://…

hadoop 2.6.5 + hive 集群搭建

Hadoop 搭建&#xff1a;https://blog.csdn.net/sinat_28371057/article/details/109135056 hive 搭建 1. 系统环境 centos 7.3 Hadoop 2.7.3 jdk 1.8 MySQL安装在master机器上&#xff0c;hive服务器也安装在master上 hive版本: https://mirrors.cnnic.cn/apache/hive/hive…

光耦和开关频率

为什么80%的码农都做不了架构师&#xff1f;>>> TLP250&#xff0c;HCPL3120都可以 直接驱动小型IGBT&#xff0c;不需要加推挽管 6N137&#xff0c;没有推挽&#xff0c;OC上拉&#xff0c;到最后可能驱动速度还上不去 我们6N137&#xff0c;是用来驱动IPM的 电压…

配置babel_Babel 7 下配置 TypeScript 支持

本文将展示&#xff0c;如何使用 babel/preset-typescript 和 babel/preset-env 配置一个最小但完整的编译环境&#xff0c;打包工具使用 webpack4.41.2插件集 preset-typescriptpreset-typescript 是 Babel 提供的预设插件集之一&#xff0c;Babel 官方对其有一篇简短的介绍&a…

jQuery 计时器(jquery timers)简单应用

jquery timers 代码&#xff08;版本1.2&#xff09;&#xff1a; jquery timers /** * jQuery.timers - Timer abstractions for jQuery * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com) * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/). …

服务器改用ssh文件登录

首先在服务器生成密钥 ssh-keygen -t rsa -b 4096 将 id_rsa.pub的内容导入到 authorized_keys文件中&#xff0c;这样远程登录时用id_rsa文件登录会与authorized_keys中的文件进行验证。 cat id_rsa.pub >> authorized_keys 关闭ssh密码登录 在 /etc/ssh 下的sshd_conf…

Spark集群完全分布式安装部署

Spark集群完全分布式安装部署下载安装配置Spark 1spark-envsh配置2slaves配置3profile配置复制到其他节点测试总结 Spark集群完全分布式安装部署 本文中所提到的Spark集群所用的系统环境是Centos6.5&#xff0c;共4个节点&#xff0c;前提是Hadoop、JDK都已经安装配置好了&…

抛出错误_不用try catch,如何机智的捕获错误

这是多个feature组合使用后实现的神奇效果&#xff0c;在React源码中被广泛使用。当我读源码看到这里时&#xff0c;心情经历了&#xff1a;懵逼 -- 困惑 -- 沉思 -- 查文档 -- 豁然开朗看完此文&#xff0c;相信你也会发出感叹&#xff1a;还能这么玩&#xff1f;起源我们知道…

使用Jenkins从gitlab拉取代码并部署以及gitlab更新代码后自动构建

使用Jenkins从gitlab上拉取代码&#xff0c;使用ssh。 创建Jenkins服务器的SSH密钥对&#xff1b;为相应的Gitlab用户添加密钥对的公钥&#xff0c;相当于Jenkins拉取代码时&#xff0c;使用的是该Gitlab用户&#xff0c;拥有其相应的代码克隆权限&#xff1b;Jenkins添加密钥…

CentOS7.0下Hadoop2.7.3的集群搭建

集群服务器规划 使用3台CentOS-6.8虚拟机进行集群搭建 服务ip主机名称用户HDFSYARNhadoop1192.168.1.40hadoop1root NameNode,Datenode,SecondaryNameNodeResourceManager,NodeManager,hadoop2192.168.1.39hadoop2rootDatenodeNodeManagerhadoop3192.168.1.38hadoop3rootDate…

第五章(1)Libgdx应用框架之生命周期

生命周期 一个libgdx应用有一个良好定义的生命周期&#xff0c;管理应用的状态&#xff0c;比如创建&#xff0c;暂停和恢复&#xff0c;渲染和处理应用。 ApplicationListener 应用开发者通过实现ApplicationListener接口来调整生命周期&#xff1a; publicclassMyGameimpleme…

ssh-copy-id 命令快速实现ssh远程免密登录

用ssh-copy-id将公钥复制到远程机器中 将本地公钥拷贝至 用户名为root的远程主机上 ssh-copy-id -i ~/.ssh/id_rsa.pub root192.168.150.128/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/var/jenkins_home/.ssh/id_rsa.pub" /usr/bin/ssh-copy…

Win10配置VSCode+Opencv3(C++) GCC环境

环境清单&#xff1a; win10 _64位系统 VSCode&#xff1a;官网地址 Opencv&#xff1a;3.4.5 Cmake&#xff1a;3.9.0 MinGw&#xff1a;MinGW-W64 GCC-8.1.0&#xff08;x86_64-posix-seh&#xff09; MinGW配置&#xff1a; MinGW可以在线安装&#xff0c;也可以直接…

c#生成一组不同的随机数的方法

代码 #region生成不同随机数的方法///<summary>///生成不同随机数的方法///</summary>///<param name"min">最小值</param>///<param name"max">最大值</param>///<param name"count">取xx个</par…