Presto分布式安装查询Hive的步骤

发布时间:2021-07-05 15:00:36 作者:chen
来源:亿速云 阅读:308
# Presto分布式安装查询Hive的步骤

## 目录
1. [Presto与Hive集成概述](#presto与hive集成概述)
2. [环境准备](#环境准备)
3. [Presto集群安装](#presto集群安装)
4. [Hive连接器配置](#hive连接器配置)
5. [跨集群网络配置](#跨集群网络配置)
6. [权限与安全配置](#权限与安全配置)
7. [性能调优建议](#性能调优建议)
8. [常见问题排查](#常见问题排查)

<a id="presto与hive集成概述"></a>
## 1. Presto与Hive集成概述

Presto作为开源的分布式SQL查询引擎,通过连接器(Connector)架构实现对Hive数据仓库的查询能力。其核心优势在于:
- **联邦查询**:同时查询Hive与其他数据源(如MySQL、Kafka等)
- **低延迟**:内存计算模型比MapReduce更快
- **ANSI SQL支持**:完整支持标准SQL语法

![Presto-Hive架构](https://prestodb.io/assets/images/presto-architecture.png)

<a id="环境准备"></a>
## 2. 环境准备

### 2.1 硬件要求
| 节点类型       | 建议配置                      |
|----------------|-----------------------------|
| Coordinator    | 16核CPU/32GB内存/500GB SSD   |
| Worker         | 32核CPU/64GB内存/1TB SSD     |
| Hive Metastore | 8核CPU/16GB内存/500GB HDD    |

### 2.2 软件依赖
- Java 8/11 (推荐Zulu JDK)
- Hadoop 3.x (HDFS)
- Hive 3.1.2+
- Presto 0.280+

### 2.3 网络要求
```mermaid
graph LR
    A[Presto Coordinator] -->|9083| B[Hive Metastore]
    A -->|8020| C[HDFS NameNode]
    D[Presto Worker] -->|9083| B
    D -->|8020| C

3. Presto集群安装

3.1 下载与解压

wget https://repo1.maven.org/maven2/io/prestosql/presto-server/350/presto-server-350.tar.gz
tar -xzf presto-server-350.tar.gz -C /opt
ln -s /opt/presto-server-350 /opt/presto

3.2 节点配置

coordinator节点配置etc/config.properties:

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
discovery.uri=http://coordinator-ip:8080

worker节点配置etc/config.properties:

coordinator=false
http-server.http.port=8080
discovery.uri=http://coordinator-ip:8080

3.3 基础配置

etc/node.properties:

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data

4. Hive连接器配置

4.1 创建Hive Catalog

etc/catalog/hive.properties:

connector.name=hive-hadoop2
hive.metastore.uri=thrift://hive-metastore-host:9083
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
hive.allow-drop-table=true
hive.max-partitions-per-writers=1000

4.2 分区处理配置

# 动态分区配置
hive.recursive-directories=true
hive.max-partitions-per-scan=100000

# ORC优化
hive.orc.predicate-pushdown.enabled=true
hive.orc.bloom-filters.enabled=true

5. 跨集群网络配置

5.1 Kerberos认证

hive.metastore.authentication.type=KERBEROS
hive.metastore.service.principal=hive/_HOST@EXAMPLE.COM
hive.metastore.client.principal=presto/_HOST@EXAMPLE.COM
hive.metastore.client.keytab=/etc/presto/presto.keytab

5.2 HDFS透明加密

<!-- core-site.xml -->
<property>
  <name>hadoop.security.key.provider.path</name>
  <value>kms://https@kms-server:9600/kms</value>
</property>

6. 权限与安全配置

6.1 基于Ranger的权限控制

hive.security=allow-all|read-only|ranger
hive.ranger.policy-rest-endpoint=http://ranger-admin:6080
hive.ranger.service-name=hive_dev

6.2 SQL标准权限

-- 创建角色
CREATE ROLE analyst;
GRANT SELECT ON hive.schema.table TO ROLE analyst;

7. 性能调优建议

7.1 内存配置

etc/jvm.config:

-server
-Xmx24G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M

7.2 查询优化参数

# 并发控制
task.concurrency=8
task.max-worker-threads=64

# 内存管理
query.max-memory-per-node=8GB
query.max-total-memory-per-node=10GB

8. 常见问题排查

8.1 连接问题

# 检查Metastore连通性
telnet hive-metastore 9083
nc -zv hdfs-namenode 8020

8.2 性能问题分析

-- 查看慢查询
SELECT * FROM system.runtime.queries WHERE elapsed_time > interval '5' minute;

8.3 错误代码处理

错误码 解决方案
HIVE_METASTORE_ERROR 检查Metastore服务状态
HIVE_PARTITION_NOT_FOUND 验证分区路径是否存在
HIVE_CURSOR_ERROR 更新Hive连接器版本

最佳实践提示:生产环境建议配置监控系统(Prometheus+Grafana)监控以下指标: - 查询成功率 - 平均响应时间 - Worker节点负载均衡 “`

推荐阅读:
  1. Presto查询引擎简单分析
  2. presto集群安装&整合hive|mysql|jdbc

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

presto hive

上一篇:Python中“is”和“==”的区别是什么

下一篇:Python中怎么判断字符串

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》