栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

6. 数据仓库环境准备

6. 数据仓库环境准备

6. 数据仓库环境准备

1. 数据仓库环境准备

1.1 数据仓库运行环境

1.1.1 Hive环境搭建

1.1.1.1 Hive on Spark 配置1.1.1.2 Hive on Spark 测试 1.1.2 Yarn环境配置 1.2 数据仓库开发环境

1.2.1 启动 HiveServer21.2.2 配置 DataGrip 连接

1.2.2.1 创建连接1.2.2.2 配置连接属性1.2.2.3 测试使用 1.3 模拟数据准备

1.3.1 用户行为日志1.3.2 业务数据

1.3.2.1 生成模拟数据1.3.2.2 全量表同步1.3.2.3 增量表首日全量同步

1. 数据仓库环境准备 1.1 数据仓库运行环境 1.1.1 Hive环境搭建

https://blog.csdn.net/qq_44226094/article/details/123218860

Hive引擎:

默认MRTezSpark

Hive on Spark:Hive 既作为存储元数据又负责 SQL 的解析优化,语法是 HQL 语法,执行引擎变成了 Spark ,Spark 负责采用 RDD 执行

Spark on Hive : Hive 只作为存储元数据,Spark 负责 SQL 解析优化,语法是 Spark SQL 语法,Spark 负责采用 RDD 执行

1.1.1.1 Hive on Spark 配置

兼容性说明

官网下载的 Hive3.1.2 和 Spark3.0.0 默认是不兼容的
因为 Hive3.1.2 支持的 Spark 版本是 2.4.5,所以需要重新编译 Hive3.1.2 版本

编译步骤:

官网下载 Hive3.1.2 源码,修改 pom 文件中引用的 Spark 版本为 3.0.0 ,编译通过,直接打包获取 jar 包

在 Hive 所在节点部署 Spark

Spark 官网下载 jar 包地址:

http://spark.apache.org/downloads.html

上传并解压解压 spark-3.0.0-bin-hadoop3.2.tgz

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/

重名 :

mv spark-3.0.0-bin-hadoop3.2/ spark-3.0.0/

配置 SPARK_HOME 环境变量

sudo vim /etc/profile.d/my_env.sh

添加内容 :

# SPARK_HOME
export SPARK_HOME=/opt/module/spark-3.0.0
export PATH=$PATH:$SPARK_HOME/bin

source 使其生效

source /etc/profile.d/my_env.sh

在 hive 中创建 spark 配置文件

vim spark-defaults.conf

添加内容(执行任务时,会根据参数执行) :

spark.master                           yarn
spark.eventLog.enabled                 true
spark.eventLog.dir                     hdfs://cpu101:8020/spark-history
spark.executor.memory                  1g
spark.driver.memory					   1g

在 HDFS 创建如下路径,用于存储历史日志

hadoop fs -mkdir /spark-history

向 HDFS 上传 Spark 纯净版 jar 包

由于 Spark3.0.0 非纯净版默认支持的是 hive2.3.7 版本,直接使用会和安装的 Hive3.1.2 出现兼容性问题。所以采用 Spark 纯净版 jar 包,不包含hadoop 和 hive 相关依赖,避免冲突

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

上传并解压 spark-3.0.0-bin-without-hadoop.tgz

tar -zxvf /opt/software/spark-3.0.0-bin-without-hadoop.tgz

上传 Spark 纯净版 jar 包到 HDFS

hadoop fs -mkdir /spark-jars

hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars

修改 hive-site.xml 文件

vim hive-site.xml

配置 HA :

	
	
	    spark.yarn.jars
	    hdfs://mycluster/spark-jars/*
	
	  
	
	
	    hive.execution.engine
	    spark
	

未配置 HA :

	
	
	    spark.yarn.jars
	    hdfs://cpu101:8020/spark-jars/*
	
	  
	
	
	    hive.execution.engine
	    spark
	

1.1.1.2 Hive on Spark 测试

启动 hive 客户端

hive

创建一张测试表

create table student(id int, name string);

通过 insert 测试效果

ClassNotFoundException: org.apache.spark.AccumulatorParam 解决方案 :

https://blog.csdn.net/qq_44226094/article/details/123467092

insert into table student values(1, 'cpu');

insert into table student values(2, 'code');

1.1.2 Yarn环境配置

增加 ApplicationMaster 资源比例

容量调度器对每个资源队列中同时运行的 Application Master 占用的资源进行了限制,该限制通过 yarn.scheduler.capacity.maximum-am-resource-percent 参数实现,其默认值是 0.1

