大数据三大组件 (Hadoop, Hive, Spark) 之 Hive 远程模式 (Remote Mode) 部署
前言本文是大数据三大组件安装系列的第二篇将详细介绍如何在已搭建好 Hadoop 伪分布式的基础上安装和配置Hive 3.1.2。Hive 是构建在 Hadoop 之上的数据仓库工具它提供类 SQL 的查询语言HiveQL使得开发者可以用熟悉的 SQL 语法来分析存储在 HDFS 中的大规模数据。本系列所需安装包百度网盘下载提取码me15前置条件请确保已完成 Hadoop 伪分布式安装并且 HDFS 可以正常启动。环境与版本信息组件版本说明Hive3.1.2数据仓库MySQL5.7Hive 元数据存储后端MySQL Connector5.1.40JDBC 驱动Hadoop3.1.3已安装上一篇JDK1.8已安装上一篇一、安装 Hive1.1 解压并配置目录将 Hive 安装包解压到/usr/local目录并重命名、设置权限# 解压到 /usr/local sudo tar -zxvf ./apache-hive-3.1.2-bin.tar.gz -C /usr/local # 重命名为 hive cd /usr/local/ sudo mv apache-hive-3.1.2-bin hive # 修改文件权限替换为你的用户名 sudo chown -R hadoop:hadoop hive1.2 准备配置文件进入 Hive 的配置目录将模板文件重命名为正式配置文件cd /usr/local/hive/conf mv hive-default.xml.template hive-default.xml二、配置 Hive编辑hive-default.xml文件将其内容替换为以下配置。配置按功能模块分组每个属性都附有中文说明vim /usr/local/hive/conf/hive-default.xml完整配置内容如下?xml version1.0 encodingUTF-8 standaloneno? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration !-- JDBC 连接配置 -- property namejavax.jdo.option.ConnectionURL/name valuejdbc:mysql://localhost:3306/hive?createDatabaseIfNotExisttrueamp;userSSLfalse/value descriptionJDBC 连接字符串用于连接 MySQL 元数据库/description /property property namejavax.jdo.option.ConnectionDriverName/name valuecom.mysql.jdbc.Driver/value descriptionJDBC 驱动类名/description /property property namejavax.jdo.option.ConnectionUserName/name valuehive/value description连接元数据库的用户名/description /property property namejavax.jdo.option.ConnectionPassword/name valuehive/value description连接元数据库的密码/description /property !-- 元数据仓库配置 -- property namehive.metastore.warehouse.dir/name value/usr/local/hadoop/tmp/dfs/data/value descriptionHive 数据仓库在 HDFS 上的默认存储路径/description /property property namehive.metastore.schema.verification/name valuefalse/value description关闭元数据 Schema 版本验证开发环境建议关闭/description /property property namehive.metastore.event.db.notification.api.auth/name valuefalse/value description关闭元数据事件通知的身份验证/description /property property namehive.metastore.uris/name valuethrift://localhost:9083/value descriptionMetastore 服务地址Thrift 协议/description /property property namemetastore.catalog.default/name valuehive/value description默认的 Catalog 名称/description /property property namedatanucleus.schema.autoCreateAll/name valuetrue/value description自动创建元数据表结构/description /property !-- CLI 显示配置 -- property namehive.cli.print.header/name valuetrue/value description查询结果显示列名表头/description /property property namehive.cli.print.current.db/name valuetrue/value description命令行提示符中显示当前数据库名/description /property !-- 执行引擎配置 -- property namehive.execution.engine/name valuemr/value description执行引擎默认 MapReduce后续可切换为 Spark/description /property property namehive.spark.client.connect.timeout/name value300000ms/value descriptionSpark 客户端连接超时时间/description /property property namehive.spark.client.server.connect.timeout/name value300000ms/value descriptionSpark 服务端连接超时时间/description /property !-- HiveServer2 远程连接配置 -- property namehive.server2.thrift.port/name value10000/value descriptionHiveServer2 Thrift 服务端口/description /property property namehive.server2.thrift.http.port/name value10001/value descriptionHiveServer2 HTTP 传输端口/description /property property namehive.server2.thrift.bind.host/name value0.0.0.0/value description绑定地址设为 0.0.0.0 以允许远程连接/description /property property namehive.server2.thrift.client.user/name valuehadoop/value descriptionThrift 客户端默认用户名/description /property property namehive.server2.thrift.client.password/name value123456/value descriptionThrift 客户端默认密码/description /property !-- 事务与高级特性 -- property namehive.support.concurrency/name valuetrue/value description启用并发支持/description /property property namehive.enforce.bucketing/name valuetrue/value description强制执行分桶操作/description /property property namehive.exec.dynamic.partition.mode/name valuenonstrict/value description动态分区模式设为非严格允许全动态分区/description /property property namehive.txn.manager/name valueorg.apache.hadoop.hive.ql.lockmgr.DbTxnManager/value description事务管理器支持 ACID 操作/description /property property namehive.compactor.initiator.on/name valuetrue/value description启用压缩器配合 ACID 事务使用/description /property property namehive.compactor.worker.threads/name value1/value description压缩器工作线程数/description /property property namehive.metastore.disallow.incompatible.col.type.changes/name valuefalse/value description允许不兼容的列类型变更/description /property /configuration三、安装 MySQL 并配置元数据库3.1 安装 MySQLHive 默认使用 Derby 作为元数据库但 Derby 不支持多会话访问。生产和开发环境推荐使用 MySQL 替代# 更新软件源 sudo apt-get update # 安装 MySQL Server sudo apt-get install mysql-server3.2 部署 MySQL JDBC 驱动Hive 通过 JDBC 连接 MySQL需要将驱动 jar 包放入 Hive 的lib目录# 解压驱动包 tar -zxvf mysql-connector-java-5.1.40.tar.gz # 将 jar 文件复制到 Hive 的 lib 目录 cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib/3.3 创建 Hive 元数据库并授权登录 MySQL创建 Hive 专用的数据库和用户# 登录 MySQL mysql -u root -p在 MySQL 命令行中依次执行-- 创建 hive 元数据库 CREATE DATABASE hive; -- 创建 hive 用户并授权密码与 hive-default.xml 中配置的一致 GRANT ALL ON *.* TO hivelocalhost IDENTIFIED BY hive; -- 刷新权限 FLUSH PRIVILEGES;四、初始化与启动4.1 初始化元数据 Schema⚠️重要首次启动 Hive 前必须先初始化元数据库的表结构否则会报MissingTableException错误。cd /usr/local/hive ./bin/schematool -dbType mysql -initSchema4.2 启动 Hadoop HDFSHive 依赖 HDFS 存储数据启动 Hive 前需确保 HDFS 已运行cd /usr/local/hadoop ./sbin/start-dfs.sh4.3 启动 Hive CLIcd /usr/local/hive ./bin/hive如果成功进入hive命令提示符说明 Hive 安装成功。4.4 启动 HiveServer2远程连接如果需要通过 JDBC 工具如 DataGrip、DBeaver远程连接 Hive还需要启动 Metastore 服务和 HiveServer2# 启动 Metastore 服务后台运行 nohup hive --service metastore # 启动 HiveServer2后台运行 nohup hive --service hiveserver2 验证 HiveServer2 是否启动成功# 检查 10000 端口是否在监听 netstat -ntulp | grep 10000通过 Beeline 客户端测试连接用户名和密码可留空直接回车beeline !connect jdbc:hive2://localhost:10000五、常见错误与解决方案错误信息原因解决方法NoSuchMethodError: com.google.common.base.Preconditions.checkArgumentHive 和 Hadoop 依赖的guava.jar版本不一致分别查看hadoop/share/hadoop/common/lib/和hive/lib/下的 guava 版本删除低版本保留高版本并复制到两处MissingTableException: Required table missing: VERSION元数据库未初始化执行./bin/schematool -dbType mysql -initSchema总结本文在 Hadoop 伪分布式的基础上完成了 Hive 3.1.2 的安装与配置核心步骤如下安装 Hive解压 重命名 设置权限配置 Hive编辑hive-default.xml配置 JDBC 连接、元数据仓库、HiveServer2 等安装 MySQL作为元数据存储后端创建数据库并授权初始化与启动初始化 Schema → 启动 HDFS → 启动 Hive远程连接启动 Metastore HiveServer2通过 Beeline 或 JDBC 工具连接上一篇大数据三大组件安装之 Hadoop 伪分布式下一篇大数据三大组件安装之 Spark 伪分布式如果在搭建过程中遇到问题欢迎在评论区留言交流