基于云服务器的数仓搭建-hive/spark安装

mysql本地安装

安装流程(内存占用200M,升至2.1G)

# 将资料里mysql文件夹及里面所有内容上传到/opt/software/mysql目录下
mkdir /opt/software/mysql
cd /opt/software/mysql/
# 待上传文件
install_mysql.sh
mysql-community-client-8.0.31-1.el7.x86_64.rpm
mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm
mysql-community-common-8.0.31-1.el7.x86_64.rpm
mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpm
mysql-community-libs-8.0.31-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.31-1.el7.x86_64.rpm
mysql-community-server-8.0.31-1.el7.x86_64.rpm
mysql-connector-j-8.0.31.jar
# 阿里云服务器按照如下步骤执行
# 由于阿里云服务器安装的是Linux最小系统版,没有如下工具,所以需要安装
# 卸载MySQL依赖,虽然机器上没有装MySQL,但是这一步不可少
sudo yum remove mysql-libs
# 下载依赖并安装
sudo yum install libaio
sudo yum -y install autoconf
# 如果想检查下上述文件有无安装,执行
sudo yum list installed | grep libaio
sudo yum list installed | grep autoconf
# 切换到hadoop102的root用户
su root
# 执行/opt/software/mysql/目录下install_mysql.sh
vim install_mysql.sh
# 执行脚本
sh install_mysql.sh

mysql本地安装脚本

install_mysql.sh
# 卸载MySQL
systemctl stop mysql mysqld 2>/dev/null
rpm -qa | grep -i 'mysql\|mariadb' | xargs -n1 rpm -e --nodeps 2>/dev/null
rm -rf /var/lib/mysql /var/log/mysqld.log /usr/lib64/mysql /etc/my.cnf /usr/my.cnf
set -e
# 安装并启动MySQL
yum install -y *.rpm >/dev/null 2>&1
systemctl start mysqld
#更改密码级别并重启MySQL
sed -i '/\[mysqld\]/avalidate_password.length=4\nvalidate_password.policy=0' /etc/my.cnf
systemctl restart mysqld
# 更改MySQL配置
tpass=$(cat /var/log/mysqld.log | grep "temporary password" | awk '{print $NF}')
cat << EOF | mysql -uroot -p"${tpass}" --connect-expired-password >/dev/null 2>&1
set password='000000';
update mysql.user set host='%' where user='root';
alter user 'root'@'%' identified with mysql_native_password by '000000';
flush privileges;
EOF

连接mysql

# 通过MySQL可视化客户端连接数据库
# 创建数据库
# 设置数据库名称为gmall,编码为utf8mb4,排序规则为utf8mb4_general_ci
# 导入数据库结构脚本(gmall.sql)
经过上述安装后,可以通过临时密码6个0进入mysql
mysql -uroot -p000000
修改root密码,本地访问
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
其他主机也可访问,执行完后刷新,不刷新也能生效
ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
查看都有哪些root用户,可能会存在localhost和%并存的情况,默认只有%
SELECT User, Host, authentication_string FROM mysql.user WHERE User = 'root';
修改为native连接方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'new_password';
退出
exit

hive安装

安装流程(内存占用400M,升至2.5G)

把hive-3.1.3.tar.gz上传到linux的/opt/software目录下
解压hive-3.1.3.tar.gz到/opt/module/目录下面
tar -zxvf /opt/software/hive-3.1.3.tar.gz -C /opt/module/
修改hive-3.1.3-bin.tar.gz的名称为hive
mv /opt/module/apache-hive-3.1.3-bin/ /opt/module/hive
修改/etc/profile.d/my_env.sh,添加环境变量
sudo vim /etc/profile.d/my_env.sh
添加内容
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
source一下 /etc/profile.d/my_env.sh文件,使环境变量生效
source /etc/profile.d/my_env.sh
解决日志Jar包冲突,进入/opt/module/hive/lib目录
mv log4j-slf4j-impl-2.17.1.jar log4j-slf4j-impl-2.17.1.jar.bak
Hive元数据配置到MySQL(下个代码块)

Hive元数据配置到MySQL

