Mac 安装 Presto 并集成 Hive


一 环境描述

Mac OS 11.4

Java 8

Hadoop 3.2.2

Hive 3.1.2

二 准备工作

1 下载

cd /opt/soft
sudo wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.265.1/presto-server-0.265.1.tar.gz

2 解压

sudo tar -zxvf /opt/soft/presto-server-0.265.1.tar.gz -C /opt/module

3 数据目录

# Presto 需要数据文件夹存储日志,建议数据文件夹建在安装目录外
sudo mkdir -p /opt/data/presto
# 修改文件夹权限,注意修改为自己的账号
sudo chown your_account /opt/data/presto

三 配置

# 修改安装目录权限
sudo chown -R your_account /opt/module/presto-server-0.265.1
# 进入 Presto 安装目录
cd /opt/module/presto-server-0.265.1
# 在安装目录创建 etc 文件夹,用来存放配置文件
mkdir etc

Node Properties

etc/node.properties :各节点特有的环境配置。以下是基本配置:

# 环境名称,所有 Presto 集群的节点必须有相同的环境名称
node.environment=production
# 唯一标识符,每个节点必须唯一
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
# 存储日志和其他数据的路径
node.data-dir=/opt/data/presto

JVM Config

etc/jvm.config :配置启动 Java 虚拟机的命令行选项列表,注意不要包含空格或者其他特殊字符。

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

Config Properties

etc/config.properties :Presto 服务器配置。每个 Presto 服务器都可以作为Coordinator(协调服务器)或者Worker(工作服务器),Coordinator 配置单一服务器(即不同时作为 Worker)可以提供更好的集群性能。

以下是 Coordinator 基本配置:

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://example.net:8080

以下是 Worker 基本配置:

coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://example.net:8080

作为测试,服务器兼顾 Coordinator 和 Worker 角色,使用如下配置

# 允许 Presto 实例作为 Coordinator
coordinator=true
# 允许在 Coordinator 上工作,同时作为 Worker。在大集群中,在 Coordinator 上工作会影响查询性能,这里仅做测试
node-scheduler.include-coordinator=true
# HTTP 服务器端口
http-server.http.port=8080
# 查询可用的最大(分布式)内存
query.max-memory=5GB
# 每个节点查询可用的最大内存
query.max-memory-per-node=1GB
# 每个节点查询可用最大的用户和系统内存
query.max-total-memory-per-node=2GB
# 是否开启自动发现节点服务
discovery-server.enabled=true
# Coordinator 的 URI
discovery.uri=http://localhost:8080

Catalog Properties

连接器配置。这里以 Hive 为例,创建 etc/catalog/hive.properties 文件,配置如下信息:

connector.name=hive-hadoop2
hive.metastore.uri=thrift://localhost:9083
hive.config.resources=/opt/module/hadoop-3.2.2/etc/hadoop/core-site.xml,/opt/module/hadoop-3.2.2/etc/hadoop/hdfs-site.xml  
hive.allow-drop-table=true

四 启动

1 服务器启动

Hadoop、Hive 需要提前启动,这里需要注意的是启动 Hive Metastore 服务

# 启动 Hive Metastore
hive --service metastore
# 作为守护程序启动
bin/launcher start
# 也可以采取如下启动
bin/launcher run
# 停止命令
bin/launcher stop

2 客户端启动

# 下载 jar 包
cd /opt/module/presto-server-0.265.1
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.265.1/presto-cli-0.265.1-executable.jar
# 修改权限
chmod +x presto-cli-0.265.1-executable.jar
# 改名
mv presto-cli-0.265.1-executable.jar presto
# 启动命令行界面客户端
./presto --server localhost:8080 --catalog hive --schema default

五 测试

presto:default> create table emp(name varchar comment '姓名');
CREATE TABLE
presto:default> show tables;
 Table
-------
 emp
(1 row)

Query 20211116_123554_00018_rj468, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
136ms [1 rows, 20B] [7 rows/s, 146B/s]

参考文档

  1. Deploying Presto

  2. Command Line Interface