本项目使用命令
Hdfs集群
[root@node01 ~]# start-all.sh
Hive 元数据
[root@node01 ~]# hive --service metastore
Hiveserver2远程连接
[root@node01 ~]# hiveserver2
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. 数据采集汇聚
行为域数据
- 日志前端埋点,生成日志数据 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建外部表,加载数据形成映像
业务域数据
- 业务系统增删改数据库,形成业务数据 2. Sqoop/DataX/Kettle数据抽取
注: Kettle是一些传统企业比较熟悉的ETL(extract-transfer-load)工具
- 落Hive数仓ODS层
- 增量合并处理
datax使用
1.4.2. 采集资源准备
- 启动Hadoop环境:
[root@node01 myjob] start-all.sh
- 启动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 &
- 启动Beeline
[root@node01 myjob] beeline -u jdbc:hive2://node01:10000 -n root
- 执行建表语句
直接复制粘贴文件的内容
目录准备
这一步该镜像虚拟机已经准备完成
[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;
等等
标签:node01,项目,root,流程,01,datax,myjob,数据 From: https://www.cnblogs.com/flyer-ovo/p/16965892.html