尚硅谷大数据项目电商数仓6.0学习记载----数据堆栈(上) ...

打印 上一主题 下一主题

主题 907|帖子 907|积分 2721

学习视频路径: 
尚硅谷大数据项目【电商数仓6.0】企业数据堆栈项目大数据实战_哔哩哔哩_bilibili
尚硅谷大数据项目电商数仓6.0学习记载----数据收罗部分_尚硅谷电商数仓源码笔记资料下载-CSDN博客

p95-hive情况搭建

 hive摆设

   视频中没有提到hive摆设,先举行hive安装(操作文档3数仓数据同步计谋29页)
  上传hive到linux的/opt/software
解压hive
  1. tar -zxvf /opt/software/hive-3.1.3.tar.gz -C /opt/module/
复制代码
 重命名hive
  1. mv /opt/module/apache-hive-3.1.3-bin/ /opt/module/hive
复制代码
 添加情况变量
  1. sudo vim /etc/profile.d/my_env.sh
  2. #HIVE_HOME
  3. export HIVE_HOME=/opt/module/hive
  4. export PATH=$PATH:$HIVE_HOME/bin
复制代码
更新情况变量
  1. source /etc/profile.d/my_env.sh
复制代码
进入/opt/module/hive/lib,解决日记Jar包辩说
  1. cd /opt/module/hive/lib
  2. mv log4j-slf4j-impl-2.17.1.jar log4j-slf4j-impl-2.17.1.jar.bak
复制代码

Hive元数据设置到MySQL

 将MySQL的JDBC驱动拷贝到Hive的lib目次下
  1. cp /opt/software/mysql/mysql-connector-j-8.0.31.jar /opt/module/hive/lib/
复制代码
 新建hive-site.xml文件
  1. cd /opt/module/hive/bin/conf
  2. vim hive-site.xml
复制代码
  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4.     <!--配置Hive保存元数据信息所需的 MySQL URL地址-->
  5.     <property>
  6.         <name>javax.jdo.option.ConnectionURL</name>
  7.         <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;allowPublicKeyRetrieval=true</value>
  8.     </property>
  9.     <!--配置Hive连接MySQL的驱动全类名-->
  10.     <property>
  11.         <name>javax.jdo.option.ConnectionDriverName</name>
  12.         <value>com.mysql.cj.jdbc.Driver</value>
  13.     </property>
  14.     <!--配置Hive连接MySQL的用户名 -->
  15.     <property>
  16.         <name>javax.jdo.option.ConnectionUserName</name>
  17.         <value>root</value>
  18.     </property>
  19.     <!--配置Hive连接MySQL的密码 -->
  20.     <property>
  21.         <name>javax.jdo.option.ConnectionPassword</name>
  22.         <value>000000</value>
  23.     </property>
  24.     <property>
  25.         <name>hive.metastore.warehouse.dir</name>
  26.         <value>/user/hive/warehouse</value>
  27.     </property>
  28.     <property>
  29.         <name>hive.metastore.schema.verification</name>
  30.         <value>false</value>
  31.     </property>
  32.     <property>
  33.     <name>hive.server2.thrift.port</name>
  34.     <value>10000</value>
  35.     </property>
  36.     <property>
  37.         <name>hive.server2.thrift.bind.host</name>
  38.         <value>hadoop102</value>
  39.     </property>
  40.     <property>
  41.         <name>hive.metastore.event.db.notification.api.auth</name>
  42.         <value>false</value>
  43.     </property>
  44.    
  45.     <property>
  46.         <name>hive.cli.print.header</name>
  47.         <value>true</value>
  48.     </property>
  49.     <property>
  50.         <name>hive.cli.print.current.db</name>
  51.         <value>true</value>
  52.     </property>
  53. </configuration>
复制代码

 启动hive

登录MySQL
  1. mysql -uroot -p
复制代码
 新建hive元数据库
  1. create database metastore;
复制代码
 初始化hive元数据库
  1. exit
  2. schematool -initSchema -dbType mysql -verbose
复制代码

   Hive元数据库的字符集默以为Latin1,由于其不支持中笔墨符,以是建表语句中假如包含中文注释,会出现乱码现象。如需解决乱码问题,须做以下修改。
  修改Hive元数据库中存储注释的字段的字符集为utf-8
   字段注释
  1. mysql -uroot -p000000
  2. use metastore;
  3. alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
复制代码
 表注释
  1. alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;
