返回介绍

基于 Hadoop 集群的 Hive 安装配置

发布于 2025-03-08 13:02:48 字数 9075 浏览 0 评论 0 收藏 0

Hive 可以安装在任一节点或集群之外,我这里是计划装在 Master 节点上。

其次 Hive 也就是在 hadoop 上加了一层 SQL 接口,便于通过简单的 SQL 语言翻译成 MapReduce 作业。而 hdfs 的特性是可追加不可修改,但数据库表是可以修改删除的,所以 Hive 的所存储的数据应当分成两部分,表的元数据外部存储以便修改,表中数据存储在 hdfs 上即可。
hive 是默认将元数据保存在本地内嵌的 Derby 数据库中,但 Derby 不支持多会话连接,所以我这里选择 mysql 来存储 metadata 元数据

准备

在线安装并配置 MySQL

  1. 上传 MySQL 在线安装源的配置文件

用 root 账号登录 master 节点
将 mysql-community.repo 文件上传到 /etc/yum.repos.d/ 目录
将 c 文件上传到 /etc/pki/rpm-gpg/ 目录

这两文件是指定 mysql 的 yum 源,centos 系统盘里是没有的。我放了个链接在最后

# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=1           #enabled=1 表明下载使用 MySQL5.6,如果要用 5.7 的话把下面的 enabled 改为 1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Note: MySQL 5.7 is currently in development. For use at your own risk.
# Please read with sub pages: https://dev.mysql.com/doc/relnotes/mysql/5.7/en/
[mysql57-community-dmr]
name=MySQL 5.7 Community Server Development Milestone Release
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
  1. 更新 yum 源并安装 mysql server(默认同时会安装 mysql client)
# yum repolist
# yum install mysql-server
  1. 查看 MySQL 各组件是否成功安装
# rpm -qa | grep mysql

  1. 启动 MySQL Server 并查看其状态
# systemctl start mysqld
# systemctl status mysqld

设置开机启动 mysql 服务:systemctl enable mysqld
关闭开机自启动:systemctl diable mysqld
停止 MySQL 服务:systemctl stop mysqld

  1. 查看 MySQL 版本
# mysql -V
  1. 连接 MySQL,默认 root 密码为空
# mysql -u root 
mysql> 

为 root 用户设置密码:
mysql>set password for 'root'@'localhost'=password('newPasswd');

  1. 查看数据库
mysql> show databases; (注意:必须以分号结尾,否则会出现续行输入符“>”)
  1. 创建 hive 元数据数据库(metastore)
mysql> create database hive; 
  1. 创建用户 hive,密码是 123456
mysql> CREATE USER 'hive'@'%' IDENTIFIED BY '123456';

注意:删除用户是 DROP USER 命令 ,%代表可以在任一台主机(IP 地址)上使用 hive 用户

  1. 授权用户 hadoop 拥有数据库 hive 的所有权限
mysql> GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' WITH GRANT OPTION;
  1. 查看新建的 MySQL 用户(数据库名:mysql,表名:user)
mysql> select host,user,password from mysql.user;
  1. 删除空用户记录,如果没做这一步,新建的 hive 用户将无法登录,后续无法启动 hive 客户端
mysql> delete from mysql.user where user='';
  1. 刷新系统授权表(不用重启 mysql 服务)
mysql> flush privileges; 
  1. 测试 hive 用户登录
$ mysql -u hive -p
Enter password:123456

安装 Hive

  • 切换 hadoop 用户登录(我先前 centos 创建的用户 hadoop)
  • 上传下载的源码文件并解压到用户目录下 tar -zxvf hive-1.1.0-cdh5.12.1.tar.gz ~
  • 在.bash_profile 文件中添加 hive 环境变量
export HIVE_HOME=/home/hadoop/hive-1.1.0-cdh5.12.1
export PATH=$HIVE_HOME/bin:$PATH

并使之生效 source .bash_profile

  • 编辑$HIVE_HOME/conf/hive-env.sh 文件,在末尾添加 HADOOP_HOME 变量