该参数表示每个资源队列上Application Master 最多可使用的资源为该队列总资源的 10% ,目的 : 防止大部分资源都被 Application Master 占用,而导致 Map/Reduce Task 无法执行

生产环境该参数可使用默认值

当集群垃圾时,集群资源总数很少,如果只分配 10% 的资源给 Application Master,则可能出现,同一时刻只能运行一个 Job 的情况,因为一个Application Master 使用的资源就可能已经达到 10% 的上限了。所以可将该值适当调大

在 cpu101 的 /opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml文件中修改参数值

vim capacity-scheduler.xml
	
		yarn.scheduler.capacity.maximum-am-resource-percent
		0.8
	

分发 capacity-scheduler.xml 配置文件

xsync capacity-scheduler.xml

关闭正在运行的任务,重新启动 yarn 集群

stop-yarn.sh
start-yarn.sh

1.2 数据仓库开发环境

数仓开发工具 DataGrip。需要用到 JDBC 协议连接到 Hive,所以启动 HiveServer2

1.2.1 启动 HiveServer2
hiveserver2

1.2.2 配置 DataGrip 连接 1.2.2.1 创建连接

1.2.2.2 配置连接属性

所有属性配置,和 Hive 的 beeline 客户端配置一致即可

第一使用,配置过程会提示缺少 JDBC 驱动,下载即可

1.2.2.3 测试使用

创建数据库gmall,并观察是否创建成功

创建数据库

查看数据库

修改连接,指明连接数据库

选择当前数据库为 gmall

1.3 模拟数据准备

企业在开始搭建数仓时,业务数据库存在历史数据,用户行为日志无历史数据

假定数仓上线的日期为 2020-06-14,为模拟真实场景,需准备以下数据

在执行以下操作之前,先将 HDFS 上 /origin_data 路径下之前的数据删除

hadoop fs -rm -r /origin_data

1.3.1 用户行为日志

用户行为日志,一般是没有历史数据的,故日志只需要准备 2020-06-14 一天的数据

具体操作如下:

启动日志采集通道

Zookeeper

zk.sh start

Kafak

kf.sh start

Flume

f1.sh start
f2.sh start

修改两个日志服务器(cpu101、cpu102)

/opt/module/applog/application.yml 配置文件

mock.date=2020-06-14

执行日志生成脚本

lg.sh

观察 HDFS 是否出现相应文件

1.3.2 业务数据

业务数据一般存在历史数据,此处需准备 2020-06-10 至 2020-06-14 的数据

具体操作如下 :

关闭 Maxwell

mxw.sh stop

清空 gmall 数据 , 在重新 sql 写入

1.3.2.1 生成模拟数据

修改 cpu101 节点上的 /opt/module/db_log/application.properties 文件

#业务日期
mock.date=2020-06-10
#是否重置,首日须置为1,之后置为0
mock.clear=1
#是否重置用户,首日须置为1,之后置为0
mock.clear.user=1

执行模拟生成业务数据的命令,生成第一天 2020-06-10 的历史数据。

java -jar gmall2020-mock-db-2021-11-14.jar

修改 /opt/module/db_log/application.properties 文件

#业务日期
mock.date=2020-06-11
#是否重置,首日须置为1,之后置为0
mock.clear=0
#是否重置用户,首日须置为1,之后置为0
mock.clear.user=0

执行模拟生成业务数据的命令,生成第二天 2020-06-11 的历史数据

java -jar gmall2020-mock-db-2021-11-14.jar

之后只修改 /opt/module/db_log/application.properties 文件中的 mock.date 参数,依次改为 2020-06-12 ,2020-06-13 ,2020-06-14 ,并分别生成对应日期的数据

1.3.2.2 全量表同步

执行全量表同步脚本

mysql_to_hdfs_full.sh all 2020-06-14

观察HDFS上是否出现全量表数据

1.3.2.3 增量表首日全量同步

清除 Maxwell 断点记录

由于 Maxwell; 支持断点续传,而重新生成业务数据的过程,会产生大量的 binlog 操作日志,这些日志并不需要。所以清除 Maxwell 的断点记录,从 binlog 最新的位置开始采集

关闭Maxwell

mxw.sh stop

清空 Maxwell 数据库,相当于初始化 Maxwell

修改 Maxwell 配置文件中的 mock_date 参数

vim config.properties
mock_date=2020-06-14

启动增量表数据通道,包括 Maxwell、Kafka、Flume

f3.sh start
kf.sh start
mxw.sh start

执行增量表首日全量同步脚本

mysql_to_kafka_inc_init.sh all

观察 HDFS 上是否出现全量表数据

    电商数据仓库系统

https://blog.csdn.net/qq_44226094/article/details/123013113

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号