±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ²©¿Í,²©Ö÷¶ÔÓÚFlume NGʵս×ܽἰͼ½â£¬°üÀ¨Flume NG¼òÊö¡¢µ¥µãFlume NG´î½¨¡¢ÔËÐС¢¸ß¿ÉÓÃFlume NG´î½¨¡¢Failover²âÊÔ¡¢½ØͼԤÀÀµÈµÈ¡£ |
|
1.¸ÅÊö
½ñÌì²¹³äһƪ¹ØÓÚFlumeµÄ²©¿Í£¬Ç°ÃæÔÚ½²½â¸ß¿ÉÓõÄHadoopƽ̨µÄʱºòÒÅ©ÁËÕâƪ£¬±¾Æª²©¿ÍΪ´ó¼Ò½²ÊöÒÔÏÂÄÚÈÝ£º
- Flume NG¼òÊö
- µ¥µãFlume NG´î½¨¡¢ÔËÐÐ
- ¸ß¿ÉÓÃFlume NG´î½¨
- Failover²âÊÔ
- ½ØͼԤÀÀ
ÏÂÃ濪ʼ½ñÌìµÄ²©¿Í½éÉÜ¡£
2.Flume NG¼òÊö
Flume NGÊÇÒ»¸ö·Ö²¼Ê½£¬¸ß¿ÉÓ㬿ɿ¿µÄϵͳ£¬ËüÄܽ«²»Í¬µÄº£Á¿Êý¾ÝÊÕ¼¯£¬Òƶ¯²¢´æ´¢µ½Ò»¸öÊý¾Ý´æ´¢ÏµÍ³ÖС£ÇáÁ¿£¬ÅäÖüòµ¥£¬ÊÊÓÃÓÚ¸÷ÖÖÈÕÖ¾ÊÕ¼¯£¬²¢Ö§³ÖFailoverºÍ¸ºÔؾùºâ¡£²¢ÇÒËüÓµÓзdz£·á¸»µÄ×é¼þ¡£Flume NG²ÉÓõÄÊÇÈý²ã¼Ü¹¹£ºAgent²ã£¬Collector²ãºÍStore²ã£¬Ã¿Ò»²ã¾ù¿ÉˮƽÍØÕ¹¡£ÆäÖÐAgent°üº¬Source£¬ChannelºÍSink£¬ÈýÕß×齨ÁËÒ»¸öAgent¡£ÈýÕßµÄÖ°ÔðÈçÏÂËùʾ£º
- Source£ºÓÃÀ´Ïû·Ñ£¨ÊÕ¼¯£©Êý¾ÝÔ´µ½Channel×é¼þÖÐ
- Channel£ºÖÐתÁÙʱ´æ´¢£¬±£´æËùÓÐSource×é¼þÐÅÏ¢
- Sink£º´ÓChannelÖжÁÈ¡£¬¶ÁÈ¡³É¹¦ºó»áɾ³ýChannelÖеÄÐÅÏ¢
ÏÂͼÊÇFlume NGµÄ¼Ü¹¹Í¼£¬ÈçÏÂËùʾ£º

