[Hadoop高可用集群]数仓工具之Hive的安装部署(超级详细,适用于初学者)

这篇具有很好参考价值的文章主要介绍了[Hadoop高可用集群]数仓工具之Hive的安装部署(超级详细,适用于初学者)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[Hadoop]数仓工具Hive的安装部署

📕作者:喜欢水星记

🏆系列:Hadoop高可用集群

🔋收藏:本文记录我搭建过程供大家学习和自己之后复习,如果对您有用,希望能点赞收藏加关注

Hive的简介

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。

最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义下Apache Hive为一个开源项目。

Hive 建立在Hadoop 基础之上,Hive 与 Hadoop 紧密集成,其设计可快速对 PB 级数据进行操作。

Hive的意义就是在业务分析中将用户容易编写、会写的Sql语言转换为复杂难写的MapReduce程序,从而大大降低了Hadoop学习的门槛,让更多的用户可以利用Hadoop进行数据挖掘分析。

Hive的优点

  • Hive 所采用的数据可通过批处理快速处理 PB 级数据。

  • Hive 提供非程序员可以使用的熟悉的类似于 SQL 的界面。

  • Hive 可根据使用者的需求被轻松分发与扩展。

  • Hive支持标准的SQL语法,免去了用户编写MapReduce程序的过程,大大减少了公司的开发成本

  • Hive的出现可以让那些精通SQL技能、但是不熟悉MapReduce 、编程能力较弱与不擅长Java语言的用户能够在HDFS大规模数据集上很方便地利用SQL 语言查询、汇总、分析数据

Hive的架构

架构图

hive集群部署,hadoop,hive,大数据


Hadoop 和 MapReduce 是 Hive 架构的根基

Hive的体系结构可以分为以下几部分:

  1. 用户接口主要有三个:CLI,JDBC/ODBC和 Web UI。
    • ①其中,最常用的是CLI,即Shell命令行;
    • ②JDBC/ODBC Client是Hive的Java客户端,与使用传统数据库JDBC的方式类似,用户需要连接至Hive Server;
    • ③Web UI是通过浏览器访问。
  2. Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
  3. 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
  4. Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成。

安装Hive

Hive搭建环境

  • Centos7的操作系统
  • 已安装完JDK
  • 已搭建Hadoop
  • 已搭建MySQL数据库平台

如果没有安装可以查看我上一篇文章:

Hadoop海量数据存储与计算高可用集群部署

==注意:==初学者最好在完成我上一篇Hadoop集群搭建之后再安装Hive

软件版本选用

选用Hive的2.1.1版本,软件包名apache-hive-2.1.1-bin.tar.gz

Hive工具使用JDBC方式连接MySQL数据库,需要用到MySQL数据库连接工具软件,选用该软件的5.1.42版本,软件包名mysql-connector-java-5.1.42-bin.jar

软件下载:

提取链接
提取码:0768

Hive工具安装配置

Hive的安装过程只需要在Cluster-01主机的admin用户下进行

在Cluster-01上:

su - admin # 进入admin用户

mkdir setups # 将本次实验所需要的软件包上传至该目录,之前已经上传 我这里就不上传了

mkdir hive #创建用于存放Hive相关文件的目录

cd ~/hive

mkdir tmp

tar -xzf ~/setups/apache-hive-2.1.1-bin.tar.gz

[root@Cluster-01 ~]# su - admin				# 进入admin用户
Last login: Mon May  1 22:42:23 CST 2023 on pts/0
[admin@Cluster-01 ~]$ mkdir hive			# 创建用于存放Hive相关文件的目录
[admin@Cluster-01 ~]$ cd hive/				
[admin@Cluster-01 hive]$ mkdir tmp			# 创建Hive的本地临时文件目录"tmp"
[admin@Cluster-01 hive]$ tar -xzf ~/setups/apache-hive-2.1.1-bin.tar.gz
[admin@Cluster-01 hive]$ ls
apache-hive-2.1.1-bin  tmp

配置Hive相关的环境变量

vi ~/.bash_profile

对配置文件进行修改,在文件末尾添加以下内容:

#hive environment
HIVE_HOME=/home/admin/hive/apache-hive-2.1.1-bin
PATH=$HIVE_HOME/bin:$PATH
export HIVE_HOME PATH

hive集群部署,hadoop,hive,大数据

刷新环境变量,使其立即生效

source ~/.bash_profile

验证环境变量是否配置成功

echo $HIVE_HOME

echo $PATH

hive集群部署,hadoop,hive,大数据

出现hive则表明环境变量配置成功

修改Hive相关配置文件

进入Hive的配置文件目录

cd ~/hive/apache-hive-2.1.1-bin/conf

Hive的配置文件默认都被命名为了模板文件,需要对其进行拷贝重命名之后才能使用:

cp hive-env.sh.template hive-env.sh

