02.网站点击流数据分析项目_模块开发_数据采集

3 模块开发——数据采集

3.1 需求

  数据采集的需求广义上来说分为两大部分。

  1)是在页面采集用户的访问行为,具体开发工作:

    1、开发页面埋点js,采集用户访问行为

    2、后台接受页面js请求记录日志

  此部分工作也可以归属为“数据源”,其开发工作通常由web开发团队负责

  2)是从web服务器上汇聚日志到HDFS,是数据分析系统的数据采集,此部分工作由数据分析平台建设团队负责,

具体的技术实现有很多方式:

    Shell脚本:优点:轻量级,开发简单;缺点:对日志采集过程中的容错处理不便控制

    Java采集程序:优点:可对采集过程实现精细控制;缺点:开发工作量大

    Flume日志采集框架:成熟的开源日志采集系统,且本身就是hadoop生态体系中的一员,与hadoop体系中的

各种框架组件具有天生的亲和力,可扩展性强

3.2 Flume日志采集系统搭建:

  1、数据源信息:本项目分析的数据用服务器所生成的流量日志:/data/flumedata/access.log

  2、数据内容样例:

58.215.204.118 - - [18/Sep/2013:06:51:35 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
字段解析:
1、访客ip地址:   58.215.204.118
2、访客用户信息:  - -
3、请求时间:[18/Sep/2013:06:51:35 +0000]
4、请求方式:GET
5、请求的url:/wp-includes/js/jquery/jquery.js?ver=1.10.2
6、请求所用协议:HTTP/1.1
7、响应码:304
8、返回的数据流量:0
9、访客的来源url:http://blog.fens.me/nodejs-socketio-chat/
10、访客所用浏览器:Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0

  3、Flume采集实现:配置采集方案:

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
#a1.sources.r1.type = exec
#a1.sources.r1.command = tail -F /home/hadoop/log/test.log   用tail命令获取数据,下沉到hdfs
#a1.sources.r1.channels = c1
# Describe/configure the source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /data/flumedata   采集目录到HDFS
a1.sources.r1.fileHeader = false

# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = /fensiweblog/events/%y-%m-%d/
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute
#指定下沉文件按30分钟滚动
a1.sinks.k1.hdfs.rollInterval = 30
a1.sinks.k1.hdfs.rollSize = 1024
#指定下沉文件按1000000条数滚动
a1.sinks.k1.hdfs.rollCount = 10000
a1.sinks.k1.hdfs.batchSize = 1
a1.sinks.k1.hdfs.useLocalTimeStamp = true
#生成的文件类型,默认是Sequencefile,可用DataStream,则为普通文本
a1.sinks.k1.hdfs.fileType = DataStream

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

  如果向目录/data/flumedata中放入文件,就会将文件下沉到HDFS中;

  启动Flume的Agent: bin/flume-ng agent -c conf -f conf/fensi.conf -n a1 -Dflume.root.logger=INFO,console

  

  

注意:启动命令中的 -n 参数要给配置文件中配置的agent名称

原文地址:https://www.cnblogs.com/yaboya/p/9329361.html

时间: 2024-08-29 20:09:36

02.网站点击流数据分析项目_模块开发_数据采集的相关文章

网站点击流数据分析项目-

1:网站点击流数据分析项目推荐书籍: 可以看看百度如何实现这个功能的:https://tongji.baidu.com/web/welcome/login 1 网站点击流数据分析,业务知识,推荐书籍: 2 <网站分析实战——如何以数据驱动决策,提升网站价值>王彦平,吴盛锋编著 http://download.csdn.net/download/biexiansheng/10160197 2:整体技术流程及架构: 2.1 数据处理流程    该项目是一个纯粹的数据分析项目,其整体流程基本上就是依

大数据学习——SparkStreaming整合Kafka完成网站点击流实时统计

1.安装并配置zk 2.安装并配置Kafka 3.启动zk 4.启动Kafka 5.创建topic [[email protected] kafka]# bin/kafka-console-producer.sh --broker-list mini1:9092 --topic cyf-test 程序代码 package org.apache.spark import java.net.InetSocketAddress import org.apache.spark.HashPartition

maven一项目多模块开发

对于一个项目(桌面项目或者网站)来说,都会大致分为三层:界面层,共给用户观看:业务逻辑层,处理业务逻辑:数据访问层,增删改查数据库. 根据项目的大小,可以将这三层合并再一起开发,也可以将这三层分开开发.对于大项目来说,一般都是分开开发,不仅可以将层次分离,也可以将针对某一层的开发难度安排开发人员.如果实现这个分层开发,请看一下步骤: 备注:使用开发工具为eclipse,服务器为tomcat7 第一步:创建项目,这里以创建网站项目为实例: 选择默认骨架 填写Group Id,Artifact Id

python-2_文件读取_模块调用_循环

enumerate()枚举函数 例子: for index,key in ennumerate(menu.keys()):           print index,key for i in enumerate(range(1,10)):    print i输出结果:(0,1) (1,2).......(9,10) os.popen()用来存结果os.popen("dir").read() 执行的输出os.system()执行命令commands.getoutput("d

第2节 网站点击流项目(下):2、明细宽表的生成

1. 本项目中数据仓库的设计 注:采用星型模型    1.1. 事实表设计 原始数据表: ods_weblog_origin =>对应mr清洗完之后的数据 valid string 是否有效 remote_addr string 访客ip remote_user string 访客用户信息 time_local string 请求时间 request string 请求url status string 响应码 body_bytes_sent string 响应字节数 http_referer

第2节 网站点击流项目(下):5、访客分析

-- 独立访客--需求:按照时间维度来统计独立访客及其产生的pv量 按照时间维度比如小时来统计独立访客及其产生的 pv . 时间维度:时drop table dw_user_dstc_ip_h;create table dw_user_dstc_ip_h(remote_addr string,pvs bigint,hour string); insert into table dw_user_dstc_ip_h select remote_addr,count(1) as pvs,concat(

第2节 网站点击流项目(下):4、受访分析

2. 受访分析(从页面的角度分析) select * from ods_click_pageviews limit 2;+---------------------------------------+----------------------------------+----------------------------------+---------------------------------+------------------------------+--------------

第2节 网站点击流项目(下):7、hive的级联求和

一.hive级联求和的简单例子: create table t_salary_detail(username string,month string,salary int)row format delimited fields terminated by ','; load data local inpath '/export/servers/hivedatas/accumulate/t_salary_detail.dat' into table t_salary_detail; 用户 时间 收

maven项目分模块开发

当我们maven创建模块后可能出现的问题  1. 模块创建后不自动部署打包 2.在你没有发现不能自动部署打包之前,发现项目不能访问模块资源 解决方案: 1.右击项目--Properties   找不到Deployment Assembly,没有这个项目就不会自动部署到tomcat 中 2.右击项目--Properties 找到Project Facets 只选择Java 和 Utility Module,标识此项目用做模块 3.设置完了之后你重新点击项目properties就能看见Deploym