ͼÖÐÃèÊöÁË£¬´ÓÍⲿϵͳ£¨Web Server£©ÖÐÊÕ¼¯²úÉúµÄÈÕÖ¾£¬È»ºóͨ¹ýFlumeµÄAgentµÄSource×é¼þ½«Êý¾Ý·¢Ë͵½ÁÙʱ´æ´¢Channel×é¼þ£¬×îºó´«µÝ¸øSink×é¼þ£¬Sink×é¼þÖ±½Ó°ÑÊý¾Ý´æ´¢µ½HDFSÎļþϵͳÖС£
3.µ¥µãFlume NG´î½¨¡¢ÔËÐÐ
ÎÒÃÇÔÚÊìϤÁËFlume NGµÄ¼Ü¹¹ºó£¬ÎÒÃÇÏȴһ¸öµ¥µãFlumeÊÕ¼¯ÐÅÏ¢µ½HDFS¼¯ÈºÖУ¬ÓÉÓÚ×ÊÔ´ÓÐÏÞ£¬±¾´ÎÖ±½ÓÔÚ֮ǰµÄ¸ß¿ÉÓÃHadoop¼¯ÈºÉϴFlume¡£
³¡¾°ÈçÏ£ºÔÚNNA½ÚµãÉϴһ¸öFlume NG£¬½«±¾µØÈÕÖ¾ÊÕ¼¯µ½HDFS¼¯Èº¡£
3.1»ù´¡Èí¼þ
ÔڴFlume NG֮ǰ£¬ÎÒÃÇÐèҪ׼±¸±ØÒªµÄÈí¼þ£¬¾ßÌåÏÂÔصØÖ·ÈçÏÂËùʾ£º
- Flume http://www.apache.org/dyn/closer.cgi/flume/1.5.2/ apache-flume-1.5.2-bin.tar.gz
JDKÓÉÓÚ֮ǰÔÚ°²×°Hadoop¼¯ÈºÊ±ÒѾÅäÖùý£¬ÕâÀï¾Í²»×¸ÊöÁË£¬ÈôÐèÒªÅäÖõÄͬѧ£¬¿É²Î¿¼¡¶ÅäÖø߿ÉÓõÄHadoopƽ̨http:// www.cnblogs.com/ smartloli/p/4298430.html¡·¡£
3.2°²×°ÓëÅäÖÃ
Ê×ÏÈ£¬ÎÒÃǽâѹflume°²×°°ü£¬ÃüÁîÈçÏÂËùʾ£º
[hadoop@nna ~]$ tar -zxvf apache-flume-1.5.2-bin.tar.gz |
»·¾³±äÁ¿ÅäÖÃÄÚÈÝÈçÏÂËùʾ£º
export FLUME_HOME=/home/hadoop/flume-1.5.2
export PATH=$PATH:$FLUME_HOME/bin |
flume-conf.properties
#agent1 name
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#Spooling Directory
#set source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir = /home/hadoop/dir/logdfs
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = timestamp
#set sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path = /home/hdfs/flume/logdfs
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=1
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hdfs.filePrefix= %Y-%m-%d
#set channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir = /home/hadoop/dir/logdfstmp/point
agent1.channels.channel1.dataDirs = /home/hadoop/dir/logdfstmp |
flume-env.sh
JAVA_HOME=/usr/java/jdk1.7 |
×¢£ºÅäÖÃÖеÄĿ¼Èô²»´æÔÚ£¬ÐèÌáÇ°´´½¨¡£
3.3Æô¶¯
Æô¶¯ÃüÁîÈçÏÂËùʾ£º
flume-ng agent -n agent1 -c conf -f flume-conf.properties - Dflume.root.logger = DEBUG,console |
×¢£ºÃüÁîÖеÄagent1±íʾÅäÖÃÎļþÖеÄAgentµÄName£¬ÈçÅäÖÃÎļþÖеÄagent1¡£flume-conf.properties±íʾÅäÖÃÎļþËùÔÚÅäÖã¬ÐèÌîд׼ȷµÄÅäÖÃÎļþ·¾¶¡£
3.4Ч¹ûÔ¤ÀÀ



Ö®ºó£¬³É¹¦ÉÏ´«ºó±¾µØÄ¿µÄ»á±»±ê¼ÇÍê³É¡£ÈçÏÂͼËùʾ£º

4.¸ß¿ÉÓÃFlume NG´î½¨
ÔÚÍê³Éµ¥µãµÄFlume NG´î½¨ºó£¬ÏÂÃæÎÒÃǴһ¸ö¸ß¿ÉÓõÄFlume NG¼¯Èº£¬¼Ü¹¹Í¼ÈçÏÂËùʾ£º

