Presto是Facebook开源出来的一个分布式SQL查询引擎,用于查询分布在一个或多个不同数据源中的大数据集。Presto是一款专为使用分布式查询而高效查询海量数据的工具,处理PB级数据。
1. 环境准备jdk,cdh集群安装(省略,需要可以参考我写的CDH集群安装文档)
2.下载presto安装包,https://prestodb.io/docs/current/installation/deployment.html
3. 解压压缩包
tar –zxvf presto-server-0.191.tar.gz
4. 进入解压目录,创建etc目录
mkdir etc
5. 进入etc 目录,编辑配置文件,catalog为创建目录:
6. 在ect目录下创建配置文件
[root@data etc]# vi node.properties
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff01
node.data-dir=/home/presto/data
[root@datacenter1 etc]# vi jvm.config
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
由于OutOfMemoryError将会导致JVM处于不一致状态,所以遇到这种错误的时候我们一般的处理措施就是将dump headp中的信息(用于debugging),然后强制终止进程。
Presto会将查询编译成字节码文件,因此Presto会生成很多class,因此我们我们应该增大Perm区的大小(在Perm中主要存储class)并且要允许Jvm class unloading。
[root@data etc]# vi config.properties
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8180
query.max-memory=16GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://datacenter1:8180
Presto的配置文件:etc/config.properties包含了Presto server的所有配置信息。 每个Presto server既是一个coordinator也是一个worker。 但是在大型集群中,处于性能考虑,建议单独用一台机器作为 coordinator
[root@data etc]# vi log.properties
com.facebook.presto=INFO
进入catalog目录下,创建 hive连接器配置文件:
[root@data catalog]# vi hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://xxxxx:9083
hive.config.resources=/etc/hadoop/conf/core-site.xml, /etc/hadoop/conf/hdfs-site.xml
hive.allow-drop-table=true
进入catalog目录下,创建 jmx连接器配置文件:
[root@data catalog]# vi jmx.properties
connector.name=jmx
7. scp presto到其它服务器,修改配置文件config.properties,node.properties
8. 每个节点执行bin/launcher start 启动presto程序
9. 下载 presto-cli-0.100-executable.jar ,重名名为 presto , 使用 chmod +x 命令设置可执行权限,然后执行:
./presto --server xxxx:8180 --catalog hive --schema default