hive的三种模式及配置
hive依赖于hadoop集群和mysql数据库,hadoop集群安装不在详述,mysql见3(3)1、配置分布NameNodeDataNodeZookeeperDFSZKFCJournalNodehive(单用户)hive(多用户)mysqlnode0111...
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、配置环境变量
在hive-env.sh中配置环境
export HADOOP_HOME=/opt/module/hadoop-2.7.2 #自己实际hadoop路径
export HIVE_CONF_DIR=/opt/module/hive/conf #自己实际hive配置路径
3、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>
这里需要说的是,本地模式和远程模式的区别在于是metastore和hive服务是否在同一进程,其“远程”主要体现在metastore和hive服务离得远,二者是否分离, 不是mysql数据库是否在同一台机器
4、本地模式
该模式下hive服务和metastore服务运行在同一个进程中,mysql可以在安装同一台机器上,也可以在远程机器上
该模式只需将hive-site.xml中的ConnectionURL指向mysql,并配置好驱动名、数据库连接账号即可
(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;
5、远程模式(mysql)
该模式下hive服务和metastore在不同的进程内,可能是不同的机器,因此需要单独启动metastore服务。该模式需要hive.metastore.local设置为false,并将hive.metastore.uris设置为metastore服务器URI,如有多个metastore服务器,URI之间用逗号分隔。
hive的服务端和客户端可以同一台机一起配置,也可以在不同机器分开配置,分开如下
(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>false</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服务端metastore服务
$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>
更多推荐
所有评论(0)