将MySQL的JDBC驱动拷贝到Hive的lib目录下
cp /opt/software/mysql/mysql-connector-j-8.0.31.jar /opt/module/hive/lib/
配置Metastore到MySQL
在$HIVE_HOME/conf目录下新建hive-site.xml文件
vim hive-site.xml
# 配置Hive保存元数据信息所需的 MySQL URL地址
# 配置Hive连接MySQL的驱动全类名
# 配置Hive连接MySQL的用户名
# 配置Hive连接MySQL的密码
启动Hive(下个代码块)

hive-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!--配置Hive保存元数据信息所需的 MySQL URL地址--><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop1:3306/metastore?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;allowPublicKeyRetrieval=true</value></property><!--配置Hive连接MySQL的驱动全类名--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property><!--配置Hive连接MySQL的用户名 --><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><!--配置Hive连接MySQL的密码 --><property><name>javax.jdo.option.ConnectionPassword</name><value>password</value></property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><property><name>hive.metastore.schema.verification</name><value>false</value></property><property><name>hive.server2.thrift.port</name><value>10000</value></property><property><name>hive.server2.thrift.bind.host</name><value>hadoop1</value></property><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property><property><name>hive.cli.print.header</name><value>true</value></property><property><name>hive.cli.print.current.db</name><value>true</value></property>
</configuration>

启动Hive

# 初始化元数据库
# 登陆MySQL
mysql -uroot -p<pwd>
# 新建Hive元数据库
create database metastore;
# 初始化Hive元数据库(mysql外)
schematool -initSchema -dbType mysql -verbose
# 修改元数据库字符集
# Hive元数据库的字符集默认为Latin1,由于其不支持中文字符,所以建表语句中如果包含中文注释,会出现乱码现象
# 修改Hive元数据库中存储注释的字段的字符集为utf-8
use metastore;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
# 表注释
alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;
# 退出mysql
quit;
# 启动Hive客户端
hive
# 查看一下数据库
show databases;
# 退出或exit;
quit;

Hive环境的搭建(安装spark)

