Hadoop數(shù)據(jù)分析平臺實戰(zhàn)——150Flume介紹

離線數(shù)據(jù)分析平臺實戰(zhàn)——150Flume介紹

Nginx介紹

Nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器嘿歌。
其特點是占有內(nèi)存少,并發(fā)能力強诡壁,事實上nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好债沮。
一般情況下,我們會將nginx服務(wù)器作為一個靜態(tài)資源的訪問容器峻仇。

Nginx安裝步驟

Nginx安裝步驟如下:(使用yum命令安裝)

  1. 使用root用戶登錄俄讹。
  2. 查看nginx信息哆致,命令:yum info nginx.
  3. 如果查看nginx信息提示nginx找不到,那么可以通過修改rpm源來進(jìn)行后續(xù)步驟颅悉,執(zhí)行命令:rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
  4. 在查看nginx信息沽瞭。
  5. 安裝,命令: yum install nginx剩瓶。在安裝過程中直接輸入y驹溃。
  6. 啟動nginx,命令:service nginx start
  7. 訪問http://192.168.0.120查看nginx的web頁面延曙。
image.png
image.png
image.png

Flume介紹

Flume是Apache基金會組織的一個提供的高可用的豌鹤,高可靠的,分布式的海量日志采集枝缔、聚合和傳輸?shù)南到y(tǒng)布疙,
Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方蚊惯,用于收集數(shù)據(jù);
同時灵临,F(xiàn)lume提供對數(shù)據(jù)進(jìn)行簡單處理截型,并寫到各種數(shù)據(jù)接受方(可定制)的能力。

當(dāng)前Flume有兩個版本儒溉,
Flume0.9x版本之前的統(tǒng)稱為Flume-og宦焦,
Flume1.X版本被統(tǒng)稱為Flume-ng。

參考文檔:http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.5.0-cdh5.3.6/FlumeUserGuide.html

Flume-og和Flume-ng的區(qū)別

主要區(qū)別如下:

  1. Flume-og中采用master結(jié)構(gòu)顿涣,為了保證數(shù)據(jù)的一致性波闹,引入zookeeper進(jìn)行管理。Flume-ng中取消了集中master機(jī)制和zookeeper管理機(jī)制涛碑,變成了一個純粹的傳輸工具精堕。
  2. Flume-ng中采用不同的線程進(jìn)行數(shù)據(jù)的讀寫操作;在Flume-og中蒲障,讀數(shù)據(jù)和寫數(shù)據(jù)是由同一個線程操作的歹篓,如果寫出比較慢的話,可能會阻塞flume的接收數(shù)據(jù)的能力揉阎。

Flume結(jié)構(gòu)

Flume中以Agent為基本單位滋捶,一個agent可以包括source、channel余黎、sink,三種組件都可以有多個载萌。
其中source組件主要功能是接收外部數(shù)據(jù)惧财,并將數(shù)據(jù)傳遞到channel中;
sink組件主要功能是發(fā)送flume接收到的數(shù)據(jù)到目的地扭仁;
channel的主要作用就是數(shù)據(jù)傳輸和保存的一個作用垮衷。
Flume主要分為三類結(jié)構(gòu):單agent結(jié)構(gòu)、多agent鏈?zhǔn)浇Y(jié)構(gòu)和多路復(fù)用agent結(jié)構(gòu)乖坠。

單agent結(jié)構(gòu)

image.png

多agent鏈?zhǔn)浇Y(jié)構(gòu)

image.png

多路復(fù)用agent結(jié)構(gòu)

image.png

Source介紹

Source的主要作用是接收客戶端發(fā)送的數(shù)據(jù)搀突,并將數(shù)據(jù)發(fā)送到channel中,source和channel之間的關(guān)系是多對多關(guān)系熊泵,不過一般情況下使用一個source對應(yīng)多個channel仰迁。
通過名稱區(qū)分不同的source。
Flume常用source有:Avro Source顽分、Thrift Source徐许、Exec Source、Kafka Source卒蘸、Netcat Source等雌隅。
設(shè)置格式如下:

<agent-name>.sources.<source_name>.type=指定類型
<agent-name>.sources.<source_name>.channels=channels
.... 其他對應(yīng)source類型需要的參數(shù)

Channel介紹

Channel的主要作用是提供一個數(shù)據(jù)傳輸通道,提供數(shù)據(jù)傳輸和數(shù)據(jù)存儲(可選)等功能。
source將數(shù)據(jù)放到channel中恰起,sink從channel中拿數(shù)據(jù)修械。
通過不同的名稱來區(qū)分channel。
Flume常用channel有:Memory Channel检盼、JDBC Channel肯污、Kafka Channel、File Channel等梯皿。設(shè)置格式如下:

<agent-name>.channels.<channel_name>.type=指定類型
.... 其他對應(yīng)channel類型需要的參數(shù)

Sink介紹

