先提出一个简单需求:如下
106.19.21.143 - - [18/Jul/2018:06:30:15 +0800] "GET /servicesmng/oauth/wx07bf81a51358a68f/snsapi_base.form?code=081noraq1NoR0q0t9Eaq1ROdaq1noraZ&state=https%3A%2F%2Fwechat.zhdsbang.com%2Fweixin%2Findex.html%3Fouri%3D9ab7489f-0e61-4b6e-8fa2-2e6c9261e2bd%40supplydemand&appid=wx07bf81a51358a68f HTTP/1.1" 302 - "Mozilla/5.0 (Linux; Android 8.0; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/044109 Mobile Safari/537.36 MicroMessenger/6.6.7.1321(0x26060739) NetType/4G Language/zh_CN" 360 对如上用户行为日志做数据分析 1:分析每个请求的相应时间,然后记录 最后整理成 每个不同的相应时间总共有几次请求: 【10,5】类似 10毫秒有五次请求,响应时间的取值是上面的最后一个空格分割的数据 2:分析每个请求的微信的版本号,然后分析统计微信版本对应本系统的适配性 【6.6,698】类似 6.6版本有698个 3:分析不同的操作系统在使用本系统的分布 【Android:902,IOS:1232】类似 操作系统的用户分布 4:分析不同操作系统的版本分布: 【Android 6.1:18,Android 8.1:1928,IOS 11.4:4353】类似操作系统版本,这个一般是为了适配APP
实现方式:
/* 1: 先上传日志到linux,当然你要有一个早就能用的Hadoop运行环境 * * 2: 上传日志文件:hadoop fs -put localhost_access_log.txt /hdfsapi/ 要记得看是否上传成功了 * * 3: 把本项目打包,上传至指定路径【我这里是上传至:/usr/hadoop/data/】 * 我们需要使用的mvn打包方式,因为我们的外部框架 yauaa 没有包含在hadoop 中 * mvn assembly:assembly 到项目源码根目录下执行此命令,生成包含pom内引用框架jar的jar * * copy: hadoopxing-1.0-SNAPSHOT-jar-with-dependencies.jar to Linux * * 4: 命令 : hadoop jar /usr/hadoop/data/hadoopxing-1.0-SNAPSHOT-jar-with-dependencies.jar com.xing.logAct.LogActivityAnalyzer hdfs://hadoop000:8020/hdfsapi/localhost_access_log.txt hdfs://hadoop000:8020/hdfsapi/output/log * * 5: 查看hadoop处理后的数据信息 * adoop fs -ls /hdfsapi/output/log * hadoop fa -text /hdfsapi/output/log/part-r-00000 */
GItHub 地址:https://github.com/itliuxing/hadoopxing
实现了上图的 1 -->2--->3--->4--->5
第3步的自动化,改成了手动。第5步写入至Hive也没实现,暂时还是写出到一个文件内。
所以这个东东工作量实在大。
使用信息:IDE IDEA , Linux [Centos7] ,Maven ,java , hadoop-2.6.0-cdh5.7.0 , HDFS , YARN , MapReduce
后面此simple会继续更新至GitHub,以便作为一个完整最终包含了最初学习的HDFS到离线数据处理到最后的实时流式数据处理的Spark 。
很高兴 这是挑战自己的高度再次成功的案例,继续