Apache Hive 安装与配置的详细教程

news2024/12/22 23:28:47

 1. Hive简介

      Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。

2. Hive体系结构

2.1 用户接口

    用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 Cli,Cli 启动的时候,会同时启动一个 hive 副本。Client 是 hive 的客户端,用户连接至 hive Server。在启动 Client 模式的时候,需要指出 hive Server 所在节点,并且在该节点启动 hive Server。 WUI 是通过浏览器访问 hive。

2.2 元数据存储

    hive 将元数据存储在数据库中,如 mysql、derby。hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

2.3 解释器、编译器、优化器、执行器

      解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行。

2.4 Hadoop

hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(不包含 * 的查询,比如 select * from tbl 不会生成 MapReduce 任务)。

2.5 架构图

3. Hive下载与安装

3.1 安装前的准备工作

3.1.1 Hadoop的安装与配置

3.1.2 MySQL的安装与配置

3.2 从hive官网下载hive的安装包

3.2.1 如下安装包(apache-hive-3.1.3-bin.tar.gz)

3.2.2 将hive安装包上传到 /opt 目录下

3.3 将hive安装文件解压到/usr/local/software 目录下,并重命名未 hive

tar -zxvf /opt/apache-hive-3.1.3-bin.tar.gz -C /usr/local/software/

切换到 /usr/local/software/目录下,执行以下命令

mv apache-hive-3.1.3-bin hive

4. Hive 配置

4.1 配置文件

切换到/usr/local/software/hive/conf 目录下,赋值两个核心配置文件

cp hive-env.sh.template  hive-env.sh
cp hive-default.xml.template  hive-site.xml

4.2 配置 hive-env.sh 文件

 主要配置 hadoop的安装目录与hive中conf的目录,如下

 vim hive-env.sh

# hadoop 安装路径
export HADOOP_HOME=/usr/local/software/hadoop
# hive 配置文件路径
export HIVE_CONF_DIR=/usr/local/software/hive

4.3 配置 hive-site.xml 文件

4.3.1 在此文件中配置数据库配置信息,将如下内容直接添加到hive-site.xml文件末尾即可

  备注:此文件有6000多行,可以直接输入命令 G ,直接切换到文件末尾

    <!-- 记录HIve中的元数据信息  记录在mysql中 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop101:3306/hive?useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=UTF8&amp;useSSL=false&amp;serverTimeZone=GMT</value>
    </property>
 
    <!-- jdbc mysql驱动 -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
 
    <!-- mysql的用户名和密码 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>laoma</value>
    </property>
    <!-- 日志目录 -->
    <property>
        <name>hive.querylog.location</name>
        <value>/user/hive/log</value>
    </property>
 
    <!-- 设置metastore的节点信息 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop101:9083</value>
    </property>
 
    <!-- 客户端远程连接的端口 -->
    <property> 
        <name>hive.server2.thrift.port</name> 
        <value>10000</value>
    </property>
    <property> 
        <name>hive.server2.thrift.bind.host</name> 
        <value>0.0.0.0</value>
    </property>
    <property>
        <name>hive.server2.webui.host</name>
        <value>0.0.0.0</value>
    </property>
 
    <!-- hive服务的页面的端口 -->
    <property>
        <name>hive.server2.webui.port</name>
        <value>10002</value>
    </property>

4.3.2 hive-site.xml 内部需要修改三个内容

 备注:一定要在文件中找到如下三个内容进行修改

hive.querylog.location
hive.exec.local.scratchdir
hive.downloaded.resources.dir

 由于这三个属性对应的内容都使用到了相对路径,在使用的使用是有问题的,因此将三个属性对应的内容改为绝对路径,如下

  <property>
    <name>hive.querylog.location</name>
    <value>/usr/local/sofeware/hive/log</value>
    <description>Location of Hive run time structured log file</description>
  </property>  
<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/usr/local/software/hive/local</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/usr/local/software/hive/resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>

4.3.3 hive-site.xml 中特殊符号修改

hive-site.xml配置文件中,3215行(见报错记录第二行)有特殊字符:&#8

进入hive-site.xml文件,跳转到对应行,删除里面的 &#8 特殊字符即可

跳转到指定行的命令:3215G

4.4 Hive 依赖包的修改与更新

4.4.1 删除原有的 protobuf-java-2.5.0.jar  文件

4.4.2 更新如下两个依赖包,上传到 hive/lib目录下

4.4.3 删除 hive/lib目录中的 guava-19.0.jar

  拷贝hadoop/share/hadoop/common/lib目录中的 guava-27.0-jre.jar 到 hive/lib 目录

4.5 环境变量配置

vim /etc/profile.d/my_env.sh

export HIVE_HOME=/usr/local/software/hive
export HCATALOG_HOME=/usr/local/software/hive/hcatalog
 
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HCATALOG_HOME/bin:$HCATALOG_HOME/sbin