复制代码
 启动hive(需开启hadoop集群)
  1. cd ./..
  2. hive
复制代码

 检察数据库
  1. show databases;
复制代码



spark纯净版摆设

   spark纯净版无内置hadoop,避免spark中的hadoop版本与yarn的hadoop版本不匹配
   上传并解压,改名为spark
  1. tar -zxvf spark-3.3.1-bin-without-hadoop.tgz -C /opt/module/
  2. mv /opt/module/spark-3.3.1-bin-without-hadoop /opt/module/spark
复制代码
修改设置文件
  1. mv /opt/module/spark/conf/spark-env.sh.template /opt/module/spark/conf/spark-env.sh
  2. vim /opt/module/spark/conf/spark-env.sh
复制代码
 添加以下内容
  1. export SPARK_DIST_CLASSPATH=$(hadoop classpath)
复制代码

 设置情况变量
  1. sudo vim /etc/profile.d/my_env.sh
复制代码
  1. # SPARK_HOME
  2. export SPARK_HOME=/opt/module/spark
  3. export PATH=$PATH:$SPARK_HOME/bin
复制代码
更新情况变量 
  1. source /etc/profile.d/my_env.sh
复制代码
 创建spark设置文件
  1. vim /opt/module/hive/conf/spark-defaults.conf
复制代码
  1. spark.master                               yarn
  2. spark.eventLog.enabled                   true
  3. spark.eventLog.dir                        hdfs://hadoop102:8020/spark-history
  4. spark.executor.memory                    1g
  5. spark.driver.memory                                             1g
复制代码
在hdfs创建路径,存储历史日记
  1. hadoop fs -mkdir /spark-history
