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

 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/hcatalogexport 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.mzph.cn/news/840571.shtml

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

相关文章

infoq读书笔记-Davide Taibi博士-花8年转型微服务却得不到回报,问题出在哪 儿?

InfoQ&#xff1a;您的论文“On the Definition of Microservice Bad Smells”涉及非常多的微服务不良做法&#xff0c;但如果要用几个大类别来列举危害性比较大的微服务反模式&#xff0c;您认为会是哪几类&#xff1f;另外&#xff0c;您能再大概分析说明下造成这个几个反模式…

linux新机快速配置ssh

配置SSH以实现证书登录 要配置新的Linux机器以实现证书登录&#xff0c;您需要执行以下步骤&#xff1a; 安装SSH服务器&#xff1a; sudo apt-get install openssh-server修改SSH端口&#xff08;可选&#xff09;&#xff1a; SSH配置文件&#xff08;通常位于/etc/ssh/sshd…

产品经理-产品设计规范(六)

1. 设计规范 2. 七大定律 2.1 菲茨定律 2.1.1 概念 2.1.2 理解 2.1.3 启示 按钮等可点击对象需要合理的大小尺寸根据用户使用习惯合理设计按钮的相对和绝对位置屏幕的边和角很适合放置像菜单栏和按钮这样的元素 2.1.4 参考使用手机习惯 2.1.5 案例 2.2 席克定律 2.2.1 概念 …

Android make命令简述

Android make命令简述 Android的make系统是一个构建工具,用于管理Android应用项目的编译和构建过程。它使用Makefile文件来定义项目的编译规则和依赖关系。在Android开发中,make系统通常与NDK(Native Development Kit)一起使用,用于编译和构建 C/C++ 代码。make是GNU Mak…

MySQL8.0新特性CTE表达式递归实现累加运算 1+2+…+n 等于多少?

上一篇内容&#xff0c;通过MySQL存储过程实现累加运算 12…n 等于多少的需求&#xff0c;使用当前主流版本MySQL5.7.x 和MySQL8.0.x&#xff0c;以及最新的MySQL8.4 LST版本。 WITH AS子句在MySQL 8.0.x及更高版本中得到支持&#xff0c;而在MySQL 5.7及以下版本中则不支持。…

Spring Boot 中使用 MDC 追踪一次请求全过程(日志链路)

Spring Boot 中使用 MDC 追踪一次请求全过程&#xff08;日志链路&#xff09; ControllerLogAspect package com.yymt.common.trace;import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.…

XShell-连接-Centos 7

XShell 连接Centos 7 一.准备 安装XShell XShell下载地址&#xff1a; 在虚拟机上安装Centos 7&#xff0c;具体操作自行学习 二.Centos 7的准备 1.网络适配器修改为NAT 2.获取IP 输入命令&#xff1a; ip addr我的Centos 7对外IP为192.168.174.129 三.XShell连接Cento…

C++标准模板库(STL)简介

简述 STL&#xff08;Standard Template Library&#xff09;是一套功能强大的 C 模板类和函数的集合&#xff0c;它提供了一系列通用的、可复用的算法和数据结构。它帮住我们实现了基本的数据结构容器&#xff0c;和与之对应的操作。使用它可以减少代码长度&#xff0c;增加代…

TCP 三次握手协议能否变成二次握手

TCP 三次握手协议能否变成二次握手&#xff1f; 看了很多回答&#xff0c;都比较长&#xff0c;按照个人理解的话&#xff0c; 1、第一次握手&#xff1a;建立连接时&#xff0c;客户端发送syn包&#xff08;synj&#xff09;到服务器&#xff0c;并进入SYN_SENT状态&#xf…

docker 离线镜像

1. 在已经部署了镜像的机器上获取镜像   1.1 获取镜像名     docker images   1.2 打包选中对应的镜像     docker save <image_name> -o <image_name>.tar 2. 在将要使用的机器上部署需要的镜像   2.1 加载镜像     docker load -i <image_n…

【百度云千帆AppBuilder】诗词达人:AI引领的诗词文化之旅

