Hive的安装和更为Hive的数据库为MySQL,使用JDBC连接Hive

版权声明:Please make the source marked https://blog.csdn.net/qq_31807385/article/details/84645331

目录

前言:

Hive的安装:

更为Hive的数据库为MySQL:

多窗口测试:

HiveJDBC访问:


前言:

首先Hive会将数据存储在HDFS上,Hive的本质是将HQL转化成MapReduce,Hive还需要YARN进行资源调度,所以安装Hive的前提是,你已经搭建好了Hadoop集群,关于Hadoop集群的搭建,请参见下面的这篇文章:

15分钟,搭建Hadoop集群

Hive是运行在Hadoop的集群上的,我们并不需要搭建Hvie集群,只要一台机器安装Hive即可。下面开始Hive的安装:

Hive的安装:

1,去官网下载一下hive的jar包,拖到linux的software目录下:将其解压到module目录下
[isea@hadoop101 software]$ ll
总用量 575068
-rw-rw-r--. 1 isea isea  92834839 11月 30 13:35 apache-hive-1.2.1-bin.tar.gz
-rw-rw-r--. 1 isea isea 197657687 11月 14 17:55 hadoop-2.7.2.tar.gz
-rw-rw-r--. 1 isea isea 185515842 11月 14 17:55 jdk-8u144-linux-x64.tar.gz
-rw-rw-r--. 1 isea isea  77807942 11月 30 13:35 mysql-libs.zip
-rw-rw-r--. 1 isea isea  35042811 11月 28 16:39 zookeeper-3.4.10.tar.gz
[isea@hadoop101 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/



2,将apache-hive-1.2.1-bin目录修改为hive
[isea@hadoop101 module]$ ll
总用量 20
drwxrwxr-x.  8 isea isea 4096 11月 30 13:39 apache-hive-1.2.1-bin
drwxrwxr-x.  3 isea isea 4096 11月 28 15:05 HA
drwxr-xr-x. 11 isea isea 4096 11月 28 15:03 hadoop-2.7.2
drwxr-xr-x.  8 isea isea 4096 7月  22 2017 jdk1.8.0_144
drwxr-xr-x. 11 isea isea 4096 11月 28 17:04 zookeeper-3.4.10
[isea@hadoop101 module]$ mv apache-hive-1.2.1-bin/ hive
[isea@hadoop101 module]$ ll
总用量 20
drwxrwxr-x.  3 isea isea 4096 11月 28 15:05 HA
drwxr-xr-x. 11 isea isea 4096 11月 28 15:03 hadoop-2.7.2
drwxrwxr-x.  8 isea isea 4096 11月 30 13:39 hive
drwxr-xr-x.  8 isea isea 4096 7月  22 2017 jdk1.8.0_144
drwxr-xr-x. 11 isea isea 4096 11月 28 17:04 zookeeper-3.4.10


3,修改conf目录下的hive-env.sh.template 为hive-env.sh,并配置该文件如下:
[isea@hadoop101 conf]$ cp hive-env.sh.template hive-env.sh
# HADOOP_HOME=${bin}/../../hadoop
HADOOP_HOME=/opt/module/hadoop-2.7.2

# Hive Configuration Directory can be controlled by:
# export HIVE_CONF_DIR=
export HIVE_CONF_DIR=/opt/module/hive/conf


4,群起集群
[isea@hadoop101 conf]$ start-dfs.sh 
[isea@hadoop102 ~]$ start-yarn.sh 

5,启动hive
[isea@hadoop101 hive]$ bin/hive

Logging initialized using configuration in jar:file:/opt/module/hive/lib/hive-common-1.2.1.jar!/hive-log4j.properties
hive> 

如此一来,我们就完成了hive的安装。

更为Hive的数据库为MySQL:

Hive的Metastore默认存储在自带的derby数据库中,该数据并不支持并发的操作,不能多个客户端同时访问Hive,我们现在将该数据库更换为MySQL:

1,检查该节点上是否安装了mysql 如果安装了将其卸载:
[isea@hadoop101 software]$ rpm -qa|grep mysql
mysql-libs-5.1.73-7.el6.x86_64
[isea@hadoop101 software]$ sudo rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
[isea@hadoop101 software]$ unzip mysql-libs.zip 
Archive:  mysql-libs.zip
   creating: mysql-libs/
  inflating: mysql-libs/MySQL-client-5.6.24-1.el6.x86_64.rpm  
  inflating: mysql-libs/mysql-connector-java-5.1.27.tar.gz  
  inflating: mysql-libs/MySQL-server-5.6.24-1.el6.x86_64.rpm 


2,将实现准备好的mysql(去官网下载)拖到linux下的software目录下,并将其解压在当前的目录,并安装MySQL服务器
[isea@hadoop101 software]$ cd mysql-libs
[isea@hadoop101 mysql-libs]$ ll
总用量 76048
-rw-rw-r--. 1 isea isea 18509960 3月  26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-rw-r--. 1 isea isea  3575135 12月  1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-rw-r--. 1 isea isea 55782196 3月  26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm
[isea@hadoop101 mysql-libs]$ sudo rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm 

注意下面的信息:
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
查看该问价下面的内容,一会使用这个密码登录root的mysql
[isea@hadoop101 mysql-libs]$ sudo cat /root/.mysql_secret
# The random password set for the root user at Fri Nov 30 14:00:19 2018 (local time): 6bF9JBHldRZTdq8P

3,启动mysql服务器,并开始安装客户端
[isea@hadoop101 mysql-libs]$ sudo service mysql start
Starting MySQL.                                            [确定]
[isea@hadoop101 mysql-libs]$sudo rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm 

4,使用临时密码登录,设置新密码之后,退出之后在重新登录:
[isea@hadoop101 mysql-libs]$ mysql -uroot -p6bF9JBHldRZTdq8P

mysql> set password = password('isea');
Query OK, 0 rows affected (0.06 sec)

mysql> exit
Bye
[isea@hadoop101 mysql-libs]$ mysql -uroot -pisea
mysql> 

5,配置只要是用户+密码,在任何机器上都能登录MySQL数据库
mysql> use mysql
Database changed
mysql> select user,host,password from user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *B1B27D3388A6C6CEC082FC5FFB8182B7040BEA70 |
| root | hadoop101 | *3E63365D452A91A80F85B144900D0300B5115268 |
| root | 127.0.0.1 | *3E63365D452A91A80F85B144900D0300B5115268 |
| root | ::1       | *3E63365D452A91A80F85B144900D0300B5115268 |
+------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)