更新环境变量

 source /etc/profile

5. 初始化Hive的元数据库

5.1   注意-1:初始化元数据库之前,保证hadoop和mysql正常启动

        注意-2:检查mysql的root用户是否可以远程访问

         select User,Host from user;

        update user set host = '%' where user='root';

        flush privileges;

5.2 初始化元数据库

schematool -initSchema -dbType  mysql

执行结果,登录MySQL查看 是否生成hive数据库

6. Hive 启动与访问

6.1 准备工作

 先启动Hadoop 与MySQL 服务

6.2 启动metastore 元数据服务 节点

hive --service metastore

 使用 hive 命令操作 hive数据库,并 查看 hive中默认的数据库

6.3 启动hiveserver2服务

 HiveServer2服务的作用是提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能。

利用beeline连接hiveserver2服务

beeline -u jdbc:hive2://hadoop101:10000 -n root

注意:如果beeline远程连接失败的时候,需要在hive-site.xml 配置中添加如下内容:(设置远程连接的用户名与密码)

<property>
    <name>hive.server2.thrift.client.user</name>
    <value>root</value>
    <description>Username to use against thrift client</description>
  </property>
  <property>
    <name>hive.server2.thrift.client.password</name>
    <value>password</value>
    <description>Password to use against thrift client</description>
  </property>

 7. Hive 后台启动

# 启动服务端 后台运行
hive --service metastore &
hive --service hiveserver2 &

# 启动服务端 后台运行
nohup hive --service metastore > /dev/null 2>&1 &
nohup hive --service hiveserver2 > /dev/null 2>&1 &

hiveserver2 start
nohup hiveserver2 start >/dev/null 2>&1 &

至此,整理完毕!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1693681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【QGIS入门实战精品教程】5.3:CGCS2000转Lambert投影

参考阅读: 【GlobalMapper精品教程】081:WGS84/CGCS2000转Lambert投影 文章目录 一、加载实验数据二、投影转换三、批量投影转换一、加载实验数据 加载配套实验数据,如下图所示:图层为长沙市范围、长沙市酒店宾馆分布点位、湖南省酒店分布点位矢量数据。 双击图层,打开信…

Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现

目录 一、用Springboot读取本地工作目录的文件和文件结构 1.1、需求介绍 1.2、后端传递数据 1.2.1、语言框架 1.2.2、本地工作目录示范 1.2.3、后端代码 ①controller层 ②service层 ③响应的数据 二、总结 一、用Springboot读取本地工作目录的文件和文件结构 1.1、…

5.23.12 计算机视觉的 Inception 架构

1. 介绍 分类性能的提升往往会转化为各种应用领域中显着的质量提升&#xff0c;深度卷积架构的架构改进可用于提高大多数其他计算机视觉任务的性能&#xff0c;这些任务越来越依赖于高质量的学习视觉特征。在 AlexNet 功能无法与手工设计、制作的解决方案竞争的情况下&#xf…

Spring框架学习笔记(四):手动实现 Spring 底层机制(初始化 IOC容器+依赖注入+BeanPostProcessor 机制+AOP)

1 Spring 整体架构示意图 2 阶段 1 -- 编写自己的 Spring 容器&#xff0c;实现多层扫描包 编写自己的 Spring 容器&#xff0c;实现多层扫描包&#xff0c;排除包下不是bean的&#xff0c; 得到 bean 对象&#xff0c;放入到临时ioc容器中 代码实现&#xff1a; &#xff0…

闲鱼电商运营高级课程,一部手机学会闲鱼开店赚钱(34节课)

课程目录 1&#xff0c;闲鱼更货出售主要核心原理.mp4 2、闲鱼前期开店准备.mp4 3.账号基础信息设置1.mp4 4、提升账号权重.mp4 5、注意避免违规行为.mp4 6、实接课 应该怎么选择爆款产品.mp4 7、分析商品的闲鱼市场.mp4 8、寻找最低价货源.mp4 9、怎么寻我优质的货源…

把自己的垃圾代码发布到官方中央仓库

参考博客&#xff1a;将组件发布到maven中央仓库-CSDN博客 感谢这位博主。但是他的步骤有漏缺&#xff0c;相对进行补充 访问管理页面 网址&#xff1a;Maven Central 新注册账号&#xff0c;或者使用github快捷登录&#xff0c;建议使用github快捷登录 添加命名空间 注意&…

【会议征稿,IEEE出版】第九届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2024,6月28-30)

第九届信息科学、计算机技术与交通运输国际学术会议&#xff08;ISCTT 2024&#xff09;将于2024年6月28-30日在中国绵阳举行。 ISCTT 2024将围绕 “信息科学”、"计算机技术”、“交通运输” 等最新研究领域&#xff0c;为来自国内外高等院校、科学研究所、企事业单位的专…

【idea】idea2024最新版本下载_安装_破解

