大数据之搭建Hive组件

声明:所有软件自行下载,并存放到统一目录中

1.Hive组件的安装配置

1.1实验环境

服务器集群3 个以上节点,节点间网络互通,各节点最低配置:双核 CPU、8GB 内存、100G 硬盘
运行环境CentOS 7.4
服务和组件完成前面章节实验,其他服务及组件根据实验需求安装

1.2下载和解压安装文件

1.2.1基础环境和安装准备

Hive 组件需要基于 Hadoop 系统进行安装。因此,在安装 Hive 组件前,需要确保 Hadoop 系统能够正常运行。本章节内容是基于之前已部署完毕的 Hadoop 全分布系统,在 master 节点上实现 Hive 组件安装。 Hive 组件的部署规划和软件包路径如下:

(1)当前环境中已安装 Hadoop 全分布系统。

(2)本地安装 MySQL 数据库(账号 root,密码 Password123$), 软件包在/opt/software/mysql-5.7.18 路径下。

(3)MySQL 端口号(3306)。

(4)MySQL 的 JDBC 驱动包/opt/software/mysql-connector-java-5.1.47.jar, 在此基础上更新 Hive 元数据存储。 (5)Hive 软件包/opt/software/apache-hive-2.0.0-bin.tar.gz。

1.2.2解压安装文件

(1)使用 root 用户,将 Hive 安装包 /opt/software/apache-hive-2.0.0-bin.tar.gz 路解压到/usr/local/src 路径下。

[root@master ~]# tar -zxvf /opt/software/apache-hive-2.0.0-bin.tar.gz -C 
/usr/local/src 
#进入该目录查看是否正确解压到该路径[root@master ~]# cd /usr/local/src/
[root@master src]# ls

(2)将解压后的 apache-hive-2.0.0-bin 文件夹更名为 hive

[root@master src]# mv /usr/local/src/apache-hive-2.0.0-bin /usr/local/src/hive

(3)修改 hive 目录归属用户和用户组为 hadoop

[root@master ~]# chown -R hadoop:hadoop /usr/local/src/hive

1.3设置 Hive 环境

1.3.1卸载 MariaDB 数据库

Hive 元数据存储在 MySQL 数据库中,因此在部署 Hive 组件前需要首先在 Linux 系统 下安装 MySQL 数据库,并进行 MySQL 字符集、安全初始化、远程访问权限等相关配置。需 要使用 root 用户登录,执行如下操作步骤:

(1)关闭 Linux 系统防火墙,并将防火墙设定为系统开机并不自动启动。

# 关闭防火墙服务 
[root@master ~]# systemctl stop firewalld # 设置防火墙服务开机不启动 
[root@master ~]# systemctl disable firewalld

 (2)卸载 Linux 系统自带的 MariaDB。

         1)首先查看 Linux 系统中 MariaDB 的安装情况。

# 查询已安装的 mariadb 软件包 
[root@ master ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
#注意这里的软件包的版本可能每个人的不一样

以上结果显示 Linux 系统中已经按照了 mariadb-libs-5.5.68-1.el7.x86_64 软件包, 需要将其卸载。

        2)卸载 MariaDB 软件包

