Spark 默认hive数据库
在配置和查看配置之前先弄清楚两个概念
Hive on Spark:hive默认在mr上跑,可改成在spark内存上跑
Spark on hive:不管如何运行spark sql,默认读取的hive数据库,其实spark不是直接读取hive数据库,而是读取hive元数据和hdfs,那就是要配置hive的metastore。
Hive 的 metastore 安装方式共有三种
1.内嵌模式,特点是:hive服务和metastore服务运行在同一个进程中,derby服务也运行在该进程中。
2.本地模式,特点是:hive服务和metastore服务运行在同一个进程中,mysql是单独的进程,可以在同一台机器上,也可以在远程机器上。该模式只需将hive-site.xml中的ConnectionURL指向mysql,并配置好驱动名、数据库连接账号即可:
需要将 MySQL 的驱动 jar 包拷贝到$HIVE_HOME/lib目录下, 并启动 MySQL 服务
hive-site.xml配置如下
3.远程模式,特点是:hive服务和metastore在不同的进程内,可能是不同的机器。该模式需要将hive.metastore.local设置为false,并将hive.metastore.uris设置为metastore服务器URI,如有多个metastore服务器,URI之间用逗号分隔。metastore服务器URI的格式为thrift://hostort
远程模式与本地模式的区分,就是hive服务和metastore服务是否在同一进程,即使在同一台机器也可配置远程模式。
Metastore启动命令
hive --service metastore -p
可以用命令ps -ef|grep metastore查看进程是否启动
如果不加端口默认启动:hive --service metastore,则默认监听9083
IP为服务所在机器
看到thrift可能有些不明白,这就要涉及hiveserver2
从图中看出 hiveserver是hive与client端的交换终端,client通过hiveserver构建查询语句,访问hadoop,并把数据通过hiveserver返回到client端,hiveserver的核心是基于Thrift,Thrift负责hive的查询服务,Thtift是构建跨平台的rpc框架,主要由四层组成:server,Transport,Protocol和处理器。