目录
3)下一步 ——第一个(For anyone who uses this computer(all users))
1.创建连接(确认metastore开启、hiveserver2开启)
以上我们就完成了hive的安装以及连接到DBeaver!!!
一、Hive是干什么的?
Linux Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据表,并提供类SQL查询功能。它支持多种数据格式,包括CSV、TSV、Parquet等,并且可以通过HiveQL语言进行数据查询和分析。
- 上次我们已经成功安装了mysql 下面跟着小编一起安装Hive吧!!!
二、安装Hive所具备的条件
- jdk安装
- hadoop安装以及集群的搭建
- mysql安装以及登录(上篇有详细配置哦)
- 最后安装Hive
三、安装Hive
(一) Hive的安装及环境变量配置
1.上传软件包
- 进入对应路径
cd /opt/softwares
- 点击新建文件传输(出现新的标签,直接把安装包拖进来)
- 查看结果
2.解压软件包(解压到对应文件目录)
tar -xf apache-hive-3.1.2-bin.tar.gz -C /opt/modules/
- 配置软连接
ln -s apache-hive-3.1.2-bin/ hive
3.配置环境变量(方便后面去操作)
vi /etc/profile
- 更新环境变量
4.避免jar包冲突
- 去相应的路径
cd /opt/modules/hive/lib/
- 更改名字
mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.bak
5.删除原来的jar包并上传新的jar包
- 删除
rm -f guava-19.0.jar
- 上传(还是原来的上传方法:新建文件传输)
- 查看结果
6.初始化元数据库
- 对应的文件目录下
schematool -dbType derby -initSchema
- 查看结果
(二)元数据配置
1.拷贝java.jar包
- 拷贝到lib路径
cp mysql-connector-java-5.1.27-bin.jar /opt/modules/hive/lib
- 查看结果
2.配置xml文件
- 在对应路径新建xml文件
vi 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://bigdata01:3306/metastore?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 连接的 password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</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>
<!-- Hive 默认在 HDFS 的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/modules/hive/warehouse</value>
</property>
<!-- 指定存储元数据要连接的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://bigdata01:9083</value>
</property>
<!-- 指定 hiveserver2 连接的 host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>bigdata02</value>
</property>
<!-- 指定 hiveserver2 连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
</configuration>
- 查看结果
3.登陆mysql初始化hive元数据库
mysql -uroot -p123456
create database metastore;
show databases;
- 退出
exit;
4.初始化元数据库
schematool -initSchema -dbType mysql -verbose
1.出现问题:
Table 'CTLGS' already exists (state=42S01,code=1050)
2.原因分析:
这里的问题应该是在连接的数据库中已经存在hive所需要的数据表,像metastore数据一样。
3.解决问题:
进入到要连接的数据库下面,查看是否有一个hive的database。如果有的话,直接删除掉hive数据库,然后再重新初始化hive就可以了。
- 在次检查问题(发现这里有01 但是我配置的是bigdata02)
- 进入配置文件
cd /opt/modules/hive/conf/
- 发现这里的主机名还未更改
- 更改后
- 再次初始化
schematool -initSchema -dbType mysql -verbose
- 查看结果
(三)Hive启动检测
1.编写启动脚本
cd /opt/modules/hive/bin
vi hiveservice.sh
#!/bin/bash
HIVE__LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]; then
mkdir -p $HIVE_LOG_DIR
fi
# 检查进程是否运行正常,参数1为进程名,参数2为进程端口
function check_process() {
pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
}
function hive_start() {
metapid=$(check_process HiveMetastore 9083)
cmd="nohup hive --service metastore > $HIVE_LOG_DIR/metastore.log 2>&1 &"
if [ -z "$metapid" ]; then
eval $cmd
else
echo "Metastore服务已启动"
fi
server2pid=$(check_process HiveServer2 10000)
cmd="nohup hive --service hiveserver2 > $HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
if [ -z "$server2pid" ]; then
eval $cmd
else
echo "HiveServer2服务已启动"
fi
}
else
echo "Metastore服务未启动"
fi
server2pid=$(check_process HiveServer2 10000)
if [ "$server2pid" ]; then
kill $server2pid
else
echo "HiveServer2服务未启动"
fi
}
case $1 in
"start")
hive_start
;;
"stop")
hive_stop
;;
"restart")
hive_stop
sleep 2
hive_start
;;
"status")
check_process HiveMetastore 9083 >/dev/null && echo "Metastore服务运行正常" || echo "Metastore服务运行异常"
check_process HiveServer2 10000 >/dev/null && echo "HiveServer2服务运行正常" || echo "HiveServer2服务运行异常"
;;
*)
echo "Invalid Args!"
echo 'Usage: '$(basename $0)' start|stop|restart|status'
;;
esac
2. 赋予权限
3.配置hive日志路径
mv hive-log4j2.properties.template hive-log4j2.properties
- 修改值路径
vi hive-log4j2.properties
- 将property.hive.log.dir的值修改:
property.hive.log.dir = /opt/modules/hive/logs
4.hive启动检测
- 对应路径
cd /opt/modules/hive/bin
- 脚本启动
hiveservice.sh start
1)出现问题:
/opt/modules/hive/bin/hiveservice.sh: line 101: syntax error: unexpected end of file
2)原因分析:
启动失败
3)解决问题:
- 检查hadoop集群是否启动
jps
- 启动hadoop集群
start-dfs.sh
start-yarn.sh
4)扩展:
- 为什么我能够在根目录下执行呢?原本的启动集群只能在指定路径下:
cd /opt/modules/hadoop/bin/
- 因为我在环境变量里面配置了路径
vi /etc/profile
:$HADOOP_HOME/sbin
- 这样就可以在任意目录下启动集群了(像查询jdk版本号一样)
5)重新启动hive
hiveservice.sh start
- 检查文件:指出第101行出问题了(因为里面根本没有行数,所以是复制错了,直接重新复制一遍)
- 清空文件内容
echo >hiveservice.sh
- 查看结果
- 编写文件内容
- 启动
hiveservice.sh start
./hiveserver2
- 复制xc02会话,输入命令
hive
show databases;
四、连接DBeaver
(一)DBeaver安装
1.去官网下载
2.安装
1)双击应用程序(出现安装向导)
2)点击下一步 ——>我接受
3)下一步 ——第一个(For anyone who uses this computer(all users))
4)下一步
5)选择安装位置
)
6)下一步 —— 安装
、(二) Dbeaver配置链接数据库
1.创建连接(确认metastore开启、hiveserver2开启)
- hiveserver2开启
2.新建apache hive数据库
- 新建
- 点击下一步(选择hive)
3.填写url地址
4.点击编辑驱动设置
- 选择库
- 删除以前的 上传现在的
- 这里的jar包在集群里面,需要我们去下载
- 找到hive目录下
cd /opt/modules/hive/jdbc
- 点击新建文件传输(因为小编用不起rz sz)
- get +文件名 (下载)
- 查看文件
- 上传jar包