cp hive-log4j2.properties.template hive-log4j2.properties

cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

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

对配置文件进行修改,找到相关配置项并对其值进行修改(本个文件一共有3处修改的)

vi hive-env.sh

找到配置项“HADOOP_HOME”,该项用于指定Hadoop所在的路径,将其值改为以下内容:

HADOOP_HOME=/home/admin/hadoop/hadoop-2.7.3

找到配置项“HIVE_CONF_DIR”,该项用于指定Hive的配置文件所在的路径,将其值改为以下内容:

export HIVE_CONF_DIR=/home/admin/hive/apache-hive-2.1.1-bin/conf

找到配置项“HIVE_AUX_JARS_PATH”,该项用于指定Hive的lib文件所在的路径,将其值改为以下内容:

export HIVE_AUX_JARS_PATH=/home/admin/hive/apache-hive-2.1.1-bin/lib

hive集群部署,hadoop,hive,大数据

启动相关进程

在五台主机的admin用户下执行

zkServer.sh status #查看zookeeper的状态

zkServer.sh start #启动zookeeper,如果zookeeper已经启动则不需要执行本条命令

在Cluster-01的admin用户下执行

start-all.sh

在Cluster-02的admin用户下执行

yarn-daemon.sh start resourcemanager

hive集群部署,hadoop,hive,大数据

在HDFS中创建Hive相关目录并赋权

本项操作仅在Cluster-01的admin用户下进行

hadoop fs -mkdir -p /user/hive/tmp

hadoop fs -mkdir -p /user/hive/warehouse

hadoop fs -mkdir -p /user/hive/log

hadoop fs -chmod 777 /user/hive/tmp

hadoop fs -chmod 777 /user/hive/warehouse

hadoop fs -chmod 777 /user/hive/log

[admin@Cluster-01 conf]$ hadoop fs -mkdir -p /user/hive/tmp	  #在HDFS中分别创建Hive的临时文件目录tmp
[admin@Cluster-01 conf]$ hadoop fs -mkdir -p /user/hive/warehouse	#在HDFS中分别创建Hive的数据存储目录“warehouse”
[admin@Cluster-01 conf]$ hadoop fs -mkdir -p /user/hive/log	#在HDFS中分别创建Hive的日志文件目录“log”
[admin@Cluster-01 conf]$ hadoop fs -chmod 777 /user/hive/tmp			# 赋权
[admin@Cluster-01 conf]$ hadoop fs -chmod 777 /user/hive/warehouse
[admin@Cluster-01 conf]$ hadoop fs -chmod 777 /user/hive/log
[admin@Cluster-01 conf]$ hadoop fs -ls /user/hive			# 查看刚刚创建的目录
Found 3 items
drwxrwxrwx   - admin supergroup          0 2023-05-08 21:32 /user/hive/log
drwxrwxrwx   - admin supergroup          0 2023-05-08 21:32 /user/hive/tmp
drwxrwxrwx   - admin supergroup          0 2023-05-08 21:32 /user/hive/warehouse

修改相关配置文件

vi ~/hive/apache-hive-2.1.1-bin/conf/hive-site.xml

找到下列标签“”所标识的属性项名称所在位置,修改其标签“”所标识的属性值部分的内容:

第一处: 
<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    
    修改为::		
  <property>
    <name>hive.exec.scratchdir</name>
    <value>/user/hive/tmp</value>

      (只修改了<value>标签里面的值)

hive集群部署,hadoop,hive,大数据

第二处:
  <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>


修改为::
  <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>

注意:这里有的人可能不需要修改 

hive集群部署,hadoop,hive,大数据

第三处:
  <property>
    <name>hive.querylog.location</name>
    <value>${system:java.io.tmpdir}/${system:user.name}</value>
    <description>Location of Hive run time structured log file</description>

      修改为:::
        <property>
    <name>hive.querylog.location</name>
    <value>/user/hive/log</value>
    <description>Location of Hive run time structured log file</description>
		(只修改了<value>标签里面的值)

hive集群部署,hadoop,hive,大数据

小技巧:该文档内容较多,可以在编辑器内使用命令“/关键字”直接进行搜索,使用快捷键“n”可以切换到下一个关键字的所在位置。

创建hive元数据数据库

本项的所有操作步骤使用五台主机的用户root进行,5台都要操作

在MySQL数据库SQL服务节点Cluster-04中创建一个数据库“hive”用于存放Hive的元数据,该数据库的用户名和密码均为“hive”,数据库名、用户名、密码均可以自行设定,但需要与Hive配置文件中的内容相对应,连接MySQL数据库:

启动MySQL:

将五台主机切换到root用户

su - root (五台都要执行)

在Cluster-01执行:

ndb_mgmd -f /usr/local/mysql/etc/config.ini

在Cluster-02,03 执行