Sink的主要作用是定義數(shù)據(jù)寫出方式仇箱,一般情況下sink從channel中獲取數(shù)據(jù),然后將數(shù)據(jù)寫出到file东羹、hdfs或者網(wǎng)絡(luò)上剂桥。
channel和sink之間的關(guān)系是一對多的關(guān)系。
通過不同的名稱來區(qū)分sink属提。
Flume常用sink有:Hdfs Sink权逗、Hive Sink、File Sink冤议、HBase Sink斟薇、Avro Sink、Thrift Sink恕酸、Logger Sink等堪滨。
設(shè)置格式如下:

<agent-name>.sinks.<sink_name1>.type=指定類型
<agent-name>.sinks.<sink_name1>.channel=<channe_name>
.... 其他對應(yīng)sink類型需要的參數(shù)

Flume安裝

安裝步驟如下:

  1. 下載flume:wget http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.5.0-cdh5.3.6.tar.gz
  2. 解壓flume。
  3. 修改conf/flume-env.sh文件蕊温,如果沒有就新建一個袱箱。
  4. 添加flume的bin目錄到環(huán)境變量中去。
  5. 驗證是否安裝成功, flume-ng version

Flume案例1

使用netcat source監(jiān)聽客戶端的請求义矛,使用memory channel作為數(shù)據(jù)的傳輸通道发笔,使用logger sink打印監(jiān)聽到的信息。
步驟:

  1. 在conf文件夾中建立test1.conf,里面是agent的配置凉翻。
  2. 啟動flume-ng agent --conf ./conf/ --conf-file ./conf/test.conf --name a1 -Dflume.root.logger=INFO,console了讨。
  3. 使用telenet命令連接機(jī)器,命令:telnet 192.168.100.120 4444
  4. 輸入信息查看是否成功制轰。

test1.conf

a1.sources=r1
a1.channels=c1
a1.sinks=k1

a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=4444
a1.sources.r1.channels=c1

a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100

a1.sinks.k1.type=logger
a1.sinks.k1.channel=c1

Flume案例2

Nginx作為日志服務(wù)器前计,通過exec source監(jiān)聽nginx的日志文件,使用memory channel作為數(shù)據(jù)傳輸通道艇挨,使用hdfs sink將數(shù)據(jù)存儲到hdfs上残炮。

項目用到的配置文件

nginx.conf
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';


    log_format  log_format   '$remote_addr^A$msec^A$http_host^A$request_uri';

    sendfile        on;
    keepalive_timeout  65;
    #include /etc/nginx/conf.d/*.conf;

server {
    listen       80;
    server_name  hh 0.0.0.0;

    location ~ .*(BfImg)\.(gif)$ {
      default_type image/gif;
      access_log /home/hadoop/access.log log_format;
      root /etc/nginx/www/source;  
   }
}
}

test2.conf
agent.sources = r1
agent.sinks = k1
agent.channels = c1

## common
agent.sources.r1.channels = c1
agent.sinks.k1.channel = c1

## sources config
agent.sources.r1.type  = exec
agent.sources.r1.command = tail -F /home/hadoop/access.log

## channels config
agent.channels.c1.type = memory
agent.channels.c1.capacity = 1000
agent.channels.c1.transactionCapacity = 1000
agent.channels.c1.byteCapacityBufferPercentage = 20
agent.channels.c1.byteCapacity = 1000000
agent.channels.c1.keep-alive = 60

#sinks config
agent.sinks.k1.type = hdfs
agent.sinks.k1.channel = c1
agent.sinks.k1.hdfs.path = hdfs://hh:8020/logs/%m/%d
agent.sinks.k1.hdfs.fileType = DataStream
agent.sinks.k1.hdfs.filePrefix = BF-%H
agent.sinks.k1.hdfs.fileSuffix=.log
agent.sinks.k1.hdfs.minBlockReplicas=1
agent.sinks.k1.hdfs.rollInterval=3600
agent.sinks.k1.hdfs.rollSize=132692539
agent.sinks.k1.hdfs.idleTimeout=10
agent.sinks.k1.hdfs.batchSize = 1
agent.sinks.k1.hdfs.rollCount=0
agent.sinks.k1.hdfs.round = true
agent.sinks.k1.hdfs.roundValue = 2
agent.sinks.k1.hdfs.roundUnit = minute
agent.sinks.k1.hdfs.useLocalTimeStamp = true

復(fù)雜的配置方法

agent.sources = r1
agent.sinks = k1 k2
agent.channels = c1

## common
agent.sources.r1.channels = c1
agent.sinks.k1.channel = c1
agent.sinks.k2.channel = c1

## sources config
agent.sources.r1.type  = exec
agent.sources.r1.command = tail -F /home/hadoop/access.log
agent.sources.r1.selector.type= replicating

## channels config
agent.channels.c1.type = memory
agent.channels.c1.capacity = 100000000
agent.channels.c1.transactionCapacity = 10000000
agent.channels.c1.byteCapacityBufferPercentage = 60
agent.channels.c1.byteCapacity = 12800000000
agent.channels.c1.keep-alive = 60

