(2)上传shop.html文件到/var/www/html目录
(3)在浏览器通过192.168.1.11(自己的id)/shop.html访问网页产生日志
(4)监控nginx生成的访问日志:sudo tail -F /var/log/nginx/access.log
第二步、Flume采集日志到HDFS
准备工作:
1、开启三台虚拟机
(3)创建nginx_memory_hdfs.properties文件并填写
(4)使用nginx_memory_hdfs.properties文件启动Flume
第三步、ETL清洗数据(脏数据)
(1)在eclipse连接hadoop,通过xshell进行连接,并进行可视化
(2)在eclipse创建ETL mapreduce项目,创建一个hive包,写项目
(3)在eclipse编写NginxETLMapper和NginxETLDriver这两个类
(4)打包上传文件到/home/hadoop/web_log目录下(这个时候要注意打包方式,不然会报main的错)
(5)执行jar包:hadoop -jar/home/hadoop/web_log/NginxETL.jar 22-02-22 12(年-月-日 时间)(这个时间是你HDFS上的日志文件数据)
(6)在hdfs上查看,路径是自己eclipse上Driver(测试类上的路径)(/web/log/etl)
第四步、搭建数据到仓库(离线数仓)处理数据的时效性可以分为(离线和实时)
数仓分层,分为四层:
Ods:储存清洗后的日志数据
Dwd:从ods种提取出待分析时间段的数据
Dws:从dwd中提取出商品名称的数据
Ads:基于dws的分析结果
为什么要数仓分层?
1.把复杂的问题简单化
2.数据结构清晰
3.提高数据的复用性
4.隔离原始数据
(1)创建web_log_import.sh脚本并填写
(4)把udf函数打成jar包进行上传到/home/hadoop/web_log
(5)执行两个脚本文件(web_log_import.sh和web_log_analysis.sh)
**注意在执行第二个脚本的时候,hdfs上的数据不能多于7条,否则报错
当master namenode宕机时,在slave1杀死namenode节点再重启namenode
Kill -9 **(节点前的数字)
Hadoop-daemon.sh start namenode
第五步、保存分析结果
(1)查看mysql数据库账号密码:sudo cat /etc/mysql/debian.cnf
(2)进入mysql:mysql -u debian-sys-maint -p密码
(4)授予web_log用户操纵web_log数据库的权限并刷新
(5)退出MySQL使用web_log用户登录,并使用数据库
(6)创建shop_count_rank表,存储hive导出的数据(增量导入)增量导入的基础是全量导入