理论基础
hive有三种运行模式:
内嵌模式、本地模式、远程模式。
内嵌模式:
元数据保村在内嵌的derby中,允许一个会话链接,尝试多个会话链接时会报错。
本地模式:
本地安装mysql 替代derby存储元数据。
由于元数据的获取需要访问mysql,所以这就要求每一个用户必须要有对MySQL的访问权利。
远程模式:
以本地模式为基础。
这种模式需要使用 HIVE_HOME/bin 目录下提供的 beeline+hiveserver2 配合使用才可以。
mysql数据库所在的节点提供metastore service服务,其他节点可以连接该服务来获取元数据信息。
各种客户端通过 beeline 来连接,连接之前无需知道数据库的用户名和密码。
一、前 期准备
安装好hadoop并启动。
hadoop搭建:
Zookeeper搭建及Zookeeper实现Hadoop的HA
搭建远程模式的时候,使用全分布[HA]的方式。其他情况随意。
二、搭建内嵌模式
1、tar /opt/source/apache-hive-2.3.4-bin.tar.gz -C ../apps
2、mv apache-hive-2.3.4-bin/ hive-2.3.4
3、vi + /etc/profile
export HIVE_HOME=/opt/apps/hive-2.3.4
export PATH=$PATH:$HIVE_HOME/bin
4、cd /opt/apps/hive-2.3.4/conf
5、cp hive-env.sh.template hive-env.sh && vi hive-env.sh
HADOOP_HOME=/opt/apps/hadoop-2.6.5
6、cp hive-default.xml.template hive-site.xml && vi hive-site.xml
删除configuration内部所有内容
<!--Hive中所有数据存储在HDFS上的路径-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!--连接本地Derby的Url-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
<!--连接Derby的驱动包-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<!--元数据库是否存放在本地,true代表存放在本地-->
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
6、初始化元信息(每次启动hive都需要执行这一步)
cd /opt/apps/hive-2.3.4/bin && ./schematool -dbType derby -initSchema
如果失败的话:
mv metastore_db/ metastore_db.tmp/ 或者 rm -rf metastore_db/
再重新初始化。
7、验证是否搭建成功
先执行hive
hive> create table a(id int);
OK
Time taken: 1.436 seconds
hive> select count(*) from a;
OK
0
如果建表能建,且查询没问题,则搭建成功。
三、搭建本地模式
搭建mysql
1、yum -y install mysql
2、chkconfig mysqld on && service mysqld start
3、mysql
4、use mysql;
5、grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
6、delete from user where host<>'%'; #####删除多余的会对权限造成影响的数据
7、flush privileges;
或者重启mysql服务。
-------------------------------------------------------------------
-------------------------------------------------------------------
搭建hive
1、tar /opt/source/apache-hive-2.3.4-bin.tar.gz -C ../apps
2、mv apache-hive-2.3.4-bin/ hive-2.3.4
3、vi + /etc/profile
export HIVE_HOME=/opt/apps/hive-2.3.4
export PATH=$PATH:$HIVE_HOME/bin
4、cd /opt/apps/hive-2.3.4/conf
5、cp hive-env.sh.template hive-env.sh && vi hive-env.sh
HADOOP_HOME=/opt/apps/hadoop-2.6.5
6、cp hive-default.xml.template hive-site.xml && vi hive-site.xml
删除configuration内部所有内容
<!-- Hive文件HDFS存放路径 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>??
</property>
<!-- hive和mysql是否在同一个节点 -->
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!--mysql的数据库url-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://Linux005:3306/hive_remote?createDatabaseIfNotExist=true</value>
</property>
<!--连接mysql的驱动包-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--hive存放元数据的数据库的用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--hive存放元数据的数据库的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
7、将mysql连接驱动包“ mysql-connector-java-5.1.32-bin.jar ”放到hive家目录的lib文件夹下
8、初始化元信息
cd /opt/apps/hive-2.3.4/bin && ./schematool -dbType mysql -initSchema
如果失败的话:
mv metastore_db/ metastore_db.tmp/ 或者 rm -rf metastore_db/
再重新初始化。
9、验证是否搭建成功
先执行hive
hive> create table a(id int);
OK
Time taken: 1.436 seconds
hive> select count(*) from a;
OK
0
如果建表能建,且查询没问题,则搭建成功。
四、远程模式的搭建
规划:
Linux001 :MySQL服务器
Linux002:metastore服务器
Linux003:Hive客户端
Linux004:Hive服务端
1、Linux001搭建MySQL步骤
搭建mysql
1、yum -y install mysql
2、chkconfig mysqld on && service mysqld start
3、mysql
4、use mysql;
5、grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
6、delete from user where host<>'%'; #####删除多余的会对权限造成影响的数据
7、flush privileges;
或者重启mysql服务。
2、Linux004搭建Hive服务端
1、tar /opt/source/apache-hive-2.3.4-bin.tar.gz -C ../apps
2、mv apache-hive-2.3.4-bin/ hive-2.3.4
3、vi + /etc/profile
export HIVE_HOME=/opt/apps/hive-2.3.4
export PATH=$PATH:$HIVE_HOME/bin
4、cd /opt/apps/hive-2.3.4/conf
5、cp hive-env.sh.template hive-env.sh && vi hive-env.sh
HADOOP_HOME=/opt/apps/hadoop-2.6.5
6、cp hive-default.xml.template hive-site.xml && vi hive-site.xml
删除configuration内部所有内容
<!-- Hive文件HDFS存放路径 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>??
</property>
<!-- hive和mysql是否在同一个节点 -->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!--mysql的数据库url-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://Linux001:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--连接mysql的驱动包-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--hive存放元数据的数据库的用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--hive存放元数据的数据库的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
7、将mysql连接驱动包“ mysql-connector-java-5.1.32-bin.jar ”放到hive家目录的lib文件夹下
8、初始化元信息
cd /opt/apps/hive-2.3.4/bin && ./schematool -dbType mysql -initSchema
如果失败的话:
mv metastore_db/ metastore_db.tmp/ 或者 rm -rf metastore_db/
再重新初始化。
9、验证是否搭建成功
先执行hive
hive> create table a(id int);
OK
Time taken: 1.436 seconds
hive> select count(*) from a;
OK
0
如果建表能建,且查询没问题,则搭建成功。
2、Linux002搭建metastore服务器
1、执行“Linux004搭建hive服务端”的前7步。
2、启动metastore服务器
hive --service metastore
注意:该命令会阻塞
3、Linux003搭建Hive客户端
1、执行“Linux004搭建hive服务端”的前5步。
2、cp hive-default.xml.template hive-site.xml && vi hive-site.xml
删除configuration内部所有内容
<!-- Hive文件HDFS存放路径 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>??
</property>
<!-- hive和mysql是否在同一个节点 -->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!--metastore服务器的url-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://Linux002:9083</value>
</property>
3、执行“Linux004搭建hive服务端”的第7步。
在这台机子上启动Hive前需要先启动Linux003上的metastore。