1, escenarios de casos
A, B dos máquinas de servicio de registro de registro de producción en tiempo real principales tipos access.log, nginx.log, web.log
Ahora Requisitos:
Los A, B máquinas access.log, nginx.log, web.log máquina colectora de C se agrega entonces en el Unified recogió en hdfs.
Pero en hdfs el directorio deseado:
/ Fuente / logs / acceso / 20180101 / **
/ Fuente / logs / nginx / 20180101 / **
/ Fuente / logs / web / 20180101 / **
2, análisis de la escena
3, los datos de flujo de procesamiento y análisis
4 , para lograr
Un servidor correspondiente es 192.168.52.100 IP
el servidor B IP correspondiente a 192.168.52.110
Correspondiente al servidor IP 192.168.52.120 C
Adquisición de desarrollo fichero de configuración -side
node01 y perfiles node02 aforador de desarrollo del servidor
cd /export/servers/apache-flume-1.6.0-cdh5.14.0-bin/conf
vim exec_source_avro_sink.conf
# Name the components on this agent
a1.sources = r1 r2 r3
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /export/taillogs/access.log
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = static
## static拦截器的功能就是往采集到的数据的header中插入自己定## 义的key-value对
a1.sources.r1.interceptors.i1.key = type
a1.sources.r1.interceptors.i1.value = access
a1.sources.r2.type = exec
a1.sources.r2.command = tail -F /export/taillogs/nginx.log
a1.sources.r2.interceptors = i2
a1.sources.r2.interceptors.i2.type = static
a1.sources.r2.interceptors.i2.key = type
a1.sources.r2.interceptors.i2.value = nginx
a1.sources.r3.type = exec
a1.sources.r3.command = tail -F /export/taillogs/web.log
a1.sources.r3.interceptors = i3
a1.sources.r3.interceptors.i3.type = static
a1.sources.r3.interceptors.i3.key = type
a1.sources.r3.interceptors.i3.value = web
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 20000
a1.channels.c1.transactionCapacity = 10000
# Describe the sink
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = node03
a1.sinks.k1.port = 41414
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sources.r2.channels = c1
a1.sources.r3.channels = c1
a1.sinks.k1.channel = c1
Servidor de desarrollo fichero de configuración
En los perfiles de desarrollo aforador anterior node03
cd /export/servers/apache-flume-1.6.0-cdh5.14.0-bin/conf
Vine avro_source_hdfs_sink.conf
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#定义source
a1.sources.r1.type = avro
a1.sources.r1.bind = 192.168.52.120
a1.sources.r1.port =41414
#添加时间拦截器
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = org.apache.flume.interceptor.TimestampInterceptor$Builder
#定义channels
a1.channels.c1.type = memory
a1.channels.c1.capacity = 20000
a1.channels.c1.transactionCapacity = 10000
#定义sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path=hdfs://192.168.52.100:8020/source/logs/%{type}/%Y%m%d
#组装source、channel、sink
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
Del lado de adquisición archivo de script de generación
el desarrollo del guión Shell y node02 node01 anteriormente, los datos analógicos generados
cd / export / servidores / conchas
server.sh vim
#!/bin/bash
while true
do
date >> /export/servers/taillogs/access.log;
date >> /export/servers/taillogs/web.log;
date >> /export/servers/taillogs/nginx.log;
sleep 0.5;
done
Orden para iniciar el servicio
node03 comenzar canal de recogida de datos
cd /export/servers/apache-flume-1.6.0-cdh5.14.0-bin
bin / agente-ng canal -c conf -f conf / avro_source_hdfs_sink.conf -name a1 -Dflume.root.logger = DEBUG, consola
node01 node02 para el seguimiento y empezar canal de datos
cd /export/servers/apache-flume-1.6.0-cdh5.14.0-bin
bin / agente-ng canal -c conf -f conf / exec_source_avro_sink.conf -name a1 -Dflume.root.logger = DEBUG, consola
se genera archivo de script node01 y node02 inicio
cd / export / conchas
server.sh sh