hive安装

一、MySQL安装

hadoop1上安装:

  1. 将mysql的五个rpm包上传到/opt/apps目录
[root@hadoop1 mysql]# ll
总用量 253768
-rw-r--r-- 1 root root  45109364 39 12:17 mysql-community-client-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 root root    318768 39 12:17 mysql-community-common-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   4374364 39 12:17 mysql-community-libs-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   1353312 39 12:17 mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 208694824 39 12:17 mysql-community-server-5.7.28-1.el7.x86_64.rpm

  1. 检查当前节点上是否存在mysql安装包,存在则删除:
[root@hadoop1 mysql]# rpm -qa | grep mysql
[root@hadoop1 mysql]# 

[root@hadoop1 mysql]# rm mariadb-libs-5.5.56-2.el7.x86_64
rm: 无法删除"mariadb-libs-5.5.56-2.el7.x86_64": 没有那个文件或目录
[root@hadoop1 mysql]# rpm -e --nodeps mysql-community-libs-compat-*
错误:未安装软件包 mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm 
[root@hadoop1 mysql]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
[root@hadoop1 mysql]# 

3、检查并删除老版本mysql的开发头文件和库

[root@hadoop1 mysql]# find / -iname 'mysql*'
/etc/selinux/targeted/active/modules/100/mysql
/usr/lib/firewalld/services/mysql.xml

注意:卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除

  1. 安装依赖包:net-tools libaio
yum install -y net-tools libaio
  1. 安装mysql(有顺序要求)
   1:mysql-community-common-5.7.28-1.e
   2:mysql-community-libs-5.7.28-1.el7
   3:mysql-community-client-5.7.28-1.e
   4:mysql-community-server-5.7.28-1.e
   5:mysql-community-libs-compat-5.7.2

执行这个,自动识别安装顺序:

[root@hadoop1 mysql]# rpm -ivh mysql-community-*
警告:mysql-community-client-5.7.28-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-common-5.7.28-1.e################################# [ 20%]
   2:mysql-community-libs-5.7.28-1.el7################################# [ 40%]
   3:mysql-community-client-5.7.28-1.e################################# [ 60%]
   4:mysql-community-server-5.7.28-1.e################################# [ 80%]
   5:mysql-community-libs-compat-5.7.2################################# [100%]
[root@hadoop1 mysql]# 

  1. 修改/etc/my.cnf文件,设置数据库的编码方式:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8

  1. 初始化数据库
mysqld --initialize --user=mysql

如果出现错误,请查看/etc/my.cnf文件中指定的错误log日志的文件:log- error=/var/log/mysqld.log

  1. 找到随机密码: 在/var/log/mysqld.log中有一行:

A temporary password is generated for root@localhost,后面就是随机密码

# mysql -uroot -p"yAe7QGVJ;HlR"使用随机密码登录系统

  1. 启动服务:systemctl start mysqld

  2. 登录mysql数据库:

mysql -uroot -p
  1. 修改默认密码
mysql> set password for 'root'@'localhost'=password('root');
Query OK, 0 rows affected, 1 warning (0.01 sec)

  1. 查看编码方式:
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

  1. 给root设置远程登录权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> 

二、hive-直连mysql

  • 把apache-hive-3.1.2-bin.tar.gz上传到hadoop2的/opt/apps目录下。
[root@hadoop2 software]# ll
总用量 305520
-rw-r--r--  1 root root 312850286 39 22:21 apache-hive-3.1.2-bin.tar.gz
drwxr-xr-x 10 1000 1000       161 38 13:28 hadoop-3.1.3
drwxr-xr-x  7   10  143       245 74 2019 jdk1.8.0_221
  • 解压apache-hive-3.1.2-bin.tar.gz到/opt/software/目录下面
[root@hadoop2 software]# tar -xvzf apache-hive-3.1.2-bin.tar.gz 

  • 修改apache-hive-3.1.2-bin.tar.gz的名称为hive-3.1.2
[root@hadoop2 software]# mv apache-hive-3.1.2-bin hive-3.1.2

  • 修改/etc/profile,添加环境变量
[root@hadoop2 software]# vim /etc/profile
#添加内容
# hive环境变量配置
exprot HIVE_HOME=/opt/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin
#使环境变量生效
[root@hadoop2 software]# source /etc/profile

  • 解决日志Jar包冲突
