[spark]spark/hive配置metastore为postgresql

看文档可以知道,Spark SQL复用了hive的sql解析器/metastore管理。而hive的默认的metastore为derby,它有两个弊端:

1.metastore一次仅允许一个客户端连接

2.每个客户端进行sql操作时,都会在本进程所在的文件夹内新建metastore

所以,在产品的开发中,至少应该将metastore配为postgresql的

步骤如下:

1.在postgresql中新建一个用户nsc,并为它新建一个数据库metastore;并允许远程访问

2.新建/home/pijing/spark/conf/hive-site.xml文件,配置如下:

3.我用的spark版本为1.3.0,它所用的hive版本为0.12.0;所以下载一个hive的包,在它的: scripts\metastore\upgrade\postgres目录下,找到hive-schema-0.12.0.postgres.sql

运行命令:

psql –U nsc metastore<c:\hive\scripts\metastore\upgrade\postgres\hive-schema-0.12.0.postgres.sql

将表导入pg的metastore库中。

4.接着,再运行/home/pijing/spark/sbin/start-thriftserver.sh即可


经过以上步骤,metastore就被配置为了postgresql中的metastore数据库。



<think>好的,我现在需要回答用户关于默认端口9083是什么服务的问题,特别是和Spark相关的情况。用户提到在Sparkhive-site.xml文件中有一个配置项指向thrift://node1:9083。首先,我需要确认这个端口对应的服务是什么。 首先,我记得Hive Metastore通常使用Thrift服务来提供元数据访问。Hive Metastore默认的Thrift端口是9083,这可能是用户提到的端口。接下来,需要确认Spark如何与Hive Metastore交互。当Spark需要访问Hive的元数据时,比如在使用Spark SQL查询Hive表时,会通过hive-site.xml配置文件中的hive.metastore.uris属性连接到Hive Metastore服务。这个属性指定了Metastore服务的位置,这里用的是thrift协议,节点是node1,端口9083,所以应该就是Hive Metastore服务在node1节点上监听9083端口。 另外,可能需要解释一下Hive Metastore的作用,即存储表结构、分区信息等元数据,使得Spark或其他计算引擎可以访问这些元数据。同时,用户可能想知道如何验证这个服务是否正常运行,比如检查端口监听状态或者查看服务日志。还需要注意配置的正确性,比如主机名node1是否正确解析,防火墙是否开放9083端口等潜在问题。 最后,确保回答结构清晰,分点说明,使用用户提到的配置示例,并保持语言口语化,避免技术术语堆砌,让用户容易理解。同时,按照系统指令使用中文,正确使用LaTeX格式,虽然在这个问题中可能用不上数学公式,但如果有变量或代码部分,需要正确应用格式。</think>在SparkHive集成配置中,**端口9083**通常对应的是 **Hive Metastore服务的默认Thrift端口**。以下是关键信息分步说明: --- ### 1. **服务归属** - **Hive Metastore**:这是Hive的核心元数据管理服务,负责存储表结构、数据库信息、分区信息、文件路径等元数据。 - **通信协议**:通过**Thrift RPC协议**(跨语言服务通信框架)对外提供服务,默认端口为**9083**。 --- ### 2. **SparkHive Metastore的关系** Spark本身不管理元数据,当需要访问Hive表时,需通过以下配置连接到Hive Metastore: ```xml <!-- hive-site.xml配置示例 --> <property> <name>hive.metastore.uris</name> <value>thrift://node1:9083</value> </property> ``` - **作用**:告知Spark从`node1:9083`获取Hive元数据。 - **典型场景**:在Spark SQL中执行`SHOW DATABASES`或`SELECT * FROM hive_table`时,Spark会通过此端口查询Hive Metastore获取表信息。 --- ### 3. **验证服务状态** #### 方法1:检查端口监听 在服务器`node1`上执行: ```bash netstat -tuln | grep 9083 ``` 若输出包含`LISTEN`状态,则服务正常运行: ``` tcp6 0 0 :::9083 :::* LISTEN ``` #### 方法2:查看Hive Metastore日志 日志路径通常为`/var/log/hive/hive-metastore.log`,检查是否有启动成功记录: ``` INFO [main] metastore.HiveMetaStore: Started MetaStore Server on port 9083 ``` --- ### 4. **常见问题排查** - **连接失败**:检查`node1`主机名/IP是否正确,防火墙是否开放9083端口。 - **版本兼容性**:确保SparkHive Metastore的版本兼容(例如Spark 3.x通常需Hive 2.3+)。 - **多实例配置**:高可用场景下可能配置多个Metastore地址: ```xml <value>thrift://node1:9083,thrift://node2:9083</value> ``` --- ### 5. **扩展知识** - **元数据存储后端**:Hive Metastore的元数据实际存储在关系型数据库(如MySQL、PostgreSQL)中, Metastore服务仅提供访问接口。 - **Spark独立元数据库**:若不依赖HiveSpark也可使用内置的Derby数据库,但仅限于单机模式。 --- 总结:端口9083是**Hive Metastore的Thrift服务端口**,Spark通过`hive.metastore.uris`配置与其通信,从而实现Hive元数据查询功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值