mysql> update user set host='%' where host='localhost';

mysql> delete from user where Host='hadoop101';
mysql> delete from user where Host='127.0.0.1';
mysql> delete from user where Host='::1';

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

6,将Hive的元数据配置到Mysql
将驱动解压到当前的目录,cd进入解压之后的目录,将jar包拷贝到hive的lib目录下
[isea@hadoop101 mysql-libs]$ tar -zxvf mysql-connector-java-5.1.27.tar.gz 
[isea@hadoop101 mysql-libs]$ cd mysql-connector-java-5.1.27
[isea@hadoop101 mysql-connector-java-5.1.27]$ ll
总用量 1272
-rw-r--r--. 1 isea isea  47173 10月 24 2013 build.xml
-rw-r--r--. 1 isea isea 222520 10月 24 2013 CHANGES
-rw-r--r--. 1 isea isea  18122 10月 24 2013 COPYING
drwxr-xr-x. 2 isea isea   4096 11月 30 14:19 docs
-rw-r--r--. 1 isea isea 872303 10月 24 2013 mysql-connector-java-5.1.27-bin.jar
-rw-r--r--. 1 isea isea  61423 10月 24 2013 README
-rw-r--r--. 1 isea isea  63674 10月 24 2013 README.txt
drwxr-xr-x. 7 isea isea   4096 10月 24 2013 src
[isea@hadoop101 mysql-connector-java-5.1.27]$ cp mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib/

7,在hive的conf目录下创建一个hive-site.xml,添加内容如下:
[isea@hadoop101 conf]$ cat 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://hadoop101:3306/metastore?createDatabaseIfNotExist=true</value>
	  <description>JDBC connect string for a JDBC metastore</description>
	</property>

	<property>
	  <name>javax.jdo.option.ConnectionDriverName</name>
	  <value>com.mysql.jdbc.Driver</value>
	  <description>Driver class name for a JDBC metastore</description>
	</property>

	<property>
	  <name>javax.jdo.option.ConnectionUserName</name>
	  <value>root</value>
	  <description>username to use against metastore database</description>
	</property>

	<property>
	  <name>javax.jdo.option.ConnectionPassword</name>
	  <value>isea</value>
	  <description>password to use against metastore database</description>
	</property>
</configuration>

多窗口测试:

此时连接MySQL数据库的话,会发现了多了一个Metastore数据库: 

[isea@hadoop108 ~]$ mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[isea@hadoop108 ~]$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| metastore          |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.05 sec)

使用两个窗口连接Hive: 

以上就是我们使用CLI的方式来连接Hive,下面我们介绍一下使用JDBC的方式来访问Hive:

HiveJDBC访问:

1,开启hiveserver2 在 后台的服务
[isea@hadoop108 ~]$ cd /opt/module/hive/
[isea@hadoop108 hive]$ bin/hiveserver2 &
[1] 6171

2,启动beeline,并使用beeline来连接hiveserver2 :
[isea@hadoop108 hive]$ bin/beeline 
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://hadoop108:10000
Connecting to jdbc:hive2://hadoop108:10000
Enter username for jdbc:hive2://hadoop108:10000: isea
Enter password for jdbc:hive2://hadoop108:10000: 
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://hadoop108:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
+----------------+--+
1 row selected (0.3 seconds)

以上我们就完成了使用JDBC 连接了Hive。

猜你喜欢

转载自blog.csdn.net/qq_31807385/article/details/84645331