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,可以直接做一些简单的数据操作和测试。
metastore可以和hive客户端不在一个机器上。
服务器1如1中配置,使用本地metastore
服务器1启动metastore服务
$HIVE_HOME/bin/hive --service metastore
如上启动,会启动端口号默认9083的metastore服务,也可以通过-p指定端口号
$HIVE_HOME/bin/hive --service metastore -p 9083
<configuration>
<property>
<name>hive.metastore.urisname>
<value>thrift://metastore_server_ip:9083value>
property>
configuration>
$HIVE_HOME/bin/hive
不需要启动server,使用远程的metastore
hive-site.xml如1中配置
hive-site.xml中可以加上是否需要验证的配置,此处设为NONE,暂时不需要验证,测试用。
<property>
<name>hive.server2.authenticationname>
<value>NONEvalue>
property>
<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
$HIVE_HOME/bin/hive --service hiveserver2
$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000
hiveserver端口号默认是10000
使用beeline通过jdbc连接上之后就可以像client一样操作。
界面中可以看到Session/Query/Software等信息。(此网页只可查看,不可以操作hive数据仓库)
hive提供网页GUI来访问Hive数据仓库
可以通过以下命令启动hwi,默认端口号9999
$HIVE_HOME/bin/hive --service hwi
从Hive 2.2.0开始不再支持hwi,故此处不再赘述。
从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