- 数据来源
Nginx+tomcat架构图
大数据的数据来源从哪
ive(数据仓库),–>mysql数据库;数据库的记录存储的是最近的记录(1亿,1个月,1周,1天),之前的数据要先备份到数据仓库,然后要清理掉(mysql),
日志:日记历史(先清理日志这个操作很low–不可取);log4j2;
两手准备:
数据库中的表有做记录;(是最近的数据)
日志:格式,我们自己定(文件)
- 大数据所需要的数据来源日志部分是分散的;进行大数据运算和统计需要把分散的日志合并到一个地方(hdfs);
1.Log4j:一天一个日志文件吗?今天把昨天的日志上传到hdfs上多好(hdfs命令,java也好)(每天都传)
2.需要将同一个命令在所有的有日志的电脑都要执行(400多台)
- flume介绍
Flume(水槽):采集工具,将大数据分散的数据源(数据库,日志)统一采集到一个地方(hdfs),
官网:http://flume.apache.org/
Flume是一种分布式、可靠和可用的服务,可以高效地收集、聚合和移动大量的日志数据。它具有基于流数据流的简单灵活的体系结构。它具有鲁棒性和容错性,具有可调的可靠性机制和多种故障转移和恢复机制。它使用了一个简单的、可扩展的数据模型,允许在线分析应用程序
结构:
Source:来源(flume)
Channel:渠道(flume)
Sink:目的地(flume)
webServer:数据源(产生数据的地方,tomcat)
Hdfs:它是把数据放到了hdfs中;
下载:http://flume.apache.org/download.html
http://mirrors.ustc.edu.cn/apache/flume/1.9.0/
我们使用flume:1.8;
Bin:可执行文件
Conf:配置文件
Docs:离线的帮助文档
Lib:jar包
Tools:工具
离线版本的文档:
- 实战
系统要求:
1.Java运行时环境-Java1.8或更高版本
2.内存-为源、通道或接收器使用的配置提供足够的内存
3.磁盘空间.通道或接收器使用的配置的足够磁盘空间
目录权限-代理使用的目录的读/写权限
配置文件:(新建一个配置文件,名字随便起)(conf/flume_hw.properties);官方中一个简单的例子:
# flume配置的例子
# Name the components on this agent
# source:起一个别名
# properties文件它是java的配置文件,=左边就是键,=右边是值;键的开头都是以a1(就是flume的名字--agent的名字就是a1);a1随便起
a1.sources = r1
# sink:起一个别名
a1.sinks = k1
# channels;:起一个别名
a1.channels = c1
# Describe/configure the source
# a1(agent的名字).sources(来源).r1(来源的名字);配置多个来源
# type:不能随便写(文档上说明)
a1.sources.r1.type = netcat
# bind:netcat的一个属性(绑定)
a1.sources.r1.bind = localhost
# port:netcat的一个属性;(端口)
a1.sources.r1.port = 44444
# Describe the sink
# 描述一个sink: logger日志(打印到控制台上)
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
# 描述一下channel:内存
a1.channels.c1.type = memory
# capacity:容量
a1.channels.c1.capacity = 1000
# transactionCapacity:事务的容量
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
# 绑定;source和channel绑定
a1.sources.r1.channels = c1
# sink和channel绑定
a1.sinks.k1.channel = c1
配置文件:(conf/flume-env.sh.template复制为conf/flume-env.sh)
启动命令(服务器端)
# --name后面的a1要和配置文件中agent的名字一样
bin/flume-ng agent --conf conf --conf-file conf/flume_hw.properties --name a1 -Dflume.root.logger=INFO,console
启动以后是以前台进程访问(不是后台进程,千万不要敲ctrl+c)