# 卸载 mariadb 软件包 
[root@master ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

1.3.2安装 MySQL 数据库

(1)按如下顺序依次按照 MySQL 数据库的 mysql common、mysql libs、mysql client 软件包

# MySQL 软件包路径 
[root@master ~]# cd /opt/software/mysql-5.7.18/ [root@master ~]# rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm

[root@master ~]# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm [root@master ~]# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm

(2)安装 mysql server 软件包

[root@master ~]# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm

(3)修改 MySQL 数据库配置,在/etc/my.cnf 文件中添加如表 6-1 所示的 MySQL 数据 库配置项。

字段匹配值字段说明
default-storage-engineinnodb设置 innodb 为默认的存储引擎
innodb_file_per_table

设置每个表的数据单独保存,而不是统一保存在 innodb 系统表空间中。单独保存有方便管理和提 升性能两方面优势

collation-serverutf8_general_ci设置支持中文编码字符集
init-connect'SET NAMES utf8'设置用户登录到数据库之后,在执行第一次查询之 前执行 SET NAMES utf8 命令,将使用的字符编码 设定为 utf8
character-set-serverutf8将 MySQL 服务器字符集设定为 utf8

将以下配置信息添加到/etc/my.cnf 文件 symbolic-links=0 配置信息的下方。

default-storage-engine=innodb 
innodb_file_per_table 
collation-server=utf8_general_ci 
init-connect='SET NAMES utf8' 
character-set-server=utf8

(4)启动 MySQL 数据库。

[root@master ~]# systemctl start mysqld

 (5)查询 MySQL 数据库状态。mysqld 进程状态为 active (running),则表示 MySQL 数 据库正常运行。 如果 mysqld 进程状态为 failed,则表示 MySQL 数据库启动异常。此时需要排查 /etc/my.cnf 文件

[root@master ~]# systemctl status mysqld

(6)查询 MySQL 数据库默认密码。 MySQL 数据库安装后的默认密码保存在/var/log/mysqld.log 文件中,在该文件中以 password 关键字搜索默认密码

[root@master ~]# cat /var/log/mysqld.log | grep password
2024-03-22T14:30:57.837179Z 1 [Note] A temporary password is generated for root@localhost: #默认密码 ccaVl9A<V,.% 

MySQL 数据库是安装后随机生成的,所以每次安装后生成的默认密码不相同

(7)MySQL 数据库初始化。 执行 mysql_secure_installation 命令初始化 MySQL 数据库,初始化过程中需要设定 数据库 root 用户登录密码,密码需符合安全规则,包括大小写字符、数字和特殊符号, 可设定密码为 Password123$。

在进行 MySQL 数据库初始化过程中会出现以下交互确认信息:

Enter password for user root: # 输入/var/log/mysqld.log 文件中查询
到的默认 root 用户登录密码 
The 'validate_password' plugin is installed on the server. 
The subsequent steps will run with the existing configuration 
of the plugin. 
Using existing password for root. Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other 
key for No) : y New password: # 输入新密码 Password123$ Re-enter new password: # 再次输入新密码 Password123$ Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y 
for Yes, any other key for No) : y # 输入 y 
By default, a MySQL installation has an anonymous user, 
allowing anyone to log into MySQL without having to have 
a user account created for them. This is intended only for 
testing, and to make the installation go a bit smoother. 
You should remove them before moving into a production 
environment. Remove anonymous users? (Press y|Y for Yes, any other key for 
No) : y # 输入 y 
Success. Normally, root should only be allowed to connect from 
'localhost'. This ensures that someone cannot guess at 
the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key 
for No) : n # 输入 n ... skipping. 
By default, MySQL comes with a database named 'test' that 
anyone can access. This is also intended only for testing, 
and should be removed before moving into a production 
environment. Remove test database and access to it? (Press y|Y for Yes, any 
other key for No) : y # 输入 y - Dropping test database... 
Success. - Removing privileges on test database... 
Success.
Reloading the privilege tables will ensure that all changes 
made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key 
for No) : y # 输入 y 
Success. All done! 

(8)添加 root 用户从本地和远程访问 MySQL 数据库表单的授权。

[root@master ~]# mysql -uroot -pPassword123$
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.18 MySQL Community Server (GPL)Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> grant all privileges on *.* to root@'localhost' identified by 'Password123$';
Query OK, 0 rows affected, 1 warning (0.00 sec) # 添加 root 用户本地访问授权mysql> grant all privileges on *.* to root@'%' identified by 'Password123$';
Query OK, 0 rows affected, 1 warning (0.00 sec) # 添加 root 用户远程访问授权mysql> flush privileges; # 刷新授权
Query OK, 0 rows affected (0.01 sec)mysql> select user,host from mysql.user where user='root'; # 查询 root 用户授权情况
+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
| root | localhost |
+------+-----------+
2 rows in set (0.00 sec)
mysql> exit #退出
Bye
[root@master ~]#

1.3.3配置 Hive 组件

(1)设置 Hive 环境变量并使其生效。

# 在文件末尾追加以下配置内容 
[root@master ~]# vi /etc/profile # set hive environment 
export HIVE_HOME=/usr/local/src/hive 
export PATH=$PATH:$HIVE_HOME/bin # 使环境变量配置生效 
[root@master ~]# source /etc/profile

 

 (2)修改 Hive 组件配置文件。 切换到 hadoop 用户执行以下对 Hive 组件的配置操作。 将/usr/local/src/hive/conf 文件夹下 hive-default.xml.template 文件,更名为 hive-site.xml。

[root@master ~]# su - hadoop [hadoop@master ~]$ cp /usr/local/src/hive/conf/hive-default.xml.template 
/usr/local/src/hive/conf/hive-site.xml

(3)通过 vi 编辑器修改 hive-site.xml 文件实现 Hive 连接 MySQL 数据库,并设定 Hive 临时文件存储路径

[hadoop@master ~]$ vi /usr/local/src/hive/conf/hive-site.xml

1)设置 MySQL 数据库连接

<name>javax.jdo.option.ConnectionURL</name> 
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value> 
<description>JDBC connect string for a JDBC metastore</description>

2)配置 MySQL 数据库 root 的密码

<property> 
<name>javax.jdo.option.ConnectionPassword</name> 
<value>Password123$</value> 
<description>password to use against s database</description> 
</property>