ndbd

在Cluster-04,05执行

service mysql start

执行完后查看连接状态

ndb_mgm -e show

hive集群部署,hadoop,hive,大数据

进入控制台

在Cluster-04的root用户下执行

mysql -hCluster-04 -uroot -pmysqlabc

在控制台执行以下命令进行数据库的创建:

CREATE DATABASE hive;

USE hive;

CREATE USER ‘hive’@‘%’ IDENTIFIED BY ‘hive’;

GRANT ALL ON hive.* TO ‘hive’@‘%’;

FLUSH PRIVILEGES;

show databases;

quit;

mysql> CREATE DATABASE hive;			# 创建数据库hive
Query OK, 1 row affected (0.05 sec)

mysql> USE hive;						# 切换到新创建的hive数据库
Database changed
mysql> CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';		# 创建数据库用户hive
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON hive.* TO 'hive'@'%';    # 设置hive数据库的访问权限,hive用户拥有所有操作权限并支持远程访问
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;					# 刷新数据库权限信息
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;						# 显示数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hive               |
| mysql              |
| ndbinfo            |
| performance_schema |
| sys                |
| test               |
+--------------------+
7 rows in set (0.00 sec)

mysql> quit;				# 退出数据库控制台
Bye

添加MySQL连接的相关配置信息

本项仅在Cluster-01的admin用户下进行

vi ~/hive/apache-hive-2.1.1-bin/conf/hive-site.xml

找到下列标签“”所标识的属性项名称所在位置,修改其标签“”所标识的属性值部分的内容:

将:
 <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
    <description>

        修改为:::
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://Cluster-04:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
    <description>

        只需要修改<value>标签里面的内容即可

hive集群部署,hadoop,hive,大数据

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>org.apache.derby.jdbc.EmbeddedDriver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
修改为:
 <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>

hive集群部署,hadoop,hive,大数据

将:
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>APP</value>
    <description>Username to use against metastore database</description>
  </property>
修改为:
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</description>
  </property>

hive集群部署,hadoop,hive,大数据

将:
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>mine</value>
    <description>password to use against metastore database</description>
  </property>
修改为:
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>

hive集群部署,hadoop,hive,大数据

将MySQL的数据库连接工具包添加到Hive的“lib”目录下

cp -v ~/setups/mysql-connector-java-5.1.42-bin.jar ~/hive/apache-hive-2.1.1-bin/lib

添加MySQL连接的相关配置信息

vi ~/hive/apache-hive-2.1.1-bin/conf/hive-site.xml

在编辑器中使用快捷键“:”进入到编辑器的命令模式,也称为末行模式,然后使用命令

%s#${system:java.io.tmpdir}#/home/admin/hive/tmp#g
%s#${system:user.name}#${user.name}#g

Hive初始化

在Cluster-01的admin用户下进行

schematool -initSchema -dbType mysql

hive集群部署,hadoop,hive,大数据

删除hive中$HIVE_HOME/lib下面的log4j-slf4j-impl-2.4.1.jar包

cd $HIVE_HOME/lib

rm -rf log4j-slf4j-impl-2.4.1.jar

为了防止与Hadoop中的jar包slf4j-log4j12-1.7.10.jar冲突

Hive工具启动和验证

本项步骤只在中Cluster-01主机admin用户上进行操作即可

进入hive控制台

hive

查看数据库

show databases;

退出

quit;文章来源地址https://www.toymoban.com/news/detail-752361.html

简单练习

在Cluster-01的admin用户下

基本命令

show databases; # 显示数据库信息

create database test; # 创建一个名为test的数据库

use test; # 使用刚刚创建的test库

show tables; # 显示当前的表

进入hive控制台

hive

创建表及加载数据

create table student1 (
id int comment 'id of student1',
name string comment 'name of student1',
age int comment 'age of student1',
gender string comment 'sex of student1',
addr string
)    
comment 'this is a demo'
row format delimited fields terminated by '\t';

查看表

desc student1;

hive集群部署,hadoop,hive,大数据

在任意一台主机的root用户下,我这里使用Cluster-04的root进入MySQL

mysql -hCluster-04 -uroot -pmysqlabc

(注意:mysqlabc 是我自己设置的密码)

进入mysql控制台之后,调用hive的库

use hive;

查看刚刚创建的表信息

select * from TBLS;

hive集群部署,hadoop,hive,大数据

退出控制台

quit;

