配置MetaStore到MySQL
hive/conf创建配置文件hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>000000</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
登录MySQL创建Hive元数据库
mysql -uroot -proot;
mysql> create database metastore;
mysql> quit;
初始化Hive元数据库
启动后窗口不能再操作,需打开一个新的shell窗口做别的操作
schematool -initSchema -dbType mysql -verbose
启动Hive
bin/hive
使用元数据服务的方式访问Hive
在 hive-site.xml 文件中添加如下配置信息
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop102:9083</value>
</property>
启动metastore
启动后窗口不能再操作,需打开一个新的shell窗口做别的操作
bin/hive --service metastore
启动hive
bin/hive
使用JDBC方式访问Hive
在 hive-site.xml 文件中添加如下配置信息
<!-- 指定 hiveserver2 连接的 host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop102</value>
</property>
<!-- 指定 hiveserver2 连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
查看端口是否被占用
netstat -anp|grep 10000
启动hiveserver2
bin/hive --service hiveserver2
等待hiveserver2启动完成
通过netstat -anp|grep 10000 查看hiveserver2是否启动,在启动的时候保证端口没被占用,启动之后10000端口会有显示,在启动查端口前,没有查到占用就说明hiveserver2没有启动,hiveserver2会显示七八个Hive Session ID之后,才会真正启动,这要等个几分钟
启动beeline客户端
bin/beeline -u jdbc:hive2://hadoop102:10000 -n root
看到如下界面表示成功
Connecting to jdbc:hive2://hadoop102:10000
Connected to: Apache Hive (version 3.1.2)
Driver: Hive JDBC (version 3.1.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.2 by Apache Hive
0: jdbc:hive2://hadoop102:10000>
启动报错解决如下
解决方式:在hadoop的配置文件core-site.xml增加如下配置,重启hdfs,其中“xxx”是连接beeline的用户,将“xxx”替换成自己的用户名即可。一定要重启hadoop,否则不会生效的还是报错!
*表示可通过超级代理xxx操作hadoop的用户、用户组和主机
<property>
<name>hadoop.proxyuser.xxx.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.xxx.groups</name>
<value>*</value>
</property>
后台启动
前台启动的方式导致需要打开多个shell窗口,可以使用如下方式后台方式启动
- nohup: 放在命令开头,表示不挂起,也就是关闭终端进程也继续保持运行状态
- /dev/null:是Linux文件系统中的一个文件,被称为黑洞,所有写入改文件的内容都会被自动丢弃
- 2>&1 : 表示将错误重定向到标准输出上
- &: 放在命令结尾,表示后台运行
- 一般会组合使用
nohup [xxx 命令操作]> file 2>&1 & ,表示将xxx命令运行的结果输出到file中,并保持命令启动的进程在后台运行
nohup hive --service metastore 2>&1 &
nohup hive --service hiveserver2 2>&1 &
|