3)验证元数据存储版本一致性。若默认 false,则不用修改

<property> 
<name>hive.metastore.schema.verification</name> 
<value>false</value> 
<description> Enforce metastore schema version consistency. 
True: Verify that version information stored in is compatible with one from 
Hive jars. Also disable automatic False: Warn if the version information stored in metastore doesn't match 
with one from in Hive jars. 
</description> 
</property>

4)配置数据库驱动

<property> 
<name>javax.jdo.option.ConnectionDriverName</name> 
<value>com.mysql.jdbc.Driver</value> 
<description>Driver class name for a JDBC metastore</description> 
</property>

5)配置数据库用户名 javax.jdo.option.ConnectionUserName 为 root

<property> 
<name>javax.jdo.option.ConnectionUserName</name> 
<value>root</value> 
<description>Username to use against metastore database</description> 
</property>

6 ) 将 以 下 位 置 的 ${system:java.io.tmpdir}/${system:user.name} 替 换 为 “/usr/local/src/hive/tmp”目录及其子目录

需要替换以下 4 处配置内容:

<name>hive.querylog.location</name> <value>/usr/local/src/hive/tmp</value> <description>Location of Hive run time structured log file</description> <name>hive.exec.local.scratchdir</name> <value>/usr/local/src/hive/tmp</value> <name>hive.downloaded.resources.dir</name> <value>/usr/local/src/hive/tmp/resources</value> <name>hive.server2.logging.operation.log.location</name> <value>/usr/local/src/hive/tmp/operation_logs</value>

7)在 Hive 安装目录中创建临时文件夹 tmp。

[hadoop@master ~]$ mkdir /usr/local/src/hive/tmp

至此,Hive 组件安装和配置完成。

1.3.4初始化 hive 元数据

1)将 MySQL 数据库驱动(/opt/software/mysql-connector-java-5.1.46.jar)拷贝到 Hive 安装目录的 lib 下:

[hadoop@master ~]$ cp /opt/software/mysql-connector-java-5.1.46.jar 
/usr/local/src/hive/lib/

2)重新启动 hadooop 即可

[hadoop@master lib]$ stop-all.sh [hadoop@master lib]$ start-all.sh

3)初始化数据库

[hadoop@master ~]$schematool -initSchema -dbType mysql

 

4)启动 hive

[hadoop@master ~]$ hive

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

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

相关文章

Java基础笔记(一)

