1、内嵌模式:采用hive自带的元数据管理
不需要额外的配置,但是需要进行初始化操作【将某个数据库生成相应的表结构数据】。
元数据管理是采用的是内置的一个数据库【derby】
解压、配置环境变量
直接输入:hive
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
没有进行初始化操作
建议另起一个目录,执行初始化数据库的操作:schematool -initSchema -dbType derby
derby数据库的初始化是在当前目录下创建对应的存储数据的目录
在derby的数据目录下,执行hive
Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException: Call From kd0601/192.168.200.20 to kd0601:9000 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: Apache Software Foundation
因为hive是强依赖于hadoop的,所以在启动的时候,需要启动hdfs。在执行sql的时候需要启动yarn
当出现:hive> 表示成功
内嵌模式只用于【学习】使用
1.1:在非初始化目录下执行hive
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
derby数据库,只能在当前目录下使用,如果想多次使用,就需要多次初始化,那么就会产生多个元数据管理数据库【多个之间并不是同步的】
1.2当我们的目录被一个用户正在使用的时候,我们在次进去输入hive。
Caused by: java.sql.SQLException: Another instance of Derby may have already booted the database /bigdata/testhive/metastore_db.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
derby数据库只支持单用户操作。
2、本地模式
元数据管理采用的是mysql。
2.1:在hive的主机当中安装mysql
建议采用5.7:mysql57-community-release-el7-11.noarch.rpm
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
yum install
在linux内部加上mysql的yum地址
yum install mysql-community-server -y
启动:
service mysqld start
查看初始密码
grep 'temporary password' /var/log/mysqld.log CvaesagKS9<i
2018-11-14T08:41:17.971383Z 1 [Note] A temporaryse'r password is generated for [email protected]: aUxp&KHj5AxJ
进入mysql的控制台:mysql -uroot -p 回车之后在输入密码【因为默认密码当中有特殊符号】
alter user 'root'@'localhost' identified by 'MyNewPass4.'
默认情况下,是不允许远程访问的,所以我们需要将mysql的远程访问打开
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyNewPass4.' WITH GRANT OPTION;
WITH GRANT OPTION:表示可以向下授权
生效:FLUSH PRIVILEGES
mysql与hive进行连接
修改配置文件:
mv hive-default.xml.template hive-site.xml
notepad++的插件
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.200.20:3306/hive_class?createDatabaseIfNotExist=true</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>MyNewPass4!</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
初始化:schematool -initSchema -dbType mysql
异常:
Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver
Use --verbose for detailed stacktrace.
缺少mysql的驱动包:将mysql的驱动包放到:/bigdata/hive/lib
再进行初始化的操作:
在任意目录下,输入ve
默认会在hdfs的/user/hive/warehouse目录创建对应的文件
3、远程模式