ͼÖУ¬ÎÒÃÇ¿ÉÒÔ¿´³ö£¬FlumeµÄ´æ´¢¿ÉÒÔÖ§³Ö¶àÖÖ£¬ÕâÀïÖ»ÁоÙÁËHDFSºÍKafka£¨È磺´æ´¢×îеÄÒ»ÖÜÈÕÖ¾£¬²¢¸øStormϵͳÌṩʵʱÈÕÖ¾Á÷£©¡£
4.1½Úµã·ÖÅä
FlumeµÄAgentºÍCollector·Ö²¼ÈçϱíËùʾ£º
Ãû³Æ¡¡ |
HOST |
½ÇÉ« |
Agent1 |
10.211.55.14 |
Web Server |
Agent2 |
10.211.55.15 |
Web Server |
Agent3 |
10.211.55.16¡¡ |
Web Server |
Collector1 |
10.211.55.18 |
AgentMstr1 |
Collector2 |
10.211.55.19 |
AgentMstr2 |
ͼÖÐËùʾ£¬Agent1£¬Agent2£¬Agent3Êý¾Ý·Ö±ðÁ÷Èëµ½Collector1ºÍCollector2£¬Flume NG±¾ÉíÌṩÁËFailover»úÖÆ£¬¿ÉÒÔ×Ô¶¯Çл»ºÍ»Ö¸´¡£ÔÚÉÏͼÖУ¬ÓÐ3¸ö²úÉúÈÕÖ¾·þÎñÆ÷·Ö²¼ÔÚ²»Í¬µÄ»ú·¿£¬Òª°ÑËùÓеÄÈÕÖ¾¶¼ÊÕ¼¯µ½Ò»¸ö¼¯ÈºÖд洢¡£ÏÂÃæÎÒÃÇ¿ª·¢ÅäÖÃFlume NG¼¯Èº
4.2ÅäÖÃ
ÔÚÏÂÃæµ¥µãFlumeÖУ¬»ù±¾ÅäÖö¼Íê³ÉÁË£¬ÎÒÃÇÖ»ÐèÒªÐÂÌí¼ÓÁ½¸öÅäÖÃÎļþ£¬ËüÃÇÊÇflume-client.propertiesºÍflume-server.properties£¬ÆäÅäÖÃÄÚÈÝÈçÏÂËùʾ£º
#agent1 name
agent1.channels = c1
agent1.sources = r1
agent1.sinks = k1 k2
#set gruop
agent1.sinkgroups = g1
#set channel
agent1.channels.c1.type = memory
agent1.channels.c1.capacity = 1000
agent1.channels.c1.transactionCapacity = 100
agent1.sources.r1.channels = c1
agent1.sources.r1.type = exec
agent1.sources.r1.command = tail -F /home/hadoop/dir/logdfs/test.log
agent1.sources.r1.interceptors = i1 i2
agent1.sources.r1.interceptors.i1.type = static
agent1.sources.r1.interceptors.i1.key = Type
agent1.sources.r1.interceptors.i1.value = LOGIN
agent1.sources.r1.interceptors.i2.type = timestamp
# set sink1
agent1.sinks.k1.channel = c1
agent1.sinks.k1.type = avro
agent1.sinks.k1.hostname = nna
agent1.sinks.k1.port = 52020
# set sink2
agent1.sinks.k2.channel = c1
agent1.sinks.k2.type = avro
agent1.sinks.k2.hostname = nns
agent1.sinks.k2.port = 52020
#set sink group
agent1.sinkgroups.g1.sinks = k1 k2
#set failover
agent1.sinkgroups.g1.processor.type = failover
agent1.sinkgroups.g1.processor.priority.k1 = 10
agent1.sinkgroups.g1.processor.priority.k2 = 1
agent1.sinkgroups.g1.processor.maxpenalty = 10000 |
×¢£ºÖ¸¶¨CollectorµÄIPºÍPort¡£
#set Agent name
a1.sources = r1
a1.channels = c1
a1.sinks = k1
#set channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# other node,nna to nns
a1.sources.r1.type = avro
a1.sources.r1.bind = nna
a1.sources.r1.port = 52020
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = static
a1.sources.r1.interceptors.i1.key = Collector
a1.sources.r1.interceptors.i1.value = NNA
a1.sources.r1.channels = c1
#set sink to hdfs
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path = /home/hdfs/flume/logdfs
a1.sinks.k1.hdfs.fileType=DataStream
a1.sinks.k1.hdfs.writeFormat=TEXT
a1.sinks.k1.hdfs.rollInterval=1
a1.sinks.k1.channel=c1
a1.sinks.k1.hdfs.filePrefix=%Y-%m-%d |
×¢£ºÔÚÁíһ̨Collector½ÚµãÉÏÐÞ¸ÄIP£¬ÈçÔÚNNS½Úµã½«°ó¶¨µÄ¶ÔÏóÓÐnnaÐÞ¸ÄΪnns¡£
4.3Æô¶¯
ÔÚAgent½ÚµãÉÏÆô¶¯ÃüÁîÈçÏÂËùʾ£º
flume-ng agent -n agent1 -c conf -f flume-client.properties -Dflume.root.logger = DEBUG,console |
×¢£ºÃüÁîÖеÄagent1±íʾÅäÖÃÎļþÖеÄAgentµÄName£¬ÈçÅäÖÃÎļþÖеÄagent1¡£flume-client.properties±íʾÅäÖÃÎļþËùÔÚÅäÖã¬ÐèÌîд׼ȷµÄÅäÖÃÎļþ·¾¶¡£
ÔÚCollector½ÚµãÉÏÆô¶¯ÃüÁîÈçÏÂËùʾ£º
flume-ng agent -n a1 -c conf -f flume-server.properties -Dflume.root.logger = DEBUG,console |
×¢£ºÃüÁîÖеÄa1±íʾÅäÖÃÎļþÖеÄAgentµÄName£¬ÈçÅäÖÃÎļþÖеÄa1¡£flume-server.properties±íʾÅäÖÃÎļþËùÔÚÅäÖã¬ÐèÌîд׼ȷµÄÅäÖÃÎļþ·¾¶¡£
5.Failover²âÊÔ
ÏÂÃæÎÒÃÇÀ´²âÊÔÏÂFlume NG¼¯ÈºµÄ¸ß¿ÉÓ㨹ÊÕÏתÒÆ£©¡£³¡¾°ÈçÏ£ºÎÒÃÇÔÚAgent1½ÚµãÉÏ´«Îļþ£¬ÓÉÓÚÎÒÃÇÅäÖÃCollector1µÄȨÖرÈCollector2´ó£¬ËùÒÔCollector1ÓÅÏȲɼ¯²¢ÉÏ´«µ½´æ´¢ÏµÍ³¡£È»ºóÎÒÃÇkillµôCollector1£¬´ËʱÓÐCollector2¸ºÔðÈÕÖ¾µÄ²É¼¯ÉÏ´«¹¤×÷£¬Ö®ºó£¬ÎÒÃÇÊÖ¶¯»Ö¸´Collector1½ÚµãµÄFlume·þÎñ£¬ÔÙ´ÎÔÚAgent1ÉÏ´ÎÎļþ£¬·¢ÏÖCollector1»Ö¸´ÓÅÏȼ¶±ðµÄ²É¼¯¹¤×÷¡£¾ßÌå½ØͼÈçÏÂËùʾ£º