到了这里,关于[Hadoop高可用集群]数仓工具之Hive的安装部署(超级详细,适用于初学者)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hadoop集群搭建+hive安装

    VMware-workstation:VMware-workstation-full-16.2.3 ubuntu:ubuntu-21.10 hadoop:hadoop2.7.2 mysql:mysql-connector-java-8.0.19 jdk:jdk-8u91-linux-x64.tar(注意要是linux版本的,因为是在linux系统中创建虚拟机) hive:hive1.2.1 小技巧: 右键单击可以paste 1.选择典型即可 2.将ubuntu镜像文件导入: 3.用户名要记住

    2024年02月05日
    浏览(100)
  • 基于 HBase & Phoenix 构建实时数仓(1)—— Hadoop HA 安装部署

    目录 一、主机规划 二、环境准备 1. 启动 NTP 时钟同步 2. 修改 hosts 文件 3. 配置所有主机间 ssh 免密 4. 修改用户可打开文件数与进程数(可选) 三、安装 JDK 四、安装部署 Zookeeper 集群 1. 解压、配置环境变量 2. 创建配置文件 3. 创建新的空 ZooKeeper 数据目录和事务日志目录 4

    2024年03月10日
    浏览(47)
  • HadoopHA模式(由于Hadoop的HA模式是在Hadoop完全分布式基础上,利用zookeeper等协调工具配置的高可用的Hadoop集群模式)

    目录 1.前期准备 1.1.hadoop-3.1.3.tar.gz,jdk-8u212-linux-x64.tar.gz,apache-zookeeper-3.5.7-bin.tar.gz三个包提取码:k5y6 2.解压安装包,配置环境变量 3. 将三个节点分别命名为master、slave1、slave2并做免密登录 免密在前面Hadoop完全分布式搭建说过,这里不再赘述 4.搭建zookeeper集群  根据配置的

    2024年02月04日
    浏览(40)
  • Hadoop 3.0.0的集群搭建和Hive 3.1.3的安装

    Hi,朋友们,我们又见面了,这一次我给大家带来的是Hadoop集群搭建及Hive的安装。 说明一下,网上有很多的教程,为什么我还要水? 第一,大多数的安装都是很顺利的,没有疑难解答。 第二,版本问题,网上的搭建在3以前的比较多。 第三,我想给出一个更简洁的安装教程,

    2024年02月03日
    浏览(38)
  • Hadoop集群安装部署

    目录 Hadoop集群安装部署 1、集群环境准备 2、建立免密通道 3、集群时间同步 4、jdk1.8安装 5、hadoop安装部署 6、Hadoop配置文件配置 7、格式化操作 8、启动hadoop集群 启动HDFS集群: 启动YARN集群 9、访问HDFS的web页面(端口9870)  10、访问Hadoop的web页面(node1:8088)  11、HDFS一些命令

    2024年02月05日
    浏览(43)
  • (最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

    网上的找的文档大多残缺不靠谱,所以我整理了一份安装最新版本的hive4..0.0+hadoop3.3.4的学习环境,可以提供大家安装一个完整的hive+hadoop的环境供学习。 由于在公司担任大数据的培训工作后续还会更新一些基础的文章,希望能帮助到大家。 机器信息 Hostname k8s-master k8s-node1 k8

    2024年02月06日
    浏览(49)
  • hadoop3.3.4集群安装部署

    一、环境准备:3台centos7服务器         修改hosts(所有服务器都需要修改)           修改主机名,cdh1为主机名,根据自己定义         安装远程同步工具rsync,用于服务器间同步配置文件         设置时间同步,如果时间相差过大启动会报ClockOutOfSyncException异常,默认是

    2023年04月08日
    浏览(44)
  • 数仓知识11:Hadoop生态及Hive、HBase、Impala、HDFS之间的关系

    Hive、HBase、Impala、HDFS是Hadoop生态体系中常用的开源产品,各个产品间是一个什么样的关系,许多人都搞不清楚,本文将进行研究分析。 Hadoop生态 在了解Hive、HBase、Impala、和HDFS之前,先熟悉一下Hadoop的生态。 Apache Hadoop软件库是一个框架,允许使用简单的编程模型在计算机集

    2023年04月08日
    浏览(52)
  • 大数据开发之电商数仓(hadoop、flume、hive、hdfs、zookeeper、kafka)

    1.1.1 数据仓库概念 1、数据仓库概念: 为企业制定决策,提供数据支持的集合。通过对数据仓库中数据的分析,可以帮助企业,改进业务流程、控制成本,提高产品质量。 数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备,这些准备包括对数据的:清洗、

    2024年01月22日
    浏览(60)
  • Spark-3.2.4 高可用集群安装部署详细图文教程

    目录 一、Spark 环境搭建-Local 1.1 服务器环境  1.2 基本原理  1.2.1 Local 下的角色分布 1.3 搭建  1.3.1 安装 Anaconda  1.3.1.1 添加国内阿里源  1.3.2 创建 pyspark 环境  1.3.3 安装 spark 1.3.4 添加环境变量  1.3.5 启动 spark  1.3.5.1 bin/pyspark  1.3.5.2 WEB UI (4040) 1.3.5.3 spark-shell  1.3.5.4 bin/sp

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包