复制代码
  接纳Spark纯净版jar包,不包含hadoop和hive相关依赖,能避免依赖辩说。
  Hive使命最终由Spark来执行,Spark使命资源分配由Yarn来调度,该使命有可能被分配到集群的任何一个节点。以是需要将Spark的依赖上传到HDFS集群路径,如许集群中任何一个节点都能获取到。
   在hdfs创建spark-jars,上传jar包
  1. hadoop fs -mkdir /spark-jars
  2. hadoop fs -put /opt/module/spark/jars/* /spark-jars
复制代码
修改hive设置文件
  1. vim /opt/module/hive/conf/hive-site.xml
复制代码
  1. <!--Spark依赖位置(注意:端口号8020必须和namenode的端口号一致)-->
  2. <property>
  3.     <name>spark.yarn.jars</name>
  4.     <value>hdfs://hadoop102:8020/spark-jars/*</value>
  5. </property>
  6.   
  7. <!--Hive执行引擎-->
  8. <property>
  9.     <name>hive.execution.engine</name>
  10.     <value>spark</value>
  11. </property>
复制代码
启动hive
  1. cd ./hive
  2. hive
复制代码
创建一张测试表
  1. create table student(id int, name string);
复制代码
通过insert测试结果
  1. insert into table student values(1,'abc');
复制代码

   容量调度器对每个资源队列中同时运行的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%的上限了。故此处可将该值适当调大
  修改设置文件
  1. cd /opt/module/hadoop/etc/hadoop
  2. vim capacity-scheduler.xml
复制代码
修改参数为0.8

 分发设置文件
  1. xsync capacity-scheduler.xml
复制代码
 重启yarn集群



 p97-数据堆栈开发情况

设置datagrip连接

启动hiveserver2
  1. cd /opt/module/hive/
  2. hiveserver2
复制代码
创建连接
设置驱动

 测试连接

 修改连接,指明数据库

 连接堕落(怀疑是mobax得不停启动hiveserver2)



hive常见问题解决方式

oom报错,调解hive堆内存
  1. cd $HIVE_HOME/conf
  2. cp hive-env.sh.template hive-env.sh
  3. vim hive-env.sh
复制代码


p98-模拟数据生成

历史模拟数据

删除HDFS上/origin_data路径下数据

启动收罗通道
  1. cluster.sh start
复制代码
停止Maxwell
  1. mxw.sh stop
复制代码
生成模拟数据
  1. vim /opt/module/applog/application.yml
复制代码

 启动脚本生成数据
  1. lg.sh
复制代码

继续修改模拟数据日期生成数据(6.5,6.6,6.7)


 删除log目次(历史数据不需要日记,mysql存在业务数据即可)

继续生成6.8数据


 全量表同步

暂停日记收罗脚本
  1. f1.sh stop
  2. f2.sh stop
  3. f3.sh stop
复制代码
执行全量表同步脚本
  1. mysql_to_hdfs_full.sh all 2022-06-08
复制代码


增量表首日全量同步

清空Maxwell数据库,相当于初始化
  1. drop table maxwell.bootstrap;
  2. drop table maxwell.columns;
  3. drop table maxwell.databases;
  4. drop table maxwell.heartbeats;
  5. drop table maxwell.positions;
  6. drop table maxwell.schemas;
  7. drop table maxwell.tables;
复制代码

 启动Maxwell
  1. mxw.sh start
复制代码
 执行增量表首日全量同步脚本(起初hdfs没有数据,打开f3.sh脚本增量表出现了)
  1. mysql_to_kafka_inc_init.sh all
复制代码


p101-ODS层

   ODS层的计划要点如下:
  (1)ODS层的表结构计划依托于从业务系统同步过来的数据结构。
  (2)ODS层要保存全部历史数据,故其压缩格式应选择压缩比较高的,此处选择gzip。
  (3)ODS层表名的命名规范为:ods_表名_单分区增量全量标识(inc/full)。
   日记表

建表语句
  1. DROP TABLE IF EXISTS ods_log_inc;
  2. CREATE EXTERNAL TABLE ods_log_inc
  3. (
  4.     `common` STRUCT<ar :STRING,
  5.         ba :STRING,
  6.         ch :STRING,
  7.         is_new :STRING,
  8.         md :STRING,
  9.         mid :STRING,
  10.         os :STRING,
  11.         sid :STRING,
  12.         uid :STRING,
  13.         vc :STRING> COMMENT '公共信息',
  14.     `page` STRUCT<during_time :STRING,
  15.         item :STRING,
  16.         item_type :STRING,
  17.         last_page_id :STRING,
  18.         page_id :STRING,
  19.         from_pos_id :STRING,
  20.         from_pos_seq :STRING,
  21.         refer_id :STRING> COMMENT '页面信息',
  22.     `actions` ARRAY<STRUCT<action_id:STRING,
  23.         item:STRING,
  24.         item_type:STRING,
  25.         ts:BIGINT>> COMMENT '动作信息',
  26.     `displays` ARRAY<STRUCT<display_type :STRING,
  27.         item :STRING,
  28.         item_type :STRING,
  29.         `pos_seq` :STRING,
  30.         pos_id :STRING>> COMMENT '曝光信息',
  31.     `start` STRUCT<entry :STRING,
  32.         first_open :BIGINT,
  33.         loading_time :BIGINT,
  34.         open_ad_id :BIGINT,
  35.         open_ad_ms :BIGINT,
  36.         open_ad_skip_ms :BIGINT> COMMENT '启动信息',
  37.     `err` STRUCT<error_code:BIGINT,
  38.             msg:STRING> COMMENT '错误信息',
  39.     `ts` BIGINT  COMMENT '时间戳'
  40. ) COMMENT '活动信息表'
  41.     PARTITIONED BY (`dt` STRING)
  42.     ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.JsonSerDe'
  43. LOCATION '/warehouse/gmall/ods/ods_log_inc/'
  44. TBLPROPERTIES ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec');
复制代码
数据装载
  1. load data inpath '/origin_data/gmall/log/topic_log/2022-06-08' into table ods_log_inc partition(dt='2022-06-08');
复制代码
每日数据装载脚本

创建脚本hdfs_to_ods_log.sh
  1. vim hdfs_to_ods_log.sh
复制代码
  1. #!/bin/bash
  2. # 定义变量方便修改
  3. APP=gmall
  4. # 如果是输入的日期按照取输入日期;如果没输入日期取当前时间的前一天
  5. if [ -n "$1" ] ;then
  6.    do_date=$1
  7. else
  8.    do_date=`date -d "-1 day" +%F`
  9. fi
  10. echo ================== 日志日期为 $do_date ==================
  11. sql="
  12. load data inpath '/origin_data/$APP/log/topic_log/$do_date' into table ${APP}.ods_log_inc partition(dt='$do_date');
  13. "
  14. hive -e "$sql"
复制代码
 增长权限
  1. chmod 777 hdfs_to_ods_log.sh
复制代码
利用脚本
  1. hdfs_to_ods_log.sh 2022-06-08
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表