[root@hadoop2 software]# mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak_up2021
[root@hadoop2 software]# 

  • 将MySQL的JDBC驱动拷贝到Hive的lib目录下
[root@hadoop2 software]# cp mysql-connector-java-5.1.37.jar $HIVE_HOME/lib
[root@hadoop2 software]# ls $HIVE_HOME/lib |grep mysql*
mysql-connector-java-5.1.37.jar
[root@hadoop2 software]# $HIVE_HOME/lib

  • 配置Metastore到MySql

修改hive-site.xml

vim $HIVE_HOME/conf/hive-site.xml

添加如下配置内容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc连接的URL设置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop1:3306/hive?useSSL=false</value>
</property>
<!-- jdbc连接的Driver类设置-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 指定jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- 指定jdbc连接mysql的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- Hive元数据存储的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!-- 元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
  • 在hadoop1上mysql数据库中创建数据库实例hive
[root@node1 ~]# mysql -uroot -p123456
mysql> create database hive;
Query OK, 1 row affected (0.00 sec)
mysql> use hive
Database changed
mysql> show tables;
Empty set (0.00 sec) # 神马表都没有,根本没有hive的元数据
mysql> quit;
Bye

  • 在hadoop2上初始化hive的元数据到mysql数据库的hive实例下
schematool -initSchema -dbType mysql -verbose
  • 在hadoop1的mysql数据库中查看hive实例下表,会发现多了74张表。
mysql> use hive;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> show tables;
+-------------------------------+
| Tables_in_hive                |
+-------------------------------+
| AUX_TABLE                     |
| BUCKETING_COLS                |
| CDS                           |
| COLUMNS_V2                    |
| COMPACTION_QUEUE              |

+-------------------------------+
74 rows in set (0.00 sec)


  • 直连数据库式启动和使用
  1. 启动hadoop集群,在hadoop1上执行startha.sh,如果有namenode没有启动起来,只需要在对应的 节点上执行命令:hdfs --daemon start namenode
  2. 在hadoop2上启动hive:
hive

3.使用hive,创建表:

hive> show databases;
OK
default
Time taken: 0.923 seconds, Fetched: 1 row(s)
hive> show tables;
OK
Time taken: 0.081 seconds
hive> create table tb_test(id int);
OK
Time taken: 1.001 seconds
hive> show tables;
OK
tb_test
Time taken: 0.087 seconds, Fetched: 1 row(s)
hive> create table test(id int,age int);
OK
Time taken: 0.123 seconds
hive> show tables;
OK
tb_test
test

4.访问active的namenode,查看文件列表

5.表在hdfs也有对应的目录,但是目录下没有数据。

6.向test表插入数据

7.在hadoop1中连接上mysql查看表中的数据

mysql> use hive;
Database changed
mysql> show tables;
+-------------------------------+
| Tables_in_hive |
+-------------------------------+
......
| COLUMNS_V2 | 保存表中列的数据
......
| DBS | 保存的是数据库实例
......
| TBLS | 保存的表数据

8.查看DBS表中的数据:

mysql> select * from DBS;
+-------+-----------------------+--------------------------------------+----
-----+------------+------------+-----------+
| DB_ID | DESC | DB_LOCATION_URI |
NAME | OWNER_NAME | OWNER_TYPE | CTLG_NAME |
+-------+-----------------------+--------------------------------------+----
-----+------------+------------+-----------+
| 1 | Default Hive database | hdfs://mycluster/user/hive/warehouse |
default | public | ROLE | hive |

9.查看TBLS表中数据:

mysql> select * from TBLS;
+--------+-------------+-------+------------------+-------+------------+----
-------+-------+----------+---------------+--------------------+------------
--------+--------------------+
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER | OWNER_TYPE |
RETENTION | SD_ID | TBL_NAME | TBL_TYPE | VIEW_EXPANDED_TEXT |
VIEW_ORIGINAL_TEXT | IS_REWRITE_ENABLED |
+--------+-------------+-------+------------------+-------+------------+----
-------+-------+----------+---------------+--------------------+------------
--------+--------------------+
| 1 | 1636378648 | 1 | 0 | root | USER |
0 | 1 | tb_test | MANAGED_TABLE | NULL | NULL
| |
| 2 | 1636378679 | 1 | 0 | root | USER |
0 | 2 | test | MANAGED_TABLE | NULL | NULL
| |
+--------+-------------+-------+------------------+-------+------------+----
-------+-------+----------+---------------+--------------------+------------
--------+--------------------+

