网站流量导入是什么意思,同ip网站是怎么做的,网络销售渠道有哪些,网站建设留言板实验心得presto集群安装 整合hive
张映 发表于 2019-11-07
分类目录#xff1a; hadoop/spark/scala
标签#xff1a;hive, presto
Presto是一个运行在多台服务器上的分布式系统。 完整安装包括一个coordinator#xff08;调度节点#xff09;和多个worker。 由客户端提交查询 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级别都放在内存中计算的。而是根据场景如countavg等聚合运算是边读数据边计算再清内存再读数据再计算这种耗的内存并不高。但是连表查就可能产生大量的临时数据因此速度会变慢反而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
查看复制打印?
# wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.227/presto-server-0.227.tar.gz # tar zxvf presto-server-0.227.tar.gz # mv presto-server-0.227 /bigdata
四调度节点presto配置
1配置目录介绍
查看复制打印?
[rootbigserver1 presto-server-0.227]# mkdir etc //创建配置目录 [rootbigserver1 etc]# tree . ├── catalog │ ├── hive.properties //连接hive │ └── jmx.properties //连接jmx ├── config.properties //Presto server的配置信息 ├── jvm.config //JVM的命令行选项 ├── log.properties //日志配置信息 └── node.properties //每个节点的环境配置信息
2调度节点node.properties
查看复制打印?
[rootbigserver1 etc]# mkdir /bigdata/presto-server-0.227/data [rootbigserver1 etc]# cat node.properties node.environmentproduction node.idcoordinator1 node.data-dir/bigdata/presto-server-0.227/data
node.environment: 环境名字Presto集群中的结点的环境名字都必须是一样的。node.id: 唯一标识每个结点的标识都必须是为一的。就算重启或升级Presto都必须还保持原来的标识。node.data-dir: 数据目录Presto用它来保存log和其他数据。
3调度节点jvm.config
[rootbigserver1 etc]# cat jvm.config -server -Xmx16G -XX:UseG1GC -XX:G1HeapRegionSize32M -XX:UseGCOverheadLimit -XX:ExplicitGCInvokesConcurrent -XX:HeapDumpOnOutOfMemoryError -XX:ExitOnOutOfMemoryError -XX:OnOutOfMemoryErrorkill -9 %p -XX:ReservedCodeCacheSize150M
这份配置文件的格式是一系列的选项每行配置一个单独的选项。由于这些选项不在shell命令中使用。 因此即使将每个选项通过空格或者其他的分隔符分开java程序也不会将这些选项分开而是作为一个命令行选项处理
4调度节点config.properties
查看复制打印?
[rootbigserver1 etc]# cat config.properties coordinatortrue node-scheduler.include-coordinatorfalse http-server.http.port38080 query.max-memory3GB query.max-memory-per-node1GB query.max-total-memory-per-node2GB discovery-server.enabledtrue discovery.urihttp://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-nodequery.max-total-memory-per-node 与memory.heap-headroom-per-node 之和必须小于 jvm max memory .也就是jvm.config 中配置的-Xmx
5调度节点log.properties
[rootbigserver1 etc]# cat log.properties com.facebook.prestoINFO
日志等级有四个DEBUG,INFO,WARN,ERROR
6调度节点jmx.properties
[rootbigserver1 etc]# cat catalog/jmx.properties connector.namejmx
7调度节点hive.properties
查看复制打印?
[rootbigserver1 etc]# cat catalog/hive.properties connector.namehive-hadoop2 hive.metastore.urithrift://bigserver1:9083 hive.config.resources/bigdata/hadoop/etc/hadoop/core-site.xml,/bigdata/hadoop/etc/hadoop/hdfs-site.xml hive.allow-drop-tabletrue
6和7的connector.name不是乱写的不然就会报java.lang.IllegalArgumentException: No factory for connector
8将调度节点presto复制到worker节点
# scp -r presto-server-0.227 rootbigserver2:/bigdata # scp -r presto-server-0.227 rootbigserver3:/bigdata
五worker节点presto配置
大部分的配置根调度节点一样下面只例举出不同的部分。
1worker节点config.properties
查看复制打印?
[rootbigserver2 etc]# cat config.properties coordinatorfalse http-server.http.port38080 query.max-memory3GB query.max-memory-per-node1GB discovery.urihttp://bigserver1:38080
2worker节点node.properties
[rootbigserver2 etc]# cat node.properties node.environmentproduction node.idworker1 node.data-dir/bigdata/presto-server-0.227/data
每个presto节点的node.id都是不一样的这一点要注意
六设置环境变量并启动
1设置环境变量
查看复制打印?
# echo export PRESTO_HOME/bigdata/presto-server-0.227 ~/.bashrc # echo export PATH$PRESTO_HOME/bin:$PATH ~/.bashrc # source ~/.bashrc
2每个presto节点都要启动
查看复制打印?
# launcher start //启动 # laucher status //查看状态 # laucher stop //停止 # jps 6065 DFSZKFailoverController 5268 QuorumPeerMain 17300 HMaster 26484 PrestoServer //每个presto节点都有 4869 JournalNode 5302 Kafka 5126 Jps 4652 NameNode 5150 ResourceManager
启动后web监控就要以看到了 七Presto命令行工具
查看复制打印?
# cd $PRESTO_HOME/bin # wget -O presto https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.227/presto-cli-0.227-executable.jar # nohup hive --service metastore 21 /var/log.log //想要查询连接到hive中查询数据还需要先启动hive的metastore [rootbigserver1 etc]# presto --server bigserver1:38080 --catalog hive --schema default --debug presto:default show tables; Table ------- (0 rows) Query 20191107_073229_00007_zn7nx, FINISHED, 3 nodes http://bigserver1:38080/ui/query.html?20191107_073229_00007_zn7nx Splits: 36 total, 19 done (52.78%) CPU Time: 0.0s total, 0 rows/s, 0B/s, 15% active Per Node: 0.0 parallelism, 0 rows/s, 0B/s Parallelism: 0.0 Peak Memory: 0B 0:01 [0 rows, 0B] [0 rows/s, 0B/s] presto:default use tanktest; USE
--server连接presto调度节点
--catalog连接的数据源
--schema可以理解成数据库
八presto与hive简单对比 从测试的结果来看presto比hive要快4-5倍个人觉得内存够的话能达到8-10倍上面的presto集群是在测试环境机器是退休的办公用公式机