# 上传并解压解压spark-3.3.1-bin-without-hadoop.tgz
tar -zxvf spark-3.3.1-bin-without-hadoop.tgz -C /opt/module/
mv /opt/module/spark-3.3.1-bin-without-hadoop /opt/module/spark
# 修改spark-env.sh配置文件
# 修改文件名
mv /opt/module/spark/conf/spark-env.sh.template /opt/module/spark/conf/spark-env.sh
# 编辑文件
vim /opt/module/spark/conf/spark-env.sh
# 增加如下内容
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
# 配置SPARK_HOME环境变量
vim /etc/profile.d/my_env.sh
# 添加如下内容
# SPARK_HOME
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin
# source 使其生效
source /etc/profile.d/my_env.sh
# 在hive中创建spark配置文件
vim /opt/module/hive/conf/spark-defaults.conf
# 添加如下内容(在执行任务时,会根据如下参数执行),少于512会报错
spark.master                               yarn
spark.eventLog.enabled                   true
spark.eventLog.dir                        hdfs://hadoop1:8020/spark-history
spark.executor.memory                    512m
spark.driver.memory                      512m
# 在HDFS创建如下路径,用于存储历史日志
hadoop fs -mkdir /spark-history
# 向HDFS上传Spark纯净版jar包
hadoop fs -mkdir /spark-jars
hadoop fs -put /opt/module/spark/jars/* /spark-jars
# 修改hive-site.xml文件
vim /opt/module/hive/conf/hive-site.xml
# 添加如下内容
<!--Spark依赖位置(注意:端口号8020必须和namenode的端口号一致)-->
<property><name>spark.yarn.jars</name><value>hdfs://hadoop1:8020/spark-jars/*</value>
</property><!--Hive执行引擎-->
<property><name>hive.execution.engine</name><value>spark</value>
</property>

向HDFS上传Spark纯净版jar包说明

说明1:采用Spark纯净版jar包,不包含hadoop和hive相关依赖,能避免依赖冲突。

说明2:Hive任务最终由Spark来执行,Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点。所以需要将Spark的依赖上传到HDFS集群路径,这样集群中任何一个节点都能获取到。

运行

Hive on Spark测试
启动hive客户端
hive
创建一张测试表
create table student(id int, name string);
通过insert测试效果
insert into table student values(1,'abc');
insert into table student values(2,'efg');
insert into table student values(3,'hjk');
insert into table student values(4,'lmn');
insert into table student values(5,'opq');
若结果如下,则说明配置成功

测试成功结果

result

image

遇到的问题

spark执行器和驱动器内存最少默认要512M,少于这个值会报错,修改/opt/module/hive/conf/spark-defaults.conf

其他节点访问主节点的datanode时,用主节点的内网地址访问的,修改配置通过主机名访问datanode,hdfs-site.xml

三个节点不知道为什么都登不上了,修改密码后,改成只允许ip间通信

# 其他节点访问主节点的datanode时,用主节点的内网地址访问的,修改配置通过主机名访问datanode,hdfs-site.xml<!-- 客户端通过主机名连接 DataNode --><property><name>dfs.client.use.datanode.hostname</name><value>true</value></property>

参考资料

海波老师-电商数仓

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

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

相关文章

华为配置篇-ISIS基础实验

ISIS 一、简述二、常用命令总结三、实验 一、简述 一、基本定义与历史背景 IS-IS&#xff08;Intermediate System to Intermediate System&#xff0c;中间系统到中间系统&#xff09;是一种链路状态路由协议&#xff0c;最初由ISO设计用于OSI&#xff08;开放系统互联&#…

Python 练习项目:MBTI 命令行测试工具

在当今数字化的时代,心理测试工具越来越受到欢迎,它们帮助人们更好地了解自己,做出更明智的职业选择,甚至改善人际关系。MBTI(迈尔斯-布里格斯性格分类法)是其中一种广为人知的人格测试,通过评估个人在四个维度上的偏好(外向-内向、实感-直觉、理智-情感、判断-理解),…

github使用

登录github&#xff0c;创建仓库&#xff08;repository&#xff09; 如创建一个ADXL345名字的私有仓库 git下载安装 打开git&#xff1a;鼠标右键&#xff0c;选择“Open Git Bash here”&#xff0c;进入 ⭐Git 和 GitHub 绑定 Git 获取SSH keys $ cd ~/.ssh #查看 …

如何在Windows上下载并配置GO语言环境变量

本章教程,主要介绍如何在Windows操作系统上,下载并配置GO语言环境变量。 Go(又称为Golang)是一种开源的编程语言,由Google开发,于2009年首次公开发布。它旨在提供简洁、高效、可靠的软件开发解决方案。Golang是一种静态强类型、编译型语言,Golang具有很强的表达能力,得…

【Linux网络(五)】传输层协议

目录 1、UDP协议 1.1、UDP报头 2、TCP协议 2.1、tcp协议段格式 2.2、TCP三次握手的过程 2.3、TCP四次挥手的过程 2.4、流量控制 2.5、滑动窗口 2.6、延迟应答 2.7、拥塞控制 2.8、面向字节流 2.9、数据粘包 2.10、TCP连接异常问题 1、UDP协议 学习目标&#xff1a…

第十二:josn 传递参数 shouldBindJSON 和结构体的 db字段

链接&#xff1a; Golang教程三&#xff08;结构体、自定义数据类型&#xff0c;接口&#xff09;_golang 自定义数据类型-CSDN博客 结构体指向 json 和数据库的 db type User struct { ID int json:"id" db:"user_id" Name string json:…

Retinexformer:基于 Retinex 的单阶段 Transformer 低光照图像增强方法

开头发点牢骚&#xff1a;本来做的好好都都要中期了&#xff0c;导师怎么突然给我换题目啊。真是绷不住了......又要从头开始学了&#xff0c;唉&#xff01; 原论文链接&#xff1a;Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement 低光…

游戏引擎学习第182天

回顾和今天的计划 昨天的进展令人惊喜&#xff0c;原本的调试系统已经被一个新的系统完全替换&#xff0c;新系统不仅能完成原有的所有功能&#xff0c;还能捕获完整的调试信息&#xff0c;包括时间戳等关键数据。这次的替换非常顺利&#xff0c;效果很好。 今天的重点是在此基…

关于我对接了deepseek之后部署到本地将数据存储到mysql的过程

写在前面 今天写一下使用nodejs作为服务端&#xff0c;vue作为客户端&#xff0c;mysql的数据库&#xff0c;对接deepseek的全过程&#xff0c;要实现一个很简单的效果就是&#xff0c;可以自由的询问&#xff0c;然后可以将询问的过程存储到mysql的数据库中。 文档对接 deeps…

Git 提示 “LF will be replaced by CRLF“ 的原因及解决方案

遇到的问题: warning: in the working copy of build/build.js, LF will be replaced by CRLF the next time Git touches it warning: in the working copy of build/check-versions.js, LF will be replaced by CRLF the next time Git touches it warning: in the worki…

Axure设计之中继器表格——拖动列调整位置教程(中继器)

一、原理介绍 实现表格列的拖动排序&#xff0c;主要依赖Axure的动态面板和中继器两大核心功能&#xff1a; 动态面板交互控制 将表格的列标题封装在动态面板中&#xff0c;通过拖拽事件&#xff08;开始、移动、结束&#xff09;捕捉用户操作 在拖拽过程中实时计算鼠标位置&…

IDEA工具使用之启动项目失败且无日志打印

IDEA工具使用之启动项目失败且无日志打印 问题描述原因分析解决方案方案一&#xff1a;使用类路径缩短方案&#xff08;推荐&#xff09;方案二&#xff1a;修改启动配置 总结 问题描述 概述 新拉取的项目&#xff0c;基于IDEA本地调试启动失败&#xff0c;控制台也没有跳转打…

GC overhead limit exceeded---Java 虚拟机 (JVM) 在进行垃圾回收内存量非常少解决

背景&#xff1a; 我正在跑一个数据处理较为复杂的程序。然后调试了很多遍&#xff0c;出现了GC问题&#xff0c;如下图bug. GC overhead limit exceeded-这个bug错误通常表示 Java 虚拟机 (JVM) 在进行垃圾回收时花费了过多的时间&#xff0c;并且回收的内存量非常少。…

SAP GUI Script for C# SAP脚本开发快速指南与默认主题问题

SAP GUI Script for C# 快速指南 SAP 脚本的快速使用与设置. 解决使用SAP脚本执行后,默认打开的SAP是经典主题的问题 1. 解决默认主题问题 如果您使用的是SAP GUI 740,并遇到无法打开对话框的问题,请先将主题设置为经典主题(Classic Theme),应用更改后重新打开SAP GUI …

测试用例`

1.什么是测试用例 测试⽤例&#xff08;Test Case&#xff09;是为了实施测试⽽向被测试的系统提供的⼀组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素. 2.测试用例的万能公式(重点) 设计测试⽤例的万能公式&#xff1a; 功能测试界…

【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV5模型部署

【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署前言Windows平台搭建依赖环境模型转换--pytorch转onnxONNXRuntime推…

Qt:QWebEngineView显示网页失败

今天在新电脑搭建qt开发环境&#xff0c;在运行程序时发现通过QWebEngineView显示的html失败&#xff0c;同样的代码在旧电脑上没有这个问题 分析过程 &#xff08;1&#xff09;qt出现如下信息提示 [21296:12076:0325/161831.084:ERROR:platform_handle_in_transit.cc(34)] …

第十六届蓝桥杯模拟二(串口通信)

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…

uni-app页面怎么设计更美观

顶部 页面最顶部要获取到手机设备状态栏的高度&#xff0c;避免与状态栏重叠或者被状态栏挡住 // 这是最顶部的父级容器 <view :style"{ paddingTop: ${statusBarHeight extraPadding}px }">.... </view> export default {data() {return {statusBarH…

uniapp超简单ios截屏和上传app store构建版本方法

​ 假如使用windows开发ios的应用&#xff0c;上架的时候&#xff0c;你会发现&#xff0c;上架需要ios应用多种尺寸的ios设备的截图&#xff0c;和需要xcode等工具将打包好的ipa文件上传到app store的构建版本。 大部分情况下&#xff0c;我们的公司都没有这么多款ios设备来…