文章目录 写在前面&#xff1a;百度云千帆AppBuilder诗词达人&#xff1a;AI引领的诗词文化之旅功能介绍&#xff1a;诗词达人智能体的深度体验1. 诗词接龙学习2. 诗词深度解析3. 互动式问答4. 诗词创作辅助 技术特点详解&#xff1a;"诗词达人"智能体的创新技术零代…

项目9-网页聊天室8(消息的发送和接收之websocket)

这是整个项目最最核心的部分. 但是这个部分的编写&#xff0c;需要依赖"基础设施" 包括不限于前面已经实现的 主界面,用户管理,会话管理, 好友管理, 消息管理 等等.... 发送消息,和接收消息,需要"实时传输 张三 发了一条消息,李四 这边立即就能接收到, 这样的…

【游戏引擎】Unity脚本基础 开启游戏开发之旅

持续更新。。。。。。。。。。。。。。。 【游戏引擎】Unity脚本基础 Unity脚本基础C#语言简介C#基础 Unity脚本基础创建和附加脚本MonoBehaviour生命周期生命周期方法 示例脚本 Unity特有的API常用Unity API 实践示例&#xff1a;制作一个简单的移动脚本步骤1&#xff1a;创建…

对于超长的json数据包,采用分割方式分别上传

例如对于一个长度为5.5M的json数据包&#xff0c;可以将其分割为一包数据长度为64KB大小的小包&#xff0c;再依次读取上传 参考代码如下&#xff1a; #include <stdio.h> #include <string.h>#define SEGMENT_SIZE 64*1024 // 每个数据段的大小&#xff0c;这里…

口碑比较好的相亲交友平台有哪些?正规靠谱的相亲软件排行榜测评

在网络时代&#xff0c;越来越多的人热衷于使用相亲交友软件来寻找生命中的另一半。这些软件确实为许多用户提供了真实可靠的交友平台。然而&#xff0c;市面上的相亲软件种类繁多&#xff0c;质量良莠不齐&#xff0c;让人难以选择。今天&#xff0c;我将介绍几款我使用过且认…

并发编程:ScheduledThreadPoolExecutor你真的了解吗?

前言 首先看到标题&#xff0c;我们其实很多人都知道&#xff0c;但是呢 在实际项目中我们面对很多延迟任务实现方案有很多选择&#xff0c;甚至直接在网上百度反正都能实现就行&#xff0c;但是忽略了很多细节&#xff0c;导致生产上的事故&#xff0c;都是因为没有真正了解到…

Git时光机、Git标签、Git分支、GitHub协作

Git时光机&#xff08;切换版本&#xff09; 1.查看提交历史 HEAD指针指向这次分支的最后一次提交 版本信息一行显示【git log --prettyoneline】 2.引用日志【git reflog】 &#xff08;只在自己的工作区中存在&#xff09; 非常重要&#xff1a;当HEAD指针进行切换之后&…

重学java 43.多线程 多等待多唤醒案例

Fear never builds the future,but hope does. —— 24.5.25 多等待多唤醒问题 在多条线程同时消费同时等待时&#xff0c;会出现问题 BaoZiPu package S77ThreadMoreWait;/*count和flag可以定义成包装类&#xff0c;但要记得给count和flag手动赋值不然对于本案例来说&#xff…

python低阶基础100题(上册)

** python低阶基础100题&#xff08;上册&#xff09; ** 1. 请打印出字符串 Hello World print("Hello World")2. 请打印出字符串 爸爸妈妈&#xff0c;你们辛苦啦 print("爸爸妈妈&#xff0c;你们辛苦啦")3. 请打印出字符串 人生苦短&#xff0c;我…

SVN创建分支,分支合并,切换分支。通俗易懂

1、首先在svnbucket.com远程仓库上创建项目&#xff0c;这里我创建了个测试demo&#xff1a; 2、先把svn仓库的项目检出到自己的文件夹&#xff0c;我这里是demo001文件夹&#xff0c;此时并没有创建truck, branches, tags这三个目录&#xff1a; 3、 在demo001文件夹里新建tru…