使用presto+airpal+hive打造即席查询工具

JerryXia 发表于 , 阅读 (27)

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:8080

workers:

coordinator=falsehttp-server.http.port=8080query.max-memory=50GBquery.max-memory-per-node=1GBdiscovery.uri=http://host:8080

etc/node.properties:

注意:

  • node.environment集群中的所有节点,该配置项要一致。
  • node.id每台机器的id都应该不一样。
node.environment=productionnode.id=ffffffff-ffff-ffff-ffff-ffffffffffffnode.data-dir=/var/presto/data

etc/jvm.config: JVM的配置项。

-server-Xmx16G-XX:+UseG1GC-XX:G1HeapRegionSize=32M-XX:+UseGCOverheadLimit-XX:+ExplicitGCInvokesConcurrent-XX:+HeapDumpOnOutOfMemoryError-XX:OnOutOfMemoryError=kill -9 %p

2.设置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.xml

mysql:

connector.name=mysqlconnection-url=jdbc:mysql://host:3306connection-user=zhanghaoconnection-password=mima

3.设置启动脚本

需要下载一个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       |                ***                |             ***             |       ***        | *** |          ***        ----+------------------+-------------------------------------+----------------------------------+-------------------------+--------+-------------------------