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一样。

注意:

  1. hive命令启动需要本地起了hdfs服务,不需要yarn服务
  2. 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的元数据内容。

posted @ 2019-01-03 16:04  xuejianbest  阅读(2322)  评论(0编辑  收藏  举报