hadoop综合实验(对日志的处理mapreduce保存到csv)

Posted 南师大蒜阿熏呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop综合实验(对日志的处理mapreduce保存到csv)相关的知识,希望对你有一定的参考价值。

综合实验:网站访问日志采集、处理及分析

实验步骤
注:截图必须使用实验机的带水印截图功能,题目中要求截图但未提供的视为未做

一、使用Flume导入日志数据

数据文件下载地址:

wget "http://10.90.3.2/files/web_log/xaa.log"
wget "http://10.90.3.2/files/web_log/xab.log"
wget "http://10.90.3.2/files/web_log/xac.log"

新建一个待监控的文件夹,放入三个日志文件我这里是lhx

1、(代码)创建flume配置,文件内容及部分属性注释(注意路径):

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

# 定义源: spooldir
a1.sources.r1.type = spooldir
# 指定监控目录(本地路径)
a1.sources.r1.spoolDir = /home/ubuntu/lhx
a1.sources.r1.decodeErrorPolicy = IGNORE

# Describe the sink(hdfs路径)
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path =  /flume/2015070214/ 
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.useLocalTimeStamp = true
a1.sinks.k1.hdfs.rollSize = 0
a1.sinks.k1.hdfs.rollCount = 0

# Use a channel which buffers events in memory
a1.channels.c1.type = memory

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

2、(截图)运行flume配置的命令(运行前需启动hadoop):

cd /opt/hadoop/sbin
hadoop namenode -format
./start-all.sh

3、(截图)日志导入到hdfs后,查看hdfs目录内容:

flume-ng agent  -f  /home/ubuntu/flume.conf  -n  a1

4、(截图)选取一个文件查看前几条内容:

hdfs -dfs -cat /flume/2015070214/ | head -10

二、使用MapReduce对日志数据进行预处理

1、(代码)map和reduce文件:

def tq():#方法一以及导入csv 建议pycharm使用
    with open('test.csv', 'w', encoding='utf-8', newline="") as f:
      for line in sys.stdin:
        line = line.strip().replace('[','').replace(']','').replace('"','').replace('- - ','').replace(' -','-').replace(' ',',')
        print(line)
        f.write(line)
        f.write('\\n')
tq()
#查看- 测试
#hdfs dfs -cat /flume/2015070214/* |wc -l 
#直接执行
#hdfs dfs -cat /flume/2015070214/* | python map.py 
def tq():#方法二,hdfs上传完成后,hdfs dfs -cat 路径 | > csv
      for line in sys.stdin:
        line = line.strip().replace('[','').replace(']','').replace('"','').replace('- - ','').replace(' -','-').replace(' ',',')
        print(line)
tq()

2、(截图)用hadoop-streaming运行MapReduce的命令、及运行时的部分截图:

hdfs dfs -cat /flume/2015070214/* | python map.py 

导入csv(方法二必看)

hdfs dfs -cat /flume/2015070214/* | python map.py  | >test.csv

3、(截图)查看几条产出的数据记录截图:

以上是关于hadoop综合实验(对日志的处理mapreduce保存到csv)的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop基础---MapReduce对数据进行排序

hadoop之mapreduce编程实例(系统日志初步清洗过滤处理)

Hadoop MapReduce 流式传输 - 确保我已处理所有日志文件的最佳方法

hadoop mapreduce的日志输出到哪里

mapreduce 怎么查看每个reducer处理的数据量

实验5 MapReduce初级编程实践——对给定的表格进行信息挖掘