国产另类ts人妖一区二区_欧美肥老太做爰视频_快穿高h肉_国产欧美综合在线

當前位置: 首頁 / 技術干貨 / 正文
數據采集工具之Flume 的自動容災和負載均衡

2023-03-17

   1. sink qianfeng

數據采集工具之Flume 的自動容災和負載均衡

  說明

  flume的自動容災指的是當某一個channel或者sink擋掉后,由其他的sink來接收數據

  flume的負載均衡指的是多個channel處理的event的數量盡可能的相同。

  自動容災

  上游方案的編寫

  [root@qianfeng01 ~]# vim first-processor.conf

  #list names

  a1.sources = r1

  a1.channels = c1

  a1.sinks = k1 k2

  a1.sources.r1.channels = c1

  a1.sinks.k1.channel = c1

  a1.sinks.k2.channel = c1

  # source

  a1.sources.r1.type = syslogtcp

  a1.sources.r1.host = qianfeng01

  a1.sources.r1.port = 10086

  # channel

  a1.channels.c1.type = memory

  # sink

  a1.sinks.k1.type = avro

  a1.sinks.k1.hostname = qianfeng02

  a1.sinks.k1.port = 10087

  a1.sinks.k2.type = avro

  a1.sinks.k2.hostname = qianfeng03

  a1.sinks.k2.port = 10088

  #設置sink組

  a1.sinkgroups = g1

  a1.sinkgroups.g1.sinks = k1 k2

  a1.sinkgroups.g1.processor.type = failover

  a1.sinkgroups.g1.processor.priority.k1 = 10

  a1.sinkgroups.g1.processor.priority.k2 = 5

  a1.sinkgroups.g1.processor.maxpenalty = 10000

  下游的qianfeng02上的方案

  [root@qianfeng02 flumeconf]# vim second-processor.conf

  #list names

  a1.sources = r1

  a1.channels = c1

  a1.sinks = k1

  a1.sources.r1.channels = c1

  a1.sinks.k1.channel = c1

  # source

  a1.sources.r1.type = avro

  a1.sources.r1.bind = qianfeng02

  a1.sources.r1.port = 10087

  # channel

  a1.channels.c1.type = memory

  # sink

  a1.sinks.k1.type = logger

  下游的qianfeng03上的方案

  [root@qianfeng03 flumeconf]# vim third-processor.conf

  #list names

  a1.sources = r1

  a1.channels = c1

  a1.sinks = k1

  a1.sources.r1.channels = c1

  a1.sinks.k1.channel = c1

  # source

  a1.sources.r1.type = avro

  a1.sources.r1.bind = qianfeng03

  a1.sources.r1.port = 10088

  # channel

  a1.channels.c1.type = memory

  # sink

  a1.sinks.k1.type = logger

  啟動

  先啟動下游的兩個方案

  [root@qianfeng02 flumeconf]# flume-ng agent -c ../conf -f second-processor.properties -n a1 -Dflume.root.logger=INFO,console

  [root@qianfeng03 flumeconf]# flume-ng agent -c ../conf -f third-processor.properties -n a1 -Dflume.root.logger=INFO,console

  在啟動上游的一個方案

  [root@qianfeng03 flumeconf]# flume-ng agent -c ../conf -f first-processor.properties -n a1 -Dflume.root.logger=INFO,console

  測試

  [root@qianfeng02 ~]# echo "helloworld" | nc qianfeng01 10086

  由于k1的優先級是最高的,因此會看到qianfeng02上有數據

  模擬自動容災,使用ctrl+c 殺死qianfeng02上的方案,就會看到qianfeng03上有數據了。

  負載均衡

  負載均衡Sink 選擇器提供了在多個sink上進行負載均衡流量的功能。 它維護一個活動sink列表的索引來實現負載的分配。 默認支持了輪詢(round_robin)和隨機(random)兩種選擇機制分配負載。 默認是輪詢,可以通過配置來更改。

  注意: 如果backoff設置為true則啟用了退避機制,失敗的sink會被放入黑名單,達到一定的超時時間后會自動從黑名單移除。 如從黑名單出來后sink仍然失敗,則再次進入黑名單而且超時時間會翻倍,以避免在無響應的sink上浪費過長時間。 如果沒有啟用退避機制,在禁用此功能的情況下,發生sink傳輸失敗后,會將本次負載傳給下一個sink繼續嘗試,因此這種情況下是不均衡的。

  上游方案的編寫

  [root@qianfeng01 ~]# vim first-processor.conf

  #list names

  a1.sources = r1

  a1.channels = c1

  a1.sinks = k1 k2

  a1.sources.r1.channels = c1

  a1.sinks.k1.channel = c1

  a1.sinks.k2.channel = c1

  # source

  a1.sources.r1.type = syslogtcp

  a1.sources.r1.host = qianfeng01

  a1.sources.r1.port = 10086

  # channel

  a1.channels.c1.type = memory

  # sink

  a1.sinks.k1.type = avro

  a1.sinks.k1.hostname = qianfeng02

  a1.sinks.k1.port = 10087

  a1.sinks.k2.type = avro

  a1.sinks.k2.hostname = qianfeng03

  a1.sinks.k2.port = 10088

  #設置sink組

  a1.sinkgroups = g1

  a1.sinkgroups.g1.sinks = k1 k2

  a1.sinkgroups.g1.processor.type = load_balance

  a1.sinkgroups.g1.processor.backoff = true

  a1.sinkgroups.g1.processor.selector = random

  下游的qianfeng02上的方案

  [root@qianfeng02 flumeconf]# vim second-processor.conf

  #list names

  a1.sources = r1

  a1.channels = c1

  a1.sinks = k1

  a1.sources.r1.channels = c1

  a1.sinks.k1.channel = c1

  # source

  a1.sources.r1.type = avro

  a1.sources.r1.bind = qianfeng02

  a1.sources.r1.port = 10087

  # channel

  a1.channels.c1.type = memory

  # sink

  a1.sinks.k1.type = logger

  下游的qianfeng03上的方案

  [root@qianfeng03 flumeconf]# vim third-processor.conf

  #list names

  a1.sources = r1

  a1.channels = c1

  a1.sinks = k1

  a1.sources.r1.channels = c1

  a1.sinks.k1.channel = c1

  # source

  a1.sources.r1.type = avro

  a1.sources.r1.bind = qianfeng03

  a1.sources.r1.port = 10088

  # channel

  a1.channels.c1.type = memory

  # sink

  a1.sinks.k1.type = logger

  啟動

  先啟動下游的兩個方案

  [root@qianfeng02 flumeconf]# flume-ng agent -c ../conf -f second-processor.properties -n a1 -Dflume.root.logger=INFO,console

  [root@qianfeng03 flumeconf]# flume-ng agent -c ../conf -f third-processor.properties -n a1 -Dflume.root.logger=INFO,console

  在啟動上游的一個方案

  [root@qianfeng03 flumeconf]# flume-ng agent -c ../conf -f first-processor.properties -n a1 -Dflume.root.logger=INFO,console

  測試

  [root@qianfeng01 ~]# echo "helloworld" | nc qianfeng01 10086

  [root@qianfeng01 ~]# echo "helloworld" | nc qianfeng01 10086

  [root@qianfeng01 ~]# echo "helloworld" | nc qianfeng01 10086

  多發幾條查看效果.....

  發送數據的時候不要特別快,因為一個channel可以容納多條Event,發送特別快就查看不到效果,所以慢慢發送,最好的操作方式就發送一條數據后等這條數據已經到某一個sink了,在發送下一條即可。

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號