项目流程

本项目使用命令

Hdfs集群

[root@node01 ~]#   start-all.sh

Hive 元数据

[root@node01 ~]#   hive --service metastore

Hiveserver2远程连接

[root@node01 ~]#   hiveserver2

kafka启动

[root@node01/02/03 ~]#    kafka-server-start.sh /opt/yjx/kafka_2.12-0.11.0.3/config/server.properties

kafka eagle启动

[root@node01 ~]#     ke.sh start

Redis服务

[root@node02 ~]#   redis-server /opt/yjx/redis-6.2.4/redis.conf

关闭hdfs集群

[root@node01 ~]#   stop-all.sh

Ctrl+c或者Ctrl+z关闭前台正在运行的服务

Kill -9 pid 关闭后台运行的服务

[root@node01/02/03 ~]#   init 0

 

流程设计

1. 数据生成

行为数据:

如果要使用第三版flume采集需要在opt.yjx.logdata.有web和wxapp和app三个目录,正常情况是把15天的日志(在资料里面)全放入到APP目录下.txt

 

用户行为日志数据需要在业务系统的前端(或后端)中做埋点

如果需要模拟数据生成,走这串代码

[root@node01 ~]# java -Dstart_date=2021-01-01 -Dend_date=2021-01-15 -jar

datamock.jar

业务数据:

已经在业务系统的数据库中

在node01的mysql数据库中

历史数据 

其他第三方数据

2. 数据采集汇聚

行为域数据

  1. 日志前端埋点,生成日志数据 2. 日志服务器存储为日志文件 3. Flume采集日志文件 4. 日志预处理后写入HDFS 5. 落Hive数仓ODS层

#这里优先启动下游Flume再启动上游Flume

#打开日志:-Dflume.root.logger=INFO,console

行为数据采集:

[root@node01\02\03~]cd /opt/yjx/apache-flume-1.9.0-bin/

1.[root@node03 apache-flume-1.9.0-bin]# bin/flume-ng agent -c conf -f myconf/avro2hdfs_v3.conf -n a2 -Dflume.root.logger=INFO,console

2.[root@node02 apache-flume-1.9.0-bin]# bin/flume-ng agent -c conf -f myconf/avro2hdfs_v3.conf -n a2 -Dflume.root.logger=INFO,console

3.[root@node01 apache-flume-1.9.0-bin]# bin/flume-ng agent -c conf -f myconf/file2avro_v3.conf -n a1 -Dflume.root.logger=INFO,console

然后再使用hive建外部表,加载数据形成映像

 

 

业务域数据

  1. 业务系统增删改数据库,形成业务数据 2. Sqoop/DataX/Kettle数据抽取

注: Kettle是一些传统企业比较熟悉的ETL(extract-transfer-load)工具

  1. 落Hive数仓ODS层
  2. 增量合并处理

datax使用

1.4.2. 采集资源准备

  1. 启动Hadoop环境:

[root@node01 myjob] start-all.sh

  1. 启动Hive环境:

[root@node01 myjob] nohup hive --service metastore 1>/dev/null 2>&1 &

[root@node01 myjob] nohup hive --service hiveserver2 1>/dev/null 2>&1 &

  1. 启动Beeline

[root@node01 myjob] beeline -u jdbc:hive2://node01:10000 -n root

  1. 执行建表语句

直接复制粘贴文件的内容

 

 

目录准备

这一步该镜像虚拟机已经准备完成

[root@node01 ~] cd /opt/yjx/datax

[root@node01 datax] mkdir myjob

[root@node01 datax] cd /opt/yjx/datax/myjob

 

在课件中找到 03-数据采集平台\002_code\datax-jobs 此目录

将这四个文件上传到 /opt/yjx/datax/myjob 目录下

解压jobs.zip

命令是   python /opt/yjx/datax/bin/datax.py jobs/xxxxx.json

这个xxx.json需要自定义,由于这init.sh和data_extraction脚本与数据不兼容所以需要更改xxxx.json的内容

 

 

将这个/dt=${dt}删除即可使用

然后放到相应目录下使用命令

以为例

将该json文件放入当前目录下

使用以下命令

[root@node01 myjob]# python /opt/yjx/datax/bin/datax.py  ods_brand_full.json

Myjob可随意

 

然后运行完在hdfs上查看需要建立dt=2021-01-01

然后

在datagrip中使用MSCK REPAIR TABLE  ods.ods_yjx_brand_full; 自动查找分区

或者使用alter table ods.ods_yjx_brand_full  partition (dt='2021-01-01'); 手动创建分区

然后查看表,数据入仓成功

 

1.4.3. 批量采集

这边我们的数据只有(2021-01-01)~(2021-01-15)的数据,所以init.sh脚本只会采集这15天的数据

[root@node01 myjob] sh init.sh

1.4.4. 单天采集

这里我们需要使用data_extraction.sh这个脚本

[root@node01 myjob] sh data_extraction.sh 2021-01-01 2021-01-02

 

 

3. 数据仓库&用户画像

数据仓库

核心技术选型:Hive(数据仓库基础设施)

计算引擎:MapReduce + SparkSQL

存储系统:底层存储HDFS, 产出存储(hbase,elasticsearch,clickhouse,kylin,mysql)

用户画像

模型设计

数仓分层运算

各类数据的产出

4. 数据服务& OLAP分析平台

用户明细数据(用户画像标签明细,用户行为序列明细)入库HBase(或者Elastic Search),然后

开发数据访问接口服务(RESTful服务)给上层应用

固定报表查询:需要查询的固定报表数据,入库Mysql/HBase(日新、日活、PV、留存、核心业务

转化、关键路径转化、关键事件报表,GMV日报周报月报等)

规范模型自助多维分析:利用Kylin来提供多维分析服务

用户行为自助分析服务:要分析的数据,就放在HDFS上,由Presto提供查询支撑(或Clickhouse)

(或Impala)

5. 其他辅助系统

Azkaban/Oozie任务调度系统

Atlas元数据和血缘追溯管理(数据治理)

其他自研系统

项目遇到的问题

1.Standby namenode无法启动 这个可以解决没有standby的问题

https://blog.csdn.net/gezhu5826/article/details/84202323

2.Hive无法删表问题:(待定)

mysql -uroot -p123456

alter database metastore character set latin1;

等等

 

posted @ 2022-12-08 13:53  飞翔的小鸟er  阅读(100)  评论(0编辑  收藏  举报