$ cd ​$HIVE_HOME/conf
$ cp hive-env.sh.template hive-env.sh	(默认不存在,可从模板文件复制)
​$ vi hive-env.sh
# 添加 HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.12.1
  • 同样在 conf 目录下新建 hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
​        # 下面几步指定使用创建的 hive 用户访问 mysql
​        <property>
​                <name>javax.jdo.option.ConnectionDriverName</name>
​                <value>com.mysql.jdbc.Driver</value>
​        </property>
​        <property>
​                <name>javax.jdo.option.ConnectionURL</name>
​                <value>jdbc:mysql://192.168.17.10:3306/hive</value>
​        </property>
​        <property>
​                <name>javax.jdo.option.ConnectionUserName</name>
​                <value>hive</value>
​        </property>
​        <property>
​                <name>javax.jdo.option.ConnectionPassword</name>
​                <value>123456</value>
​        </property>
​	<property>
​		<name>hive.metastore.warehouse.dir</name> #指定仓库目录,在 hdfs 上
​		<value>/hive/warehouse</value>
​	</property>
​	<property>
​		<name>hive.exec.scratchdir</name>
​		<value>/hive/tmp </value>
​	</property>
​        <property>
​                <name>hive.metastore.schema.verification</name>
​                <value>false</value>
​        </property>
</configuration>

如配置文件中指明了 hive 仓库在 hdfs 上,所以要创建/hive/warehouse 和/hive/tmp 目录

  • 启动 hdfs 服务并创建所述目录
start-dfs.sh #起 hdfs
hdfs dfs -mkdir -p /hive/warehouse /hive/tmp #创建多级目录
hdfs dfs -ls -R /hive #查看

  • 将先前下载的 mysql 驱动上传并解压到$HIVE_HOME/lib 目录下

  • 启动 hive,前提确保 hadoop 集群启动了,命令行输入 hive

hive 简单使用

和 mysql 使用差不多的,类似 SQL 语句的 HSQL

  • 启动 hive: hive
  • 退出:quit;
  • 查看数据库和表,同 sql 语句 show databases,show tables from xxx
  • 创建表,我这里随便建了个 create table user(name string,age int,id string);
  • 查看表结构 desc user;
  • 查看表详细信息 desc fromatted user;
  • 插入数据 insert into user values('hadoop',10,'0x001'),('hbase',6,'0x002'),('josonlee',20,'0x003');

  • 查询 select * from user;

  • 创建数据库
hive> create database testdb;		//在默认位置创建 DB(配置中指定的/hive/warehouse/)
hive> create database testdb location ‘/hive/testdb’		//在 HDFS 指定目录下创建 DB

  • 查看数据库结构 desc database testdb;
  • 切换数据库 use testdb;
  • 删除数据库
hive> drop database testdb; 	//只能删除空数据库(数据库中没表)
hive> drop database mydb cascade;	          //删除非空数据库

Hive 就是这样简单搭建成功

可以再去 MySQL 下看看到底改变了存储了什么信息,如图

其中上面创建的 user 表的字段信息存储在 COLUMN_V2 里,如图

https://www.cnblogs.com/qingyunzong/p/8710356.html#_label5_0

其余表对应 Hive 数据库相关信息如下:

一、存储 Hive 版本的元数据表(VERSION)
二、Hive 数据库相关的元数据表(DBS、DATABASE_PARAMS)
    1、DBS
    2、DATABASE_PARAMS
三、Hive 表和视图相关的元数据表
    1、TBLS
    2、TABLE_PARAMS
    3、TBL_PRIVS
四、Hive 文件存储信息相关的元数据表
    1、SDS
    2、SD_PARAMS
    3、SERDES
    4、SERDE_PARAMS
五、Hive 表字段相关的元数据表
    1、COLUMNS_V2
六、Hive 表分区相关的元数据表
    1、PARTITIONS
    2、PARTITION_KEYS
    3、PARTITION_KEY_VALS
    4、PARTITION_PARAMS

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文