| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 基于Hadoop部署实践对网站日志分析(大数据分析案例) -> 正文阅读 |
|
[大数据]基于Hadoop部署实践对网站日志分析(大数据分析案例) |
目录 ??? 💎 💍 🏆 🎼 🎹 🎻 🎮 🃏 🎴 🎲 实践项目所需资料 hive安装手册(如果需要本项目的Hadoop集群压缩包(包含所有组件,免去安装部署),可以私信博主,解压可使用!) hive安装资料手册.rar-Hadoop文档类资源-CSDN下载 日志数据文件: 大数据分析-网站日志数据文件(Hadoop部署分析资料)-Hadoop文档类资源-CSDN下载 预处理MapReduce代码(python) hadoop实训课数据清洗py脚本(MapReducepython代码,可执行文件脚本,使用方法)-Hadoop文档类资源-CSDN下载 使用hadoop-streaming运行Python编写的MapReduce程序.rar-Hadoop文档类资源-CSDN下载 PPT演示操作指南(按照步骤做!有原理解释) hadoop实践项目-PPT演示步骤-Hadoop文档类资源-CSDN下载 本项目需要的安装包(用于需要自己部署所需) Hadoop部署实践所需的安装包(Ubuntu下的安装包)-Hadoop文档类资源-CSDN下载 分析源码: Hadoop网站日志分析源码(hive命令).txt-Hadoop文档类资源-CSDN下载 如果你需要本项目Word,可以直接使用博主已经写好的课程设计模板: 基于hadoop对某网站日志分析部署实践课程设计报告参考模板.doc-Hadoop文档类资源-CSDN下载 ??? 💎 💍 🏆 🎼 🎹 🎻 🎮 🃏 🎴 🎲 1、项目概述本次要实践的数据日志来源于国内某技术学习论坛,该论坛由某培训机构主办,汇聚了众多技术学习者,每天都有人发帖、回帖。至此,我们通过Python网络爬虫手段进行数据抓取,将我们网站数据(2013-05-30,2013-05-31)保存为两个日志文件,由于文件大小超出我们一般的分析工具处理的范围,故借助Hadoop来完成本次的实践。 2、总体设计2.1 Hadoop插件安装及部署第一步:Hadoop环境部署和源数据准备 第二步:使用python开发的mapper reducer进行数据处理。 第三步:创建hive数据库,将处理的数据导入hive数据库 第四步:将分析数据导入mysql 3、详细实现步骤操作纪要? 3.1 hadoop环境准备?? - Hadoop 首先开启Hadoop集群:start-all.sh:开启所有的Hadoop所有进程,在主节点上进行 NameNode它是Hadoop 中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问。 Secondary??NameNode是一个用来监控HDFS状态的辅助后台程序。 DataNode它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个 datanode 守护进程。 NodeManager: 1、是YARN中每个节点上的代理,它管理Hadoop集群中单个计算节点 2、包括与ResourceManger保持通信,监督Container的生命周期管理, 3、监控每个Container的资源使用(内存、CPU等)情况,追踪节点健 4、康状况,管理日志和不同应用程序用到的附属服务(auxiliary service) ResourceManager:在YARN中,ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicationManager)RM与每个节点的NodeManagers (NMs)和每个应用的ApplicationMasters (AMs)一起工作。 ?? - hive Show databases;展示数据库的名称 ?? - mysql ?? - sqoop 3.2 源数据文件准备?? - 下载日志文件 ?? - 将文件拷贝到hadoopvm虚拟机 记住虚拟机上本地路径如:/home/hadoop/logfiles/
将Python脚本里面的参数和路径替换,刚刚找到的替换第一行 在hdfs里面新建我们的文件夹:logfiles,然后把我们的日志文件放入里面 ?? - 将文件使用hdfs命令上传到HDFS 先创建hdfs路径: 参数解释:创建文件时候mkdir -p (创建多级目录,父目录存在不报错,依旧在此目录创建没有的子目录)
再上传文件到hdfs 参数解释: put命令把本地的文件上传到hdfs里面,命令为put 本地路径 hdfs路径 ls -R 递归显示该目录下的所有文件夹(文件)属性和信息
?3.3 python开发mapreduce脚本使用python开发mapreduce脚本对日志数据进行清理,目的是将平面的文本数据解析关键字段成结构化数据,以便存入结构化数据库hive进行分析。 ?? - mapper程序 ? 拷贝到hadoopvm虚拟机,记住路径如:/home/hadoop/logfiles/format_mapper.py ?? - reduce程序 ? 拷贝到hadoopvm虚拟机,记住路径如:/home/hadoop/logfiles/format_reducer.py ?? - 使用hadoop-streaming运行mapper reducer程序,示例: ?? - 修改python程序文件的执行权限: 参数解释: cd 切换到该路径下,cd ~ :切换到家目录,cd .. 切换到上一级的目录 Chmod 给我们的文件加入权限;数字为777 代表可读可写可执行 详解: r (read) ? ???----------------> ? 4 w (write) ? ?----------------> ? 2 x (excute) ?? ----------------> ? 1 或者
例如: chmod u+rwx, g+rwx, o+rwx filename 改命令说明对filename文件, 赋予user、group、other均有read、write、excute的权限
-执行脚本文件:
执行我们的脚本文件,可以用source或者./ 查看数据清洗的文件
- 结果文件(查看) 参数解释:cat 查看文件里面的内容,这个是全部查看,还有其他的查看命令:cat主要有三大功能:
?3.4 根据结果文件结构建立hive数据库表?? 3.4.1在结果文件上创建分区表? ?- 表名 (techbbs) ?? - 表类型 (External) ?? - 表字段 ?? ?字段名??? 字段类型? ??描述 ??? ip??? ???string??? 访客IP地址 ??? atime??? string??? 访问时间 ??? url??? ??string??? 访问页面 ?? - 表分区字段 (logdate string) ?? - 表分隔符 (TERMINATED BY ‘,’) ?? - 表路径 (LOCATION /xxx/xxx) 首先把清洗后的文件放在我们自己设定的文件夹里面 参数解释:MV 移动或者剪切 使用格式:MV 源文件 目标路径最后也可以对其进行重命名,如果不加/那么就是重命名,加了就是把其粘贴在该路径下面
在hive里面进行创建表格,这里创建一个分区表,create external table 表名(字段 字段类型…..)partitioned by (分区字段 字段类型) rowformat delimted fields terminated by ‘分割符’,location 数据路径的祖文件夹(不包含数据的直接存储文件夹)? ? 建表语句:
截图: ?3.4.2 按日期创建分区建立分区语句 Alter table 表名 add partition(分区字段=‘分区标签’)location 数据路径(数据文件的父文件夹)
?
截图: 数据导入成功! 3.5 使用Hive对结果表进行数据分析统计?3.5.1 PV量创建一个表使用create,这里我们把查询出来的数据,直接创建一个视图,select count(1) 统计数量,这里的语法意思就是,统计日期为2013-05-30(2013-05-31)的日志记录数量,也就是PV(浏览量)
?
?3.5.2 注册用户数这里使用一个hive里面的函数:instr(源字符串,匹配字符串),通过给定一个字符串,然后利用匹配字符串的整体,返回匹配字符串的第一个字符在源字符串的索引位置。所以该语句就是有两个条件,分别是日期和个函数所匹配到的结果,如果有这个网址那么就是返回一个索引(大于0的)
? ?3.5.3 独立IP数独立IP数,这里直接对我们的IP字段进行去重处理,这样就可以显示IP的独立数量了
?3.5.4 跳出用户数跳出用户数:只浏览了一个页面便离开了网站的访问次数,即只浏览了一个页面便不再访问的访问次数。这里,我们可以通过用户的IP进行分组,如果分组后的记录数只有一条,那么即为跳出用户。将这些用户的数量相加,就得出了跳出用户数 先对IP进行分组,然后使用having进行过滤 过滤这个分组里面只有一条记录的条数,最后进行计数,就得到了我们的跳出用户数量
? 将所有的查询放在一张表里: set?hive.mapred.mode=nonstrict;(解决多表连接的问题) 内连接表示查询两个表的交集,而且ON的条件为 1=1 就表示连接条件永远成立,这里使用将所有的查询结果汇总到一张数据表里面
? 3.6 使用Sqoop将hive分析结果表导入mysql?3.6.1 创建mysql表mysql -u root -p(启动MySQL,需要输入密码,不显示) create database whw;(创建数据库) 创建一个表格
?3.6.2 将hive结果文件导入mysql查看hive存放的表位置
使用sqoop将我们的hive里面的结果表导入到我们的MySQL里面,使用sqoop export –connect jdbc:mysql://localhost:3306/数据库 –username root -p –table MySQL里面的表名 –export-dir hive里面结果表的存储位置 -m 1 –input -fields-terminated -by ‘\001’? 新建终端执行:
查看MySQL是否导入成功?
成功导入! ? 附加操作—增添色彩本地Navicat连接:(我们用虚拟机里面的IP来连接我们的本地Navicat,这样有助于我们数据分析可视化!) 数据可视化(项目色彩一);数据可视化可以直观的把我们的数据展现出来,作为领导者决策的重要参考意见 我采用pycharm的pymysql对虚拟机里面的MySQL进行远程连接,通过编程对数据可视化一键展示,不需要我们手动的添加数据,直接可以保存变量数据 简单的数据分析:很明显我们可以通过可视化的效果得知,2013-05-31的浏览量、注册用户、独立IP数这些正向指标都比较的好,都是高于2013-05-30的效果,所以我们可以在这一天对网站加大维护和投入相应的广告来盈利。
将数据导入到hbase(项目色彩二)创建数据表和列族:create 'whw','data' 插入数据:
参数说明:添加数据:put ‘表名称’,’行键’,’列族:列名1,列名2……’,‘数据1,数据2……’在这里我们就可以理解为是一个二维表,也就是Excel类似的,一行一列确定一个单元格 扫描整个列族:scan ‘表名称’, {COLUMN=>‘列族’} Scan ‘whw’,{ COLUMN =>’data’} 每文一语
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:30:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |