hive的几种启动方式

1. 使用的本地metastore,直接通过hive命令启动。

hive-site.xml文件中配置使用本地mysql数据库存储metastore

<property>  
    <name>hive.metastore.localname>  
    <value>truevalue>  
property>   
<property>  
    <name>javax.jdo.option.ConnectionURLname>  
    <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&useSSL=falsevalue>  
property>  
<property>  
    <name>javax.jdo.option.ConnectionDriverNamename>  
    <value>com.mysql.jdbc.Drivervalue>  
property>  
<property>  
     <name>javax.jdo.option.ConnectionUserNamename>  
     <value>rootvalue>  
property>  
<property>  
     <name>javax.jdo.option.ConnectionPasswordname>  
     <value>rootpasswordvalue>  
property>  

使用以下命令开启

$HIVE_HOME/bin/hive

hive命令默认是启动client服务,相当于以下命令

$HIVE_HOME/bin/hive --service cli

不需要启动server,使用本地的metastore,可以直接做一些简单的数据操作和测试。

2. 使用远程的metastore

metastore可以和hive客户端不在一个机器上。

  • 服务器1如1中配置,使用本地metastore

  • 服务器1启动metastore服务

$HIVE_HOME/bin/hive --service metastore

如上启动,会启动端口号默认9083的metastore服务,也可以通过-p指定端口号

$HIVE_HOME/bin/hive --service metastore -p 9083
  • 服务器2如下配置,使用远程metastore


<configuration>
    <property>
       <name>hive.metastore.urisname>
       <value>thrift://metastore_server_ip:9083value>
    property>
configuration>
  • 服务器2直接启动cli即可
$HIVE_HOME/bin/hive

不需要启动server,使用远程的metastore

3. 启动hiveserver2,使其他服务可以通过thrift接入hive

  • hive-site.xml如1中配置

  • hive-site.xml中可以加上是否需要验证的配置,此处设为NONE,暂时不需要验证,测试用。

<property>
    <name>hive.server2.authenticationname>
    <value>NONEvalue>
property>
  • hadoop的core-site.xml文件中配置hadoop代理用户
<property>
    <name>hadoop.proxyuser.root.hostsname>
    <value>*value>
property>
<property>
    <name>hadoop.proxyuser.root.groupsname>
    <value>*value>
property>

此处这样设置的意思是,root用户提交的任务可以在任意机器上以任意组的所有用户的身份执行。
如果不设置,后续连接时会报

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException):
User: root is not allowed to impersonate anonymous 

hadoop在安全校验时不允许root用户使用匿名身份访问hadoop。
但其实我的hadoop并没有设置Authorization,为什么必须设置root的代理用户,这里暂时还是个疑问。
设置完后,需要重启hadoop

$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/start-dfs.sh
  • 启动hiveserver2
$HIVE_HOME/bin/hive --service hiveserver2
  • beeline工具测试使用jdbc方式连接
$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000

hiveserver端口号默认是10000
使用beeline通过jdbc连接上之后就可以像client一样操作。

  • hiveserver2会同时启动一个webui,端口号默认为10002,可以通过http://localhost:10002/访问

界面中可以看到Session/Query/Software等信息。(此网页只可查看,不可以操作hive数据仓库)

4. 启动hiveWebInterface,通过网页访问hive

hive提供网页GUI来访问Hive数据仓库
可以通过以下命令启动hwi,默认端口号9999

$HIVE_HOME/bin/hive --service hwi

从Hive 2.2.0开始不再支持hwi,故此处不再赘述。

5. (扩展)使用HCatalog访问hive

从Hive版本0.11.0开始,hive包含了HCatalog
HCatalog是基于Apache Hadoop之上的数据表和存储管理服务,支持跨数据处理工具,如Pig,Mapreduce,Streaming,Hive。
使用HCatalog,则hive的元数据也可以为其他基于Hadoop的工具所使用。无论用户用哪个数据处理工具,通过HCatalog,都可以操作同一个数据。

可以通过以下命令启动HCatalog

$HIVE_HOME/hcatalog/sbin/hcat_server.sh start

可以通过以下命令启动HCatalog的cli界面

$HIVE_HOME/hcatalog/bin/hcat

另外,HCatalog的WebHCat 也提供一套REST API接口访问hive数据
可以通过以下命令启动WebHCat

$HIVE_HOME/hcatalog/sbin/webhcat_server.sh start

API接口官网地址:https://cwiki.apache.org/confluence/display/Hive/WebHCat+Reference

你可能感兴趣的:(Hive)