#sinks config
agent.sinks.k1.type = hdfs
agent.sinks.k1.channel = c1
agent.sinks.k1.hdfs.path = hdfs://server30-244:8020/logs/%Y/%m/%d
agent.sinks.k1.hdfs.fileType = DataStream
agent.sinks.k1.hdfs.filePrefix = BF-%H
agent.sinks.k1.hdfs.fileSuffix=.log
agent.sinks.k1.hdfs.minBlockReplicas=1
agent.sinks.k1.hdfs.rollInterval=3600
agent.sinks.k1.hdfs.rollSize=132692539
agent.sinks.k1.hdfs.idleTimeout=600
agent.sinks.k1.hdfs.batchSize = 100
agent.sinks.k1.hdfs.rollCount=0
agent.sinks.k1.hdfs.round = true
agent.sinks.k1.hdfs.roundValue = 2
agent.sinks.k1.hdfs.roundUnit = minute
agent.sinks.k1.hdfs.useLocalTimeStamp = true

agent.sinks.k2.type = hdfs
agent.sinks.k2.channel = c1
agent.sinks.k2.hdfs.path = hdfs://server30-99:8020/agentLog/%Y/%m/%d
agent.sinks.k2.hdfs.fileType = DataStream
agent.sinks.k1.hdfs.filePrefix = ub-%H
agent.sinks.k1.hdfs.fileSuffix=.log
agent.sinks.k2.hdfs.minBlockReplicas=1
agent.sinks.k2.hdfs.rollInterval=3600
agent.sinks.k2.hdfs.rollSize=132692539
agent.sinks.k2.hdfs.idleTimeout=600
agent.sinks.k2.hdfs.batchSize = 100
agent.sinks.k2.hdfs.rollCount=0
agent.sinks.k2.hdfs.round = true
agent.sinks.k2.hdfs.roundValue = 2
agent.sinks.k2.hdfs.roundUnit = minute
agent.sinks.k2.hdfs.useLocalTimeStamp = true


#####sink groups
agent.sinkgroups=g1
agent.sinkgroups.g1.sinks=k1 k2
agent.sinkgroups.g1.processor.type= failover
agent.sinkgroups.g1.processor.priority.k1=10
agent.sinkgroups.g1.processor.priority.k2=5
agent.sinkgroups.g1.processor.maxpenalty=10000

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缩滨,隨后出現(xiàn)的幾起案子势就,更是在濱河造成了極大的恐慌泉瞻,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苞冯,死亡現(xiàn)場離奇詭異袖牙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舅锄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門鞭达,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人皇忿,你說我怎么就攤上這事畴蹭。” “怎么了鳍烁?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵叨襟,是天一觀的道長。 經(jīng)常有香客問我幔荒,道長糊闽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任爹梁,我火速辦了婚禮右犹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姚垃。我一直安慰自己念链,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布积糯。 她就那樣靜靜地躺著钓账,像睡著了一般。 火紅的嫁衣襯著肌膚如雪絮宁。 梳的紋絲不亂的頭發(fā)上宏榕,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天晤愧,我揣著相機(jī)與錄音,去河邊找鬼拼岳。 笑死偿荷,一個胖子當(dāng)著我的面吹牛窘游,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跳纳,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼忍饰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寺庄?” 一聲冷哼從身側(cè)響起艾蓝,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤力崇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赢织,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亮靴,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年于置,在試婚紗的時候發(fā)現(xiàn)自己被綠了茧吊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡八毯,死狀恐怖搓侄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情话速,我是刑警寧澤讶踪,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站尿孔,受9級特大地震影響俊柔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜活合,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一雏婶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧白指,春花似錦留晚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至橄唬,卻和暖如春赋焕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仰楚。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工隆判, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人僧界。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓侨嘀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捂襟。 傳聞我的和親對象是個殘疾皇子咬腕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 面對以上的問題,我們?nèi)绾螌⑦@些日志移動到hdfs集群上尼葬荷?涨共?纽帖?? 第一種方案:使用shell腳本cp 文件煞赢,然后通...
    機(jī)靈鬼鬼閱讀 1,386評論 1 1
  • 1. Flume簡介 Apache Flume是一個分布式的抛计、可靠的、可用的照筑,從多種不同的源收集吹截、聚集、移動大量日...
    奉先閱讀 4,482評論 2 5
  • 介紹 概述 Apache Flume是為有效收集聚合和移動大量來自不同源到中心數(shù)據(jù)存儲而設(shè)計的可分布凝危,可靠的波俄,可用...
    ximengchj閱讀 3,522評論 0 13
  • flume的誕生背景 現(xiàn)在大數(shù)據(jù)、數(shù)據(jù)分析在企業(yè)中的應(yīng)用越來越廣泛蛾默,大數(shù)據(jù)的一個主要應(yīng)用場景是對一些日志進(jìn)行分析懦铺,...
    南山軍少閱讀 760評論 0 0
  • 小白裙,在很多人的印象中都是清純到不行了支鸡,但是偶爾來點性感的元素冬念,就會立馬變得不一樣了。 美女模特身穿的這件緊身裙...
    于賀賀閱讀 449評論 0 0