hadoop_day06

本文介绍了点击流数据的概念、模型构建方法,包括Pageviews和Visits模型,以及如何利用Azkaban进行复杂任务调度,实现点击流数据的采集、预处理和分析。
点击流
1.点击流的概念:
	点击流就是用户在网站上持续访问的轨迹,由同一个用户的一系列点击流数据构成用户的点击流轨迹
2.点击流模型:
PageViews模型:
	Pageviews模型关注同一个用户在一次session中,分别浏览了具体的哪些网页,以及每个页面的停留时间
Visits模型:
	Visits模型关注同一个用户在一次session中,一共浏览了多少个网页,以及停留的总时间
3.数据的采集
	在nginx服务器页面下部署埋点代码,然后通过flume下沉到hdfs
4.数据预处理
第一步:清洗数据
	使用mapreduce的map阶段,对采集到的数据进行第一轮清洗,有效的数据标识为true,无效的数据标识为false,并对日期格式化为yyyy-MM-dd HH:mm:ss格式,一行记录不同数据间使用不可见分隔符'\001'来分隔;
清洗数据不需要数据的汇总行为,因此只需要定义mapper;在mrAppTask中设置job.setNumReduceTasks(0),即可避免汇总
第二步:构建Pageviews模型
	读取清洗数据;定义Mapper,根据用户IP作为key来对用户进行分组处理,每出现一组key调用一次reduce();reduce阶段先将迭代器中的数据封装到List集合中,然后对集合中的数据,使用内比较器Comparator进行排序;遍历List;如果list.size()=1,说明用户只有一条访问记录,直接context.write()输出;比较这一次和上一次访问的时间间隔,30分内则认为是同一次会话;最后一次默认认为访问时间是60s
第三步:构建Visits模型:
	读取Pageviews模型,根据会话sessionId分组,排序,取出list.get(0)和list.get(list.size()-1)得到进入网站和离开网站的时间;计算需要的值
实体类
1.数据清洗实体
public class WebLogBean{
    private boolean valid = true;// 判断数据是否合法
	private String remote_addr;// 记录客户端的ip地址
	private String remote_user;// 记录客户端用户名称,忽略属性"-"
	private String time_local;// 记录访问时间与时区
	private String request;// 记录请求的url与http协议
	private String status;// 记录请求状态;成功是200
	private String body_bytes_sent;// 记录发送给客户端文件主体内容大小
	private String http_referer;// 用来记录从那个页面链接访问过来的
	private String http_user_agent;// 记录客户浏览器的相关信息
}
2.Pageviews实体
public class PageViewsBean implements Writable {
	private String session;		//session会话ID
	private String remote_addr;		//客户端的ip地址
	private String timestr;		 
	private String request;		//请求方式
	private int step;		//当前访问的是第几个页面
	private String staylong;	
	private String referal;
	private String useragent;
	private String bytes_send;	
	private String status;		//响应状态码
}
3.Visits实体
public class VisitBean implements Writable {
	private String session;
	private String remote_addr;
	private String inTime;
	private String outTime;
	private String inPage;
	private String outPage;
	private String referal;
	private int pageVisits;
}
Azkaban
1.工作流任务调度的实现方式
* 简单任务调度
	linux crontab
* 复杂的任务调度
	azkaban、ooize、Zeus
2.azkaban介绍:
	Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪工作流。
3.azkaban组成
mysql服务器:用于存储项目、日志或者执行计划之类的信息
web服务器:使用Jetty对外提供web服务,使用户可以通过web页面方便管理,https://node-1:8443
executor服务器:负责具体的工作流的提交、执行
4.job配置文件的定义:
# test.job
type=command
dependencied=other
commmand=echo hello
5.azkaban的使用流程:
第一步:定义job配置文件,并压缩为zip(windows)
第二步:在azkaban的web页面创建Project并上传配置文件,每一个项目都只能放一个job


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值