CDH 安装 presto-server-0.216

本文详细介绍了在CDH环境下安装和配置Presto-0.216的过程,包括Presto与Hive、MySQL的集成。Presto是一个快速、分布式、可扩展的SQL查询引擎,适用于PB级数据的复杂分析。文章首先阐述了Presto的特点、与Hive的区别以及其内部架构,接着详细讲解了Presto的安装步骤,包括配置文件的创建和分发,以及服务的启停。最后,通过示例展示了如何集成Hive和MySQL,确保Presto能访问这些数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Presto简介

        Presto是由Facebook开源,完全基于内存的并行计算以及分布式SQL交互式查询引擎。它可以共享Hive的元数据,然后直接访问HDFS中的数据,同时支持Hadoop中常见的文件格式比如文本,ORC和Parquet。同Impala一样,作为Hadoop之上的SQL交互式查询引擎,通常比Hive要快5-10倍。另外,Presto不仅可以访问HDFS,还可以访问RDBMS中的数据,以及其他数据源比如CASSANDRA。

适合场景:PB级海量数据复杂分析,交互式SQL查询,⽀持跨数据源查询

不适合场景:多个大表的join操作,因为presto是基于内存的,join操作输入小但产生的中间数据大,在内存里可能放不下

与Hive的区别:

(1)hive是一个数据仓库,提供存储服务,但只能访问HDSF的数据,presto是一个分布式的查询引擎,并不提供数据的储存服务,为此,presto是一个插拔式的设计思路,支持多种数据源,包括hive,hdfs,mysql,等。

(2)两者的基本架构

hive:Client将查询请求发送到hive Service,它会和Metastor交互,获取表的源信息(如表的位置结构)之后Hive Service会进行语法分析,解析成语法树,变成查询计划,进行优化后将查询计划交给执行引擎(默认是Map reduce),然后翻译成Map Reduce任务来运行。

Presto:presto是在它内部做hive类似的逻辑

2 Presto内部架构

Presto是一个运行在多台服务器上的分布式系统。 完整安装包括一个coordinator和多个worker。 由客户端提交查询,从Presto命令行CLI提交到coordinator。 coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker

Presto查询引擎是一个Master-Slave的架构模式,由三部分组成:

1.一个 coordinator

2.一个discovery server

3.多个worker

coodinator:用于解析查询sql,生成执行计划,并分发给worker执行。

discovery server:通常内嵌与Coordinator节点中,worker上线后,向discovery server注册。coodinator分发任务前,需要向discovery server获取可以正常工作worker列表。

worker:具体执行任务的工作节点。

presto可以借助hive的元信息找到hdfs上的节点

Presto中SQL运行流程:

    step1:当我们执行一条sql查询,coordinator接收到这条sql语句以后,它会有一个sql的语法解析器去把sql语法解析变成一个抽象的语法树(AST),这抽象的语法树它里面只是进行一些语法解析,如果你的sql语句里面,比如说关键字你用的是int而不是Integer,就会在语法解析这里给暴露出来

    step2:如果语法是符合sql语法规范,之后会经过一个逻辑查询计划器的组件,他的主要作用是,比如说你sql里面出现的表,他会通过connector的方式去meta里面把表的schema,列名,列的类型等,全部给找出来,将这些信息,跟语法树给对应起来,之后会生成一个物理的语法树节点,这个语法树节点里面,不仅拥有了它的查询关系,还拥有类型的关系,如果在这一步,数据库表里某一列的类型,跟你sql的类型不一致,就会在这里报错.

    step3:如果通过,就会得到一个逻辑的查询计划,然后这个逻辑查询计划,会被送到一个分布式的逻辑查询计划器里面,进行一个分布式的解析,分布式解析里面,他就会去把对应的每一个查询计划转化为task

step4:在每一个task里面,他会把对应的位置信息全部给提取出来,交给执行的plan,由plan把对应的task发给对应的worker去执行,这就是整个的一个过程,与hive默认的引擎Mapreduce相比,presto将数据放在内存中,task之间进行数据shuffle时,直接从内存里处理,所以很快。

3 .安装

3.1 Presto的安装基本环境

.Linux或Mac OS X.

.Java 8,64位

.Python 2.4+

连接器:

Presto支持从以下版本的Hadoop中读取Hive数据:支持以下文件类型:Text, SequenceFile, RCFile, ORC

Apache Hadoop 1.x (hive-hadoop1)

Apache Hadoop 2.x (hive-hadoop2)

Cloudera CDH 4 (hive-

<think>好的,用户遇到了Cloudera Manager中关于CDH-6.2.1版本的未知parcel问题。我需要先分析可能的原因,然后提供解决方案。根据引用内容,用户可能是在安装过程中parcel配置不正确或者文件缺失。首先,检查parcel存储路径是否正确,ClouderaManager需要正确访问存放parcel的目录,比如/opt/cloudera/parcel-repo,确保路径权限和文件存在。接着,核对parcel的版本号是否匹配,CDH-6.2.1对应的文件名应该包括CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel和相关校验文件,用户可能在部署时文件名不一致导致无法识别。然后,手动下载并放置正确的parcel文件,并重启ClouderaManager服务,如server和agent,可能解决问题。另外,可能需要重新生成元数据或清理缓存。如果问题依旧,考虑重新部署Cloudera Manager组件,比如重新安装server和agent,确保安装步骤正确,如引用4中的yum安装命令。最后,建议用户检查网络连接和Cloudera的官方文档,确认版本兼容性。需要分步骤详细说明,避免用户遗漏关键操作。</think>### 解决方案:Cloudera Manager未知Parcel问题处理步骤 #### 1. **确认Parcel存储路径** - 检查`Cloudera Manager管理界面 > 主机 > Parcel存储路径`配置是否为`/opt/cloudera/parcel-repo`[^2][^4] - 验证路径权限: ```bash ls -ld /opt/cloudera/parcel-repo chmod 755 /opt/cloudera/parcel-repo ``` #### 2. **文件完整性校验** - 确保存在以下文件(以CDH6.2.1为例): ```bash CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 # 或.sha manifest.json ``` - 校验文件示例: ```bash echo "7ce7dcdb76fd7f700cd7749bbc6390f76ff2abae" > CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha ``` #### 3. **手动下载Parcel(可选)** - 使用wget下载(注意版本号匹配): ```bash wget http://archive.cloudera.com/cdh6/6.2.1/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel ``` #### 4. **服务重启操作** ```bash systemctl restart cloudera-scm-server # 管理节点[^2][^4] systemctl restart cloudera-scm-agent # 所有工作节点[^4] ``` #### 5. **元数据刷新** ```sql -- 在Cloudera Manager数据库执行 TRUNCATE TABLE PARCELS; ``` #### 6. **安装验证** - 在`主机 > Parcel分配`页面检查状态应变为`ACTIVATED` - 查看节点日志: ```bash tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log ``` #### 7. **特殊场景处理** - **镜像源配置问题**:检查nginx配置是否包含`cloudera-repos`目录[^5] ```bash ls /usr/share/nginx/html/cloudera-repos/CDH-6.2.1/ ``` - **版本冲突**:确认所有节点已卸载旧版本 ```bash yum remove cdh\* ``` ### 技术原理说明 $$ \text{Parcel状态机} = \{ \text{UNKNOWN} \xrightarrow{\text{同步}} \text{DISTRIBUTED} \xrightarrow{\text{激活}} \text{ACTIVATED} \} $$ 当parcel的元数据与物理文件不匹配时,系统会持续停留在`UNKNOWN`状态[^1][^3]。通过SHA1校验可确保文件完整性: $$ \text{SHA1}(Parcel_{file}) \equiv \text{SHA1}_{manifest} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值