大数据日志分析小例子

1.项目是要对apache日志进行分析

2.数据特点:apache log,每天产生一个日志文件

3.项目需要对历史日志文件和每天的日志文件进行处理

4.处理步骤

4.1 把linux上的logs上传到hdfs中

4.1.1 当前apache logs与hadoop在同一台服务器,可以直接使用命令上传;

     上传的命令写在shell脚本中,该脚本区分是一次性上传所有历史日志和每天重复执行的。

 init.sh

 daily.sh

 把daily.sh配置到crontab中,使其每天都执行。执行命令crontab -e编辑配置:

 * 1 * * * /apache_logs/daily.sh

4.1.2 当apache logs与hadoop不在同一台服务器时,可以使用nfs共享磁盘的方式访问;

4.1.2 当apache server很多时,可以使用flume进行分布式数据收集处理;

4.2 数据清洗,把原始数据中与业务无关的信息、脏数据等处理掉,统一放到/hmbbs_cleaned/YYYY-mm-dd

4.3 使用hive的外部分区表处理数据

4.3.1 创建一个外部分区表

      CREATE EXTERNAL TABLE hmbbs(ip string,logtime string, url string) PARTITIONED BY (logdate string) ROW FORMATDELIMITED FIELDS TERMINATED BY '\t' LOCATION '/hmbbs_cleaned';

4.3.2 每天要修改分区字段,添加分区

      ALTER TABLE hmbbs ADD PARTITION(logdate="2013_05_31") LOCATION "/h-mbbs_cleaned/2013_05_31";

4.3.3 统计某一天的指标

      --pv

      SELECT COUNT(1) FROM hmbbs WHERElogdate='2013_05_30';

  CREATE TABLE pv_2013_05_30 AS SELECT'2013_05_30', COUNT(1) FROM hmbbs WHERE logdate='2013_05_30';

  --reguser

  SELECT COUNT(1) FROM hmbbs WHERElogdate='2013_05_30' AND instr(url, 'member.php?mod=register')>0;

  CREATE TABLE reguser_2013_05_30 AS SELECT'2013_05_30', COUNT(1) FROM hmbbs WHERE logdate='2013_05_30' AND instr(url,'member.php?mod=register')>0;

      --ip

  SELECT COUNT(distinct ip) FROM hmbbs WHERElogdate='2013_05_30';        

      CREATE TABLE ip_2013_05_30 AS SELECT'2013_05_30', COUNT(distinct ip) FROM hmbbs WHERE logdate='2013_05_30';

  --jumper

  SELECT COUNT(1) FROM (SELECT ip, COUNT(1)FROM hmbbs WHERE logdate='2013_05_30' GROUP BY ip HAVING COUNT(1)=1) t;

  CREATE TABLE jumper_2013_05_30 AS SELECT'2013_05_30', COUNT(1) FROM (SELECT ip, COUNT(1) FROM hmbbs WHERElogdate='2013_05_30' GROUP BY ip HAVING COUNT(1)=1) t;

4.3.4 把每天的统计结果导出到mysql中

sqoopexport --connect jdbc:mysql://hadoop0:3306/hmbbs --username root --passwordadmin --table daily_pv--export-dir        '/user/hive/warehouse/pv_2013_05_30' --fields-terminated-by '\001'

 

sqoopexport --connect jdbc:mysql://hadoop0:3306/hmbbs --username root --passwordadmin --table daily_reguser--export-dir        '/user/hive/warehouse/reguser_2013_05_30' --fields-terminated-by '\001'

 

sqoopexport --connect jdbc:mysql://hadoop0:3306/hmbbs --username root --passwordadmin --table daily_ip--export-dir        '/user/hive/warehouse/ip_2013_05_30' --fields-terminated-by '\001'

 

sqoopexport --connect jdbc:mysql://hadoop0:3306/hmbbs --username root --passwordadmin --table daily_jumper--export-dir        '/user/hive/warehouse/jumper_2013_05_30' --fields-terminated-by '\001'

4.4 使用hbase查询明细数据

4.4.1 创建hbase数据库,执行create'hmbbs','cf'         


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值