- HDFS¼¯ÈºÖÐÉÏ´«µÄlogÄÚÈÝÔ¤ÀÀ

- Collector1å´»ú£¬Collector2»ñÈ¡ÓÅÏÈÉÏ´«È¨ÏÞ

- ÖØÆôCollector1·þÎñ£¬Collector1ÖØлñµÃÓÅÏÈÉÏ´«µÄȨÏÞ

6.½ØͼԤÀÀ
ÏÂÃæΪ´ó¼Ò¸½ÉÏHDFSÎļþϵͳÖеĽØͼԤÀÀ£¬ÈçÏÂͼËùʾ£º


7.×ܽá
ÔÚÅäÖø߿ÉÓõÄFlume NGʱ£¬ÐèҪעÒâһЩÊÂÏî¡£ÔÚAgentÖÐÐèÒª°ó¶¨¶ÔÓ¦µÄCollector1ºÍCollector2µÄIPºÍPort£¬ÁíÍ⣬ÔÚÅäÖÃCollector½Úµãʱ£¬ÐèÒªÐ޸ĵ±Ç°Flume½ÚµãµÄÅäÖÃÎļþ£¬BindµÄIP£¨»òHostName£©Îªµ±Ç°½ÚµãµÄIP£¨»òHostName£©£¬×îºó£¬ÔÚÆô¶¯µÄʱºò£¬Ö¸¶¨ÅäÖÃÎļþÖеÄAgentµÄNameºÍÅäÖÃÎļþµÄ·¾¶£¬·ñÔò»á³ö´í¡£
8.½áÊøÓï
Õâƪ²©¿Í¾ÍºÍ´ó¼Ò·ÖÏíµ½ÕâÀÈç¹û´ó¼ÒÔÚÑо¿Ñ§Ï°µÄ¹ý³Ìµ±ÖÐÓÐʲôÎÊÌ⣬¿ÉÒÔ¼ÓȺ½øÐÐÌÖÂÛ»ò·¢ËÍÓʼþ¸øÎÒ£¬ÎһᾡÎÒËùÄÜΪÄú½â´ð£¬Óë¾ý¹²Ã㣡
|