Hive:客户端
hive本身提供了thrift协议对外提供服务的功能。
如果某台机器已经配置好了hive,然后运行以下命令打开thrift,提供对外服务(打开后这台机器就为hive服务器):
hive --service metastore &
远程机器想要使用hive,可以不做任何元数据和数据存储位置配置(都不需要知道这些配置细节),只需用hive的客户端功能连接hive服务器就行了。
这样配置连接hive服务器:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.0.101:9083</value>
</property>
</configuration>
然后在客户端机器运行hive命令,就能使用hive客户端功能了,和正常使用hive一样。
注意:
- hive命令启动需要本地起了hdfs服务,不需要yarn服务
- hive客户端从hive服务端拿到元数据,然后会根据元数据中记录的数据文件地址拿数据,但是元数据中记录的地址可能为如下形式:
hdfs://slave5:9000/user/hive/warehouse/...
也就是说hive客户端需要知道slave5对应ip才能访问数据文件,要求hive客户端的/etc/hosts文件里有ip映射。
如果不想配第2步,在服务端hive-site.xml配置文件里指定hive.metastore.warehouse.dir
选项时,直接用ip地址(未测试过)。但是不建议这样,因为如果用了ip地址,一旦hdfs集群的NameNode换了ip,hdfs上的数据文件就不能用原来的ip访问到了,想用hive继续访问,需要修改hive的元数据内容。