使用presto+airpal+hive打造即席查询工具
0X03 安装记录
1.基本配置文件
etc/config.properties: presto的基本配置文件,分两种角色,coordinator和workers。两种角色的配置不同,其中coordinator有点类似master节点,workers类似于slave节点。
注意:discovery.uri需要配置成coordinator的host。
coordinator:
coordinator=truenode-scheduler.include-coordinator=falsehttp-server.http.port=8080query.max-memory=50GBquery.max-memory-per-node=1GBdiscovery-server.enabled=truediscovery.uri=http://host:8080workers:
coordinator=falsehttp-server.http.port=8080query.max-memory=50GBquery.max-memory-per-node=1GBdiscovery.uri=http://host:8080etc/node.properties:
注意:
node.environment集群中的所有节点,该配置项要一致。node.id每台机器的id都应该不一样。
node.environment=productionnode.id=ffffffff-ffff-ffff-ffff-ffffffffffffnode.data-dir=/var/presto/dataetc/jvm.config: JVM的配置项。
-server-Xmx16G-XX:+UseG1GC-XX:G1HeapRegionSize=32M-XX:+UseGCOverheadLimit-XX:+ExplicitGCInvokesConcurrent-XX:+HeapDumpOnOutOfMemoryError-XX:OnOutOfMemoryError=kill -9 %p2.设置connector
presto可以设置不同的connector,用以连接不同的数据源。我配置了两种:hive和mysql。
需要新建一个目录etc/catalog,然后每种数据源一个配置文件。
hive:
文件名hive.properties。
注意:
- connector.name:我用的是cdh5,因此选择该连接器。
- hive.metastore.uri:hive元数据节点
- hive.config.resources:如果presto安装在集群外的节点,需要copy一下集群中的配置文件,并指定目录。
connector.name=hive-cdh5hive.metastore.uri=thrift://host:9083hive.config.resources=/data/presto/etc/cluster/core-site.xml,/data/presto/etc/cluster/hdfs-site.xmlmysql:
connector.name=mysqlconnection-url=jdbc:mysql://host:3306connection-user=zhanghaoconnection-password=mima3.设置启动脚本
需要下载一个jar包,然后重命名为presto,并赋予执行权限。以后可以用它来连接即可。
presto-cli-0.151-executable.jar
4.启动
直接启动使用bin/presto即可。
也可以设置连接的catalog和schema。比如:./presto --server localhost:8080 --catalog hive --schema default
5.安装airpal
airpal的安装不难,按照官网的安装即可。
0X04 使用
1.基本查询测试
查看hive中的库。
presto> show schemas from hive; Schema -------------------------test1test2...test20(20 rows)Query 20160805_115300_00021_nk48v, FINISHED, 2 nodesSplits: 2 total, 2 done (100.00%)0:00 [20 rows, 238B] [99 rows/s, 1.15KB/s]查看表信息。
presto> desc hive.trace.apptalk; Column | Type | Comment ------------+---------+--------------- content | varchar | id | varchar | ... | ... | k | varchar | Partition Key(13 rows)Query 20160805_115429_00022_nk48v, FINISHED, 2 nodesSplits: 2 total, 2 done (100.00%)0:00 [13 rows, 798B] [32 rows/s, 1.96KB/s]查看mysql表中的数据。
presto> select * from mysql.test.test limit 10; id | name | *** | *** | *** | *** | *** ----+------------------+-------------------------------------+----------------------------------+-------------------------+--------+-------------------------