10.查看表 COLUMNS_V2中的数据:

mysql> select * from COLUMNS_V2;
#表id 描述 列名 类型 顺序
+-------+---------+-------------+-----------+-------------+
| CD_ID | COMMENT | COLUMN_NAME | TYPE_NAME | INTEGER_IDX |
+-------+---------+-------------+-----------+-------------+
| 1 | NULL | id | int | 0 |
| 2 | NULL | age | int | 1 |
| 2 | NULL | id | int | 0 |
+-------+---------+-------------+-----------+-------------+

  1. 在hadoop2上hive中查看表中的数据:
hive> select * from tb_test;
OK
Time taken: 0.443 seconds
hive> select * from test;
OK
1 1
Time taken: 0.281 seconds, Fetched: 1 row(s)

三、hive-远程服务模式安装

  • 从hadoop2上将/opt/hive-3.1.2拷贝到hadoop3和hadoop4上
[root@node2 ~]# scp -r /opt/hive-3.1.2/ hadoop3:/opt
[root@node2 ~]# scp -r /opt/hive-3.1.2/ hadoop4:/opt

  • 配置hadoop3上hive的环境变量:
[root@hadoop3 conf]# vim /etc/profile
#在文件的最下位置添加如下内容
# hive环境变量配置
export HIVE_HOME=/opt/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin
[root@node3 conf]# source /etc/profile

  • 配置hadoop4上hive的环境变量:
[root@hadoop4 conf]# vim /etc/profile
#在文件的最下位置添加如下内容
# hive环境变量配置
export HIVE_HOME=/opt/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin
[root@node3 conf]# source /etc/profile

  • 修改hadoop3上的hive_site.xml文件
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc连接的URL设置 将hive改为hive_remote-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop1:3306/hive_remote?useSSL=false</value>
</property>
<!-- jdbc连接的Driver类设置-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 指定jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- 指定jdbc连接mysql的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<!-- Hive默认在HDFS的工作目录 将hive改为hive_remote -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!-- Hive元数据存储的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!-- 元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>

  • 在hadoop1的mysql中创建一个数据库实例:hive_remote
mysql> create database hive_remote;
Query OK, 1 row affected (0.00 sec)

mysql> use hive_remote;
Database changed
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hive               |
| hive_remote        |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

  • 在hadoop3上初始化hive的元数据到mysql数据库的hive_remote实例下
schematool -initSchema -dbType mysql -verbose

  • 在hadoop1的mysql数据库中查看hive_remote实例下表,会发现多了74张表。到目前位置这个和直 连数据的方式是一样,hive的服务器和客户端都在hadoop3上,没有启动Metastore或hiveserver2, 通过jdbc也无法访问。
  • 在hadoop3上查看被占用的端口号:
netstat -nlpt

  • 在hadoop3上启动metastore服务
[root@hadoop3 ~]# hive --service metastore &
[root@hadoop3 conf]# ps aux | grep hive
root       1835  6.6 14.9 2035404 303856 pts/0  Sl   23:21   0:17 /opt/software/jdk1.8.0_221/bin/java -Dproc_jar -Dproc_metastore -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/opt/software/hive-3.1.2/conf/parquet-logging.properties -Dyarn.log.dir=/opt/software/hadoop-3.1.3/logs -Dyarn.log.file=hadoop.log -Dyarn.home.dir=/opt/software/hadoop-3.1.3 -Dyarn.root.logger=INFO,console -Djava.library.path=/opt/software/hadoop-3.1.3/lib/native -Xmx256m -Dhadoop.log.dir=/opt/software/hadoop-3.1.3/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/opt/software/hadoop-3.1.3 -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /opt/software/hive-3.1.2/lib/hive-metastore-3.1.2.jar org.apache.hadoop.hive.metastore.HiveMetaStore
root       1962  0.0  0.0 112720   984 pts/0    S+   23:26   0:00 grep --color=auto hive
[root@hadoop3 conf]# 

12.修改hadoop4上的hive-site.xml配置文件:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!-- 指定hive服务器端连接地址 -->
<property>
<name>metastore.thrift.uris</name>
<value>thrift://hadoop3:9083</value>
</property>
<!-- Hive元数据存储的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!-- 元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>

  1. hadoop4上hive客户端启动hive:

    hive

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值