一、面向对象高级基础 1.Java的动态绑定机制 public class DynamicBinding {public static void main(String[] args) {//a 的编译类型 A, 运行类型 BA a new B();//向上转型System.out.println(a.sum());//40 子类sum()注释后-> 30System.out.println(a.sum1());//30 子类…

android-自定义TextView在文字内容末尾添加图片icon、可以添加间距

样式示意图 自定义属性 style.xml <declare-styleable name"IconLabelTextView"><attr name"iconSrc" format"reference"/><attr name"iconPaddingStart" format"dimension"/><attr name"iconPad…

访问网站显示不安全是什么原因?怎么解决?

访问网站时显示“不安全”&#xff0c;主要原因以及解决办法&#xff1a; 1.没用HTTPS加密&#xff1a;网站还在用老的HTTP协议&#xff0c;数据传输没加密&#xff0c;容易被人偷看或篡改。解决办法是网站管理员启用HTTPS&#xff0c;也就是给网站装个“SSL证书”。这个是最常…

模块十三 异常_Object

回顾与重点 模块十二回顾 权限修饰符&#xff1a; public → protected → 默认 → private a. 构造一般用public&#xff1a;便于new对象 b. 成员方法一般用public&#xff1a;便于调用 c. 属性一般用private&#xff1a;封装思想 final&#xff1a;最终的 a. 修饰类&#x…

k8s_入门_kubelet安装

安装 在大致了解了一些k8s的基本概念之后&#xff0c;我们实际部署一个k8s集群&#xff0c;做进一步的了解 1. 裸机安装 采用三台机器&#xff0c;一台机器为Master&#xff08;控制面板组件&#xff09;两台机器为Node&#xff08;工作节点&#xff09; 机器的准备有两种方式…

前端开发之el-table(vue2中)固定列fixed滚动条被固定列盖住

固定列fixed滚动条被固定列盖住 效果图前言解决方案 效果图 前言 在使用fixed固定列的时候会出现滚动条被盖住的情况 解决方案 改变el-table固定列的计算高度即可 .el-table {.el-table__fixed-right,.el-table__fixed {height:auto !important;bottom:15px !important;}}

数据结构(七)——查找的基本概念

七、查找 7.1 查找的基本概念 7.1.1 基本概念 查找 —— 在数据集合中寻找满⾜某种条件的数据元素的过程称为查找 查找表&#xff08;查找结构&#xff09;—— ⽤于查找的数据集合称为查找表&#xff0c;它由同⼀类型的数据元素&#xff08;或记录&#xff09;组成 关键字 …

Golang | Leetcode Golang题解之第18题四数之和

题目&#xff1a; 题解&#xff1a; func fourSum(nums []int, target int) (quadruplets [][]int) {sort.Ints(nums)n : len(nums)for i : 0; i < n-3 && nums[i]nums[i1]nums[i2]nums[i3] < target; i {if i > 0 && nums[i] nums[i-1] || nums[i]…

数字化智慧养老:引领老年人融入科技时代新生活

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 人类社会已经步入了一个全新的数字时代。在这个时代&#xff0c;互联网、大数据、人工智…

PDF锐化

PDF Shaper Ultimate(pdf转图片) 编辑->添加文件->选中一个要处理的pdf 操作->转换->PDF转为图片 ComicEnhancerPro设置(把图片锐化) PDF Shaper Ultimate(图片转pdf) 编辑-添加图片->选中所有锐化处理后的图片 转换->图片转为pdf&#xff08;会把所有图…

全国火情预报卫星遥感应用方案

一、引言 火情预报应急卫星遥感解决方案是一种利用卫星遥感技术进行火灾预警和应急响应的方法。该方案通过实时监测和分析森林、草原等地区的火情信息&#xff0c;为火灾预警和应急响应提供科学依据&#xff0c;有效减少火灾造成的损失。本技术文档将介绍火情预报应急卫…

Java | Leetcode Java题解之第18题四数之和

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> quadruplets new ArrayList<List<Integer>>();if (nums null || nums.length < 4) {return…

el-cascader的懒加载模式怎么设置默认值

点击修改会跳出一个dialog&#xff0c;dialog需要显示信息&#xff0c;其中地址使用el-cascader标签并使用懒加载实现&#xff0c;地址数据都是从后台获取&#xff0c;如果直接使用v-model绑定默认值&#xff0c;会不显示。 解决方法1&#xff1a; <el-cascader class&quo…

React - 请你说一说setState是同步的还是异步的

难度级别:中高级及以上 提问概率:70% 在React项目中,使用setState可以更新状态数据,而不能直接使用为this.state赋值的方式。而为了避免重复更新state数据,React首先将state添加到状态队列中,此时我们可以通过shouldComponentUpdate这个钩…

Python编程启航:大学生如何用代码编织未来

开篇 掌握Python&#xff0c;打开编程世界的大门&#xff01;作为一名大学生&#xff0c;你是否渴望在编程的海洋中遨游&#xff0c;用代码编织未来&#xff1f; &#x1f31f;&#x1f680;现在就跟随我一起&#xff0c;探索Python编程的奇妙之旅&#xff0c;解锁学习技巧、…

数据库——实验6 视图的创建与使用

1. 视图的定义 视图是根据需要以一个表或多个表为基础&#xff0c;选择满足一定条件的行或列数据的静态定义。它是一种逻辑对象&#xff0c;是一种虚拟表。视图并不生成行或列的永久副本&#xff0c;并不占用存储空 间&#xff0c;也就是说&#xff0c;视图就是保存在数据库中…

加州大学欧文分校英语基础语法专项课程03:Simple Past Tense 学习笔记(完结)

Learn English: Beginning Grammar Specialization Specialization Certificate course 3&#xff1a; Simple Past Tense Course Certificate 本文是学习 https://www.coursera.org/learn/simple-past-tense 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。…

函数重载和引用【C++】

文章目录 函数重载什么是函数重载&#xff1f;函数重载的作用使用函数重载的注意点为什么C可以函数重载&#xff0c;C语言不行&#xff1f; 引用什么是引用&#xff1f;引用的语法引用的特点引用的使用场景引用的底层实现传参时传引用和传值的效率引用和指针的区别 函数重载 什…

OpenHarmony实战:物联网解决方案之芯海cst85芯片移植案例

本文介绍基于芯海cst85芯片的cst85_wblink开发板移植OpenHarmony LiteOS-M轻量系统的移植案例。 开发了Wi-Fi连接样例和XTS测试样例&#xff0c;同时实现了wifi_lite, lwip, startup, utils, xts, hdf等部件基于OpenHarmony LiteOS-M内核的适配。 移植架构上采用Board和Soc分…

ArcGIS和ArcGIS Pro快速加载ArcGIS历史影像World Imagery Wayback

ArcGIS在线历史影像网站 World Imagery Wayback(网址:https://livingatlas.arcgis.com/wayback/)提供了数期历史影像在线浏览服务,之前不少自媒体作者在文中宣称其能代表Google Earth历史影像。 1、一点对比 (1)同一级别下的版本覆盖面 以下述区域为例,自2014年2月20…