版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lzxlfly/article/details/80793164
hive依赖于hadoop集群和mysql数据库,hadoop集群安装不在详述,mysql见3(3)
1、配置分布
NameNode | DataNode | Zookeeper | DFSZKFC | JournalNode | hive(单用户) | hive(多用户) | mysql | |
node01 | 1 | 1 | ||||||
node02 | 1 | 1 | 1 | |||||
node03 | 1 | 1 | 1 | |||||
node04 | 1 | 1 | 1 | 1(服务端) | ||||
node05 | 1 | 1 | 1 | 1(客户端) | ||||
node06 | 1 |
2、local模式(内嵌derby)
此模式是基于hive内嵌derby数据库,一般用作Unit Test,只需在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:derby:;databaseName=metastore_db;create=true</value> #指定derby地址和数据库库名
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value> #derby驱动
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value> #本地模式
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
3、单用户模式(mysql)
通过网络连接到一个数据库中,是最经常使用到的模式
(1)复制mysql驱动包到$HIVE_HOME/lib下
(2)在$HIVE_HOME/conf下hive-site.xml配置以下内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/data/hive/warehouse</value>#hdfs目录
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.1.76/hive_remote?createDatabaseIfNotExist=true</value>#msql地址
</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> #mysql用户名
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value> #密码
</property>
</configuration>
(3)安装mysql
yum源安装:yum -y install mysql-server
启动mysql服务:service mysqld start
连接mysql:mysql(无密码,直接进入)
修改root用户权限(允许所有主机连接root用户,密码为123456)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
刷新生效:flush privileges;
退出连接:quit;
4、多用户模式
(1)服务端配置,hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/data/hive/warehouse</value>#hdfs存储目录,和客户端保持一致
</property>
<property>
<name>hive.metastore.local</name> #元数据在本机
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.1.76/hive_remote?createDatabaseIfNotExist=true</value>#msql地址
</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> #mysql用户名
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value> #密码
</property>
</configuration>
(2)客户端配置,hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/data/hive/warehouse</value> #hdfs存储目录,和服务端保持一致
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value> #元数据不在本机
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.1.74:9083</value> #服务端通信地址、端口
</property>
</configuration>
(4)启动hive服务端程序
$HIVE_HOME/bin/hive --service metastore
(5)客户端连接测试
连接:$HIVE_HOME/bin/hive
hive> show tables;
OK
tt
Time taken: 0.187 seconds, Fetched: 1 row(s)
hive>