HIVE体系架构

*注:本文基于hive-0.8.1写的

架构图:


一、service

1、 hive有三种service,分别是cli,hiveserver和hwi。

2、 cli是命令行工具,为默认服务,启动方式$HIVE_HOME/bin/hive 或$HIVE_HOME/bin/hive --service cli。

3、 hiverserver通过thrift对外提供服务,默认端口10000,启动方式为$HIVE_HOME/bin/hive--service hiveserver。

4、 hwi为web接口,可以通过浏览器访问hive,默认端口9999,启动方式为$HIVE_HOME/bin/hive--service hwi。

5、 每个服务间互相独立,有各自的配置文件(配置metasotre/namenode/jobtracker等),如果metasotre的配置一样则物理上对应同一hive库。

6、 Driver用于解释、编译、优化、执行HQL,每个service的Driver相互独立。

7、 CLI为用户提供命令行接口,每个CLI独享配置,即在一个CLI里修改配置不影响别的CLI。

8、 多个JDBC可同时连到同一HiveServer上,所有会话共享一份配置。(注:从0.9.0起hiveserver配置已经从global降为session,即每个session的配置相互独立,见 [HIVE-2503])

9、 多个浏览器可同时连到同一HWI上,所有会话共享一份配置。

二、MetaStore

MetaStore位置通过参数javax.jdo.option.ConnectionURL来指定,可在会话中自由修改。相关的参数包括:

javax.jdo.option.ConnectionDriverName#数据库驱动
javax.jdo.option.ConnectionURL #数据库ip端口库名等
javax.jdo.option.ConnectionUserName #用户名
javax.jdo.option.ConnectionPassword #密码

通过修改这些参数可以在多个MetaStore间热切换,可用于HA。

三、NameNode与JobTracker

NameNode由fs.default.name指定,JobTracker由mapred.job.tracker指定,这两个参数都可以在会话中自由修改来指向不同的NameNode和JobTracker。

配合MetaStore可以有多种组合出现,例如在同一个MetaStore里让table1的数据存在HDFS1,用JobTracker1计算,table2的数据存在HDFS2,用JobTracker2计算,或者让两个表都在JobTracker3上计算。

四、注意事项

1、 NameNode和JobTracker最好指向同一个集群,否则计算的时候需要跨集群复制数据。

2、 在MetaStore存储的是表数据文件的绝对路径,当心其与NameNode/JobTracker不再同一个集群里导致夸集群复制。

3、 对hiveserver与hwi配置的修改会作用到同一service上的所有会话。 (注:从0.9.0起hiveserver配置已经从global降为session,即每个session的配置相互独立,见 [HIVE-2503])


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值