1、下载 下载地址&#xff1a;下载 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE 下载完成&#xff1a; idea破解脚本下载链接&#xff1a;https://pan.baidu.com/s/1L5qq26cRABw8XuEn_CngKQ 提取码&#xff1a;6666 下载完成&#xff1a; 2、安装 1、双击idea的安装包&…

MGR集群从库出现RECOVERING

一、MGR集群问题 说明&#xff1a; 1、启动MGR集群&#xff0c;发现从库转态是&#xff1a;RECOVERING&#xff0c;导致数据不同步。 2、查看MGR日志报错信息&#xff0c;发现提示从库以存在数据库linux&#xff0c;导致无法创建。 3、报错信息如下图所示&#xff1a; 二、解决…

数组-在两个长度相等的有序数组中找到上中位数

题目描述 解题思路 此题目直接遍历两个列表&#xff0c;时间复杂度为O(n)&#xff1b;使用二分法去比较两个递增列表的中位数&#xff0c;缩小两个数组中位数范围&#xff0c;时间复杂度O(logn)&#xff0c;这里我们的算法实现使用二分法。 通过举例子来说明解题算法&#xf…

git revert 和 git reset

文章目录 工作区 暂存区 本地仓库 远程仓库需求&#xff1a;已推送到远程仓库&#xff0c;想要撤销操作git revert &#xff08;添加新的提交来“反做”之前的更改&#xff0c;云端会残留上次的提交记录&#xff09;git reset&#xff08;相当于覆盖上次的提交&#xff09;1.--…

lvgl无法显示中文

环境&#xff1a; VS2019、LVGL8.3 问题&#xff1a; VS2019默认编码为GB2312&#xff0c; 解决&#xff1a; VS2022设置编码方式为utf-8的三种方式_vs utf8-CSDN博客 我用的方法2&#xff0c;设置为 utf-8无签名就行。

Java+Spring+ IDEA+MySQL云HIS系统源码 云HIS适合哪些地区的医院?

JavaSpring IDEAMySQL云HIS系统源码云HIS适合哪些地区的医院&#xff1f; 云HIS适合哪些地区的医院&#xff1f; 云HIS&#xff08;云医院信息系统&#xff09;适合多种地区的医院&#xff0c;特别是那些希望实现医疗服务的标准化、信息化和规范化&#xff0c;同时降低IT运营成…

二叉排序树的创建

二叉排序树就是节点经过排序构建起的二叉树&#xff0c;其有以下性质&#xff1a; 1. 若它的左子树不为空&#xff0c;则左子树上所有节点的值均小于它的根节点的值。 2. 若它的右子树不为空&#xff0c;则右子树上所有节点的值均大于它的根节点的值。 3. 它的左、右子树也分…

【评价类模型】层次分析法(AHP)

1.评价类思想综述&#xff1a; 明确评价主体–>评价指标确定–>计算指标权重–>方案评价 1.1指标确定&#xff1a; 可以通过一个思维导图的方式来画出一个指标系统&#xff0c;先确定方向&#xff0c;再向下细化 注意&#xff1a;指标需要具有贴合性和独立性。 贴合…

《计算机网络微课堂》1-5 计算机网络的性能指标

本节课我们介绍计算机网络的性能指标&#xff0c;性能指标可以从不同的方面来度量计算机网络的性能。 常用的计算机网络性能指标有 8 个&#xff1a;速率、带宽、吞吐量、时延、时延带宽积&#xff0c;往返时间、利用率&#xff0c;丢包率。 ‍ 速率 首先介绍速率。为了能够…

Vue3中为Ant Design Vue中table的checkbox加tooltip、popover

问题的产生 Vue版本&#xff1a;3.3.13 ant-design-vue 版本&#xff1a;3.x.x 在工作时遇到一个场景&#xff0c;需要在 ant-table 的 checkbox 被禁用的时候提示原因&#xff0c;但是在 ant-design-vue 文档中并没有发现有相关介绍。 首先我去看了issue中是否有提到相关问题…

[数据集][目标检测]抽烟喝酒检测数据集VOC+YOLO格式1026张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1026 标注数量(xml文件个数)&#xff1a;1026 标注数量(txt文件个数)&#xff1a;1026 标注…

【全网最全】2024电工杯数学建模A题前三题完整解答matlab+21页初步参考论文+py代码等(后续会更新成品论文)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片链接&#xff0c;那是获取资料的入口&#xff01; 【全网最全】2024电工杯数学建模A题前三题完整解答matlab21页初步参考论文py代码等&#xff08;后续会更新成品论文&#xff09;「首先来看看目前已有的…

Android Studio实现MQTT协议的连接

1添加依赖 在项目中找到下图文件 打开文件 如下 plugins {alias(libs.plugins.android.application) }android {namespace "com.example.mqtt_04"compileSdk 34defaultConfig {applicationId "com.example.mqtt_04"minSdk 27targetSdk 34versionCo…