# 大数据平台 hive 部署 *平台部署知识* 文章讲解了 hive 的安装与部署 需要 Hadoop 以及 MySQL。 ## 目录 [TOC] ## 前期准备 > 在这里我们需要将 hive 的包下载下来,这边我们使用的就是 hive 的 3.1.2 版本,各位小伙伴可以先下载这个版本的压缩包,另外还需要注意,hive 依赖 Hadoop 平台,它会将数据存储到 HDFS 中,计算任务运行在 YARN 资源调度集群,所以我们需要先参照 [《大数据平台中 Hadoop 部署》](https://www.lingyuzhao.top/?/linkController=/articleController&link=-12548773 "《大数据平台中 Hadoop 部署》") 文章来将 Hadoop 部署起来! hive官网:https://hive.apache.org/ ### 解压 hive 包 然后我们需要将 hive 解压到一个目录中,这里就是 hive 的安装目录了,下面是笔者解压之后的目录展示。 ``` root@liming-virtual-machine:/opt/software/apache-hive-3.1.2-bin# ll total 84 drwxr-xr-x 10 root root 4096 3月 14 2023 ./ drwxrwxrwx 13 root root 4096 2月 29 17:32 ../ drwxr-xr-x 3 root root 4096 3月 14 2023 bin/ drwxr-xr-x 2 root root 4096 3月 14 2023 binary-package-licenses/ drwxr-xr-x 2 root root 4096 3月 14 2023 conf/ drwxr-xr-x 4 root root 4096 3月 14 2023 examples/ drwxr-xr-x 7 root root 4096 3月 14 2023 hcatalog/ drwxr-xr-x 2 root root 4096 3月 14 2023 jdbc/ drwxr-xr-x 4 root root 16384 3月 14 2023 lib/ -rw-r--r-- 1 root staff 20798 8月 23 2019 LICENSE -rw-r--r-- 1 root staff 230 8月 23 2019 NOTICE -rw-r--r-- 1 root staff 2469 8月 23 2019 RELEASE_NOTES.txt drwxr-xr-x 4 root root 4096 3月 14 2023 scripts/ root@liming-virtual-machine:/opt/software/apache-hive-3.1.2-bin# ``` ### 配置 hive 的环境变量 我们需要打开 `/etc/profile` 文件并在文件的末尾追加下面的代码段这会配置好环境变量。 ``` # 开始编辑环境变量 vim /etc/profile # 下面是环境变量 export JAVA_HOME="/opt/software/jdk1.8.0_202" export HADOOP_HOME="/opt/software/hadoop-3.2.1" export HIVE_HOME="/opt/software/apache-hive-3.1.2-bin" export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HIVE_HOME}/bin:$PATH ``` ### 解决 jar 冲突 ``` # 解决日志冲突 mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak # 解决 HDFS 操作冲突 rm -rf ${HIVE_HOME}/lib/guava-19.0.jar cp ${HADOOP_HOME}/share/hadoop/common/lib/guava-27.0-jre.jar ${HIVE_HOME}/lib/ ``` ## 内嵌模式部署 > 本章节涉及的所有路径需要根据您设备的情况进行修改哦!! Hive 会将数据存储在 HDFS 中,会将元数据存储在数据库中,而在我们的入门测试阶段,可以直接将 hive 进行本地部署和使用,这样的操作就是让 hive 的元数据存储在 derby(hive 自带的元数据库) 中! ### 修改 hive-env.sh 文件 ``` # 修改 hive 的启动脚本文件 vim ./conf/hive-env.sh.template # 在 脚本文件中找到下面的类似的配置 解开 HIVE_CONF_DIR 和 HIVE_AUX_JARS_PATH 的注释 并根据需要进行配置 # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=/opt/software/apache-hive-3.1.2-bin/conf # Folder containing extra libraries required for hive compilation/execution can be controlled by: export HIVE_AUX_JARS_PATH=/opt/software/apache-hive-3.1.2-bin/lib ``` 操作之后保存 然后执行下面的命令 ``` # 为 hive-env 文件重命名 让其生效 mv ./conf/hive-env.sh.template ./conf/hive-env.sh ``` ### 初始化元数据库 使用 derby ``` root@liming-virtual-machine:/opt/software/apache-hive-3.1.2-bin# ./bin/schematool -initSchema -dbType derby Metastore connection URL: jdbc:derby:;databaseName=metastore_db;create=true Metastore Connection Driver : org.apache.derby.jdbc.EmbeddedDriver Metastore connection User: APP Starting metastore schema initialization to 3.1.0 Initialization script hive-schema-3.1.0.derby.sql Initialization script completed schemaTool completed ``` ### 启动 HDFS 和 hive 的客户端 ``` root@liming-virtual-machine:/opt/software/apache-hive-3.1.2-bin# /opt/software/hadoop-3.2.1/sbin/start-all.sh WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER. Starting namenodes on [liming141] Starting datanodes Starting secondary namenodes [liming141] Starting resourcemanager Starting nodemanagers root@liming-virtual-machine:/opt/software/apache-hive-3.1.2-bin# hive ``` ### 创建数据库并查询数据库  ## 本地+数据库 模式部署 如果我们使用数据库来存储所有的 hive 元数据,也就实现了最基础的部署架构,本地部署模式,本地部署下可以将元数据存储到单独的数据库中,能够有效的避免元数据量过大,无法存储的问题。 > 本章中出现的所有路径都需要按照您的设备来进行修改! ### 安装 MySQL 由于我们使用的是 乌班图 因此可以直接调用 `sudo apt-get update` 以及 `sudo apt-get install mysql-server` 命令来将 MySQL 安装进去,接下来就是安装好之后进入 mysql 的样子。 ``` root@liming-virtual-machine:~# mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu) Copyright (c) 2000, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> ``` ### 在 MySQL 中创建 hive 需要的用户和数据库 ``` # 创建好hive的元数据库 create database if not exists hive; # 创建一个用户hive 指定其密码为hive1234 CREATE USER 'hive'@'%' IDENTIFIED BY 'Hive@12341234'; # 赋予该用户针对 hive 库中表的所有权限 grant all on hive.* to 'hive'@'%'; # 查询用户表信息 select user, host from mysql.user; ``` ### 配置 hive 本地模式下部署,hive 需要依赖于MySQL这类服务器,所以我们需要告知hive 有关元数据库的一些信息,在这里就是我们配置好的示例。 #### 配置 hive-site.xml 您需要打开 hive-site.xml 并输入下面的配置项目。 ``` # 编辑 hive-site.xml vim /opt/software/apache-hive-3.1.2-bin/conf/hive-site.xml # 在文件中输入下面的配置 注意 IP 地址需要修改! <?xml version="1.0" encoding="UTF-8"?><!-- 配置有关Hive系统结构的一些设置 --> <configuration> <!-- 存储元数据mysql相关配置 注意IP地址,我们使用的是 本地 服务器 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://127.0.0.1:3306/hive</value> </property> <!-- 数据库连接驱动类路径 按照您的数据库驱动来选择 这里是 MySQL8.0 --> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <!-- 操作hive元数据库的用户名称与密码配置 --> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>Hive@12341234</value> </property> <!-- hive 的 metaStore 服务的地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://192.168.0.141:9083</value> </property> </configuration> ``` #### 配置 hive-env.sh 这个操作 和 [《内嵌模式部署》](#内嵌模式部署 "《内嵌模式部署》") 章节中是一样的,您可以查阅其中的 [《修改 hive-env.sh 文件》](#修改%20hive-env.sh%20文件 "《修改 hive-env.sh 文件》") 小节。 ### 装载MySQL驱动给 hive 您可以点击 [《mysql-connector-j-8.0.33.jar》](https://diskmirror.lingyuzhao.top//1/Binary/Article/Files/mysql-connector-j-8.0.33.jar) 来下载这个 jar 然后手动放到 `${HIVE_HOME}/lib` 目录中,当然也可以直接使用下面的命令来实现包的自动装载! ``` cd ${HIVE_HOME}/lib wget https://diskmirror.lingyuzhao.top//1/Binary/Article/Files/mysql-connector-j-8.0.33.jar ``` ### 初始化元数据库 ``` # 初始化元数据库 ${HIVE_HOME}/bin/schematool -initSchema -dbType mysql -verbose ``` ### 启动 metaStore 这是一个阻塞线程,因此需要单独终端启动,或者直接在命令结尾加 ` &`。 ``` root@liming-virtual-machine:~# hive --service metastore -p 9083 2024-03-08 15:32:00: Starting Hive Metastore Server ``` ### 启动 HDFS 还有 hive的客户端 ``` root@liming-virtual-machine:/opt/software/apache-hive-3.1.2-bin# /opt/software/hadoop-3.2.1/sbin/start-all.sh WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER. Starting namenodes on [liming141] Starting datanodes Starting secondary namenodes [liming141] Starting resourcemanager Starting nodemanagers root@liming-virtual-machine:/opt/software/apache-hive-3.1.2-bin# hive ``` ### HQL 创建数据库并测试 到这里 本地部署就成功了 元数据都是存储在 MySQL内的! ``` root@liming-virtual-machine:/opt/software/apache-hive-3.1.2-bin# hive Hive Session ID = 02bad037-43ec-4aa9-ad61-eaabe20abd3c Logging initialized using configuration in jar:file:/opt/software/apache-hive-3.1.2-bin/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases. Hive Session ID = e8686efd-c78b-45c9-b0c7-280481b9a3a0 hive> create database myTest; OK Time taken: 2.184 seconds hive> show databases; OK default mytest Time taken: 0.431 seconds, Fetched: 2 row(s) hive> ``` =未完待续= ------ ***操作记录*** 作者:[root](https://www.lingyuzhao.top//index.html?search=1 "root") 操作时间:2024-03-09 21:56:57 星期六 事件描述备注:保存/发布 中国 天津 [](如果不需要此记录可以手动删除,每次保存都会自动的追加记录)