IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hive的介绍及部署搭建 -> 正文阅读

[大数据]Hive的介绍及部署搭建

Hive的介绍

  • Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hive查询语言(HQL),用于访问和分析存储在Hadoop文件中的大型数据集。
  • Hive核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop群集执行。

Hive与Hadoop之间的关系

  • Hive利用HDFS存储数据,利用MapReduce查询分析数据。
  • Hive专注于编写HQL,Hive转换成MapReduce程序完成对数据的分析。

Hive功能实现图

在这里插入图片描述

Hive架构图

在这里插入图片描述

Hive组件

  • 用户接口:CLI JDBC/ODBC、WebGUI。CLI为shell命令行;Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议;WebGUI是通过浏览器访问Hive。
  • 元数据存储:存储在关系数据库mysql或者derby(自带)中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
  • Driver驱动有语法解析器、计划编译器、优化器、执行器:完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有执行引擎调用执行。
  • 执行引擎:Hive本身并不直接处理数据文件。而是通过执行引擎处理。当下Hive支持MapReduce、Tez、Spark3种执行引擎。

Hive中的元数据

  • Hive MetaData是Hive中的元数据,包含用Hive创建的database、table、表的位置、类型、属性,字段顺序类型等元信息。元数据存储在关系数据库中,Hive自带的是derby,我们也可以使用第三方的Mysql。

  • MetaStore是元数据服务,作用是管理metadata,对外暴露服务地址,让各种客户端通
    过连接metastore服务,由metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。某种程度上也保证了hive元数据的安全。
    在这里插入图片描述

  • metastore的配置方式:内嵌模式、本地模式、远程模式。企业推荐的远程模式,在生产环境中,建议用远程模式来配置Hive Metastore。在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive。由于还可以完全屏蔽数据库层,因此这也带来了更好的可管理性/安全性。
    在这里插入图片描述

Hive的安装部署

安装部署的前提

  • 服务器基础环境配置:集群时间同步、防火墙关闭、主机Host映射、免密登录、JDK安装
  • Hadoop群集健康可用:启动Hive之前必须先启动Hadoop集群。特别要注意,需等待HDFS安全模式关闭之后再启动运行Hive。
  • 整合Hadoop与Hive:Hive需要把数据存储在HDFS上,并且通过MapReduce作为执行引擎处理数据;因此需要在Hadoop中添加相关配置属性,以满足Hive在Hadoop上运行。修改Hadoop中core-site.xml,并且Hadoop集群同步配置文件,重启生效。
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

Mysql的安装

  • 卸载CentOS7自带mariaDB
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
#如果没有显示即卸载成功
rpm -qa|grep mariadb
  • 安装MySQL
#解压
tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
#安装libaio
yum -y install libaio
#rpm安装MySQL
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm 

在这里插入图片描述

  • 初始化MySQL
#初始化
mysqld --initialize
#更改所属组
chown mysql:mysql /var/lib/mysql -R
#启动mysql
systemctl start mysqld.service
#查看生成的临时root密码
cat  /var/log/mysqld.log

在这里插入图片描述

  • 登录MySQL修改权限
 mysql -u root -p
# Enter password:     #这里输入在日志中生成的临时密码
#更新root密码  设置为hadoop
ALTER user user() IDENTIFIED BY "123456";
#授权
USE mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • 设置mysqld服务自启动
systemctl enable  mysqld
#检查是否自启动
systemctl list-unit-files | grep mysqld

在这里插入图片描述

Hive安装

  • 解压安装包
tar -zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin hive-3.1.2
  • 解决Hive与Hadoop之间guava版本差异
cd /export/server/hive-3.1.2/lib
rm -rf guava-19.0.jar
cp -p /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar .
  • 修改hive配置文件
cd /export/server/hive-3.1.2/conf
mv hive-env.sh.template hive-env.sh
#末尾添加
vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/hive-3.1.2/conf
export HIVE_AUX_JARS_PATH=/export/server/hive-3.1.2/lib
# 新增的
vim hive-site.xml
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.jdbc.Driver</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>hadoop</value>
</property>

<!-- H2S运行绑定host -->
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>node1</value>
</property>

<!-- 远程模式部署metastore metastore地址 -->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://node1:9083</value>
</property>

<!-- 关闭元数据存储授权  --> 
<property>
    <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
</property>
</configuration>
  • 上传mysql jdbc驱动到hive安装包lib下
    mysql-connector-java-5.1.32.jar

  • 初始化元数据

cd /export/server/hive-3.1.2/bin/
./schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表

在这里插入图片描述

  • 在hdfs创建hive存储目录
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse

启动Hive

  • 前台启动:进程会一直占据终端,ctrl + c结束进程,服务关闭。可以根据需求添加参数开启debug日志,获取详细日志信息,便于排错。
#前台启动
/export/server/hive-3.1.2/bin/hive --service metastore
#前台启动开启debug日志
/export/server/hive-3.1.2/bin/hive --service metastore --hiveconf 
hive.root.logger=DEBUG,console 
#前台启动关闭方式 ctrl+c结束进程
  • 后台启动
nohup /export/server/hive-3.1.2/bin/hive --service metastore &
#后台挂起启动 结束进程使用jps查看进程 使用kill -9 杀死进程
#nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下

在这里插入图片描述

客户端连接Hive

在这里插入图片描述

Hive自带客户端

  • 第一代客户端(不推荐使用):$HIVE_HOME/bin/hive是一个 shellUtil。主要功能:一是可用于以交互或批处理模式运行Hive查询;二是用于Hive相关服务的启动,比如metastore服务。
  • 第二代客户端(推荐使用):$HIVE_HOME/bin/beeline,是一个JDBC客户端,是官方强烈推荐使用的Hive命令行工具,和第一代客户端相比,性能加强安全性提高。

HiveServer2服务

  • 远程模式下beeline通过 Thrift 连接到单独的HiveServer2服务上,这也是官方推荐在生产环境中使用的模式。
  • HiveServer2支持多客户端的并发和身份认证,旨在为开放API客户端如JDBC、ODBC提供更好的支持。
  • HiveServer2通过Metastore服务读写元数据。所以在远程模式下,启动HiveServer2之前必须先首先启动metastore服务。
  • 特别注意:远程模式下,Beeline客户端只能通过HiveServer2服务访问Hive。而bin/hive是通过Metastore服务访问的。具体关系如下:
    在这里插入图片描述
  • 启动hiveserver2服务
nohup /export/server/hive-3.1.2/bin/hive --service hiveserver2 &

客户端连接

  • node3节点上连接hive
/export/server/hive-3.1.2/bin/beeline
#连接
! connect jdbc:hive2://node1:10000

在这里插入图片描述

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:50:33  更:2022-08-06 10:52:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 21:22:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码