好程式設計師大資料學習路線之Logstach與flume對比
好程式設計師大資料學習路線之Logstach與flume對比, 沒有叢集的概念 ,logstach與flume都稱為組
logstash是用JRuby語言開發的
元件的對比 :
logstach : input filter output
flume : source channel sink
優劣對比 :
logstach :
安裝簡單 ,安裝體積小
有 filter元件,使得該工具具有資料過濾,資料切分的功能
可以與 ES無縫結合
具有資料容錯功能 ,在資料採集的時候,如果發生當機或斷開的情況,會斷點續傳(會記錄讀取的偏移量)
綜上 ,該工具主要用途為採集日誌資料
flume:
高可用方面要比 logstach強大
flume一直在強調資料的安全性,flume在資料傳輸過程中是由事務控制的
flume可以應用在多型別資料傳輸領域
資料對接
將 logstach.gz檔案上傳解壓即可
可以在 logstach目錄下建立conf檔案,用來儲存配置檔案
一 命令啟動
1.bin/logstash -e 'input { stdin {} } output { stdout{} }'
stdin/stdout(標準輸入輸出流)
hello xixi 2018-09-12T21:58:58.649Z hadoop01 hello xixi hello haha 2018-09-12T21:59:19.487Z hadoop01 hello haha |
2.bin/logstash -e 'input { stdin {} } output { stdout{codec => rubydebug} }'
hello xixi { "message" => "hello xixi", "@version" => "1", "@timestamp" => "2018-09-12T22:00:49.612Z", "host" => "hadoop01" } |
3.es叢集中 ,需要啟動es叢集
bin/logstash -e 'input { stdin {} } output { elasticsearch {hosts => ["192.168.88.81:9200"]} stdout{} }'
輸入命令後 ,es自動生成index,自動mapping.
hello haha 2018-09-12T22:13:05.361Z hadoop01 hehello haha |
bin/logstash -e 'input { stdin {} } output { elasticsearch {hosts => ["192.168.88.81:9200", "192.168.88.82:9200"]} stdout{} }'
4.kafka叢集中,啟動kafka叢集
bin/logstash -e 'input { stdin {} } output { elasticsearch {hosts => ["192.168.88.81:9200", "192.168.88.82:9200"]} stdout{} }'
二 配置檔案啟動
需要啟動 zookeeper叢集,kafka叢集,es叢集
1.與kafka資料對接
vi logstash-kafka.conf
啟動
bin/logstash -f logstash-kafka.conf (-f:指定檔案)
在另一節點上啟動 kafka消費命令
input { file { path => "/root/data/test.log" discover_interval => 5 start_position => "beginning" } }
output { kafka { topic_id => "test1" codec => plain { format => "%{message}" charset => "UTF-8" } bootstrap_servers => "node01:9092,node02:9092,node03:9092" } } |
2.與kafka-es資料對接
vi logstash-es.conf
#啟動logstash
bin/logstash -f logstash-es.conf
在另一節點上啟動 kafka消費命令
input { file { type => "gamelog" path => "/log/*/*.log" discover_interval => 10 start_position => "beginning" } }
output { elasticsearch { index => "gamelog-%{+YYYY.MM.dd}" hosts => ["node01:9200", "node02:9200", "node03:9200"] } } |
資料對接過程
logstach節點存放: 哪個節點空閒資源多放入哪個節點 (靈活存放)
1.啟動logstach監控logserver目錄,把資料採集到kafka
2.啟動另外一個logstach,監控kafka某個topic資料,把他採集到elasticsearch
資料對接案例
需要啟動兩個 logstach,呼叫各個配置檔案,進行對接
1.採集資料到kafka
cd conf
建立配置檔案 : vi gs-kafka.conf
input { file { codec => plain { charset => "GB2312" } path => "/root/basedir/*/*.txt" discover_interval => 5 start_position => "beginning" } }
output { kafka { topic_id => "gamelogs" codec => plain { format => "%{message}" charset => "GB2312" } bootstrap_servers => "node01:9092,node02:9092,node03:9092" } } |
建立 kafka對應的topic
bin/kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 1 --topic gamelogs |
2.在hadoop01上啟動logstach
bin/logstash -f conf/gs-kafka.conf
3.在hadoop02上啟動另外一個logstach
cd logstach/conf
vi kafka-es.conf
input { kafka { type => "accesslogs" codec => "plain" auto_offset_reset => "smallest" group_id => "elas1" topic_id => "accesslogs" zk_connect => "node01:2181,node02:2181,node03:2181" }
kafka { type => "gamelogs" auto_offset_reset => "smallest" codec => "plain" group_id => "elas2" topic_id => "gamelogs" zk_connect => "node01:2181,node02:2181,node03:2181" } }
filter { if [type] == "accesslogs" { json { source => "message" remove_field => [ "message" ] target => "access" } }
if [type] == "gamelogs" { mutate { split => { "message" => " " } add_field => { "event_type" => "%{message[3]}" "current_map" => "%{message[4]}" "current_X" => "%{message[5]}" "current_y" => "%{message[6]}" "user" => "%{message[7]}" "item" => "%{message[8]}" "item_id" => "%{message[9]}" "current_time" => "%{message[12]}" } remove_field => [ "message" ] } } }
output {
if [type] == "accesslogs" { elasticsearch { index => "accesslogs" codec => "json" hosts => ["node01:9200", "node02:9200", "node03:9200"] } }
if [type] == "gamelogs" { elasticsearch { index => "gamelogs1" codec => plain { charset => "UTF-16BE" } hosts => ["node01:9200", "node02:9200", "node03:9200"] } } } |
bin/logstash -f conf/kafka-es.conf
4.修改basedir檔案中任意資料即可產生es的index檔案
5.網頁資料儲存在設定的/data/esdata中
6.在網頁中查詢指定欄位
預設分詞器為 term,只能查詢單個漢字,query_string可以查詢全漢字
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2653555/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料學習路線之mapreduce概述程式設計師大資料
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 好程式設計師大資料學習路線分享Scala系列之對映Map程式設計師大資料
- 好程式設計師大資料學習路線之zookeeper乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料學習路線分享大資料之執行緒程式設計師大資料執行緒
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師大資料學習路線分享Scala系列之物件程式設計師大資料物件
- 好程式設計師大資料學習路線之hive儲存格式程式設計師大資料Hive
- 好程式設計師大資料學習路線之大資料自學路線二程式設計師大資料
- 好程式設計師大資料學習路線之大資料自學路線一程式設計師大資料
- 好程式設計師大資料學習路線分享大資料之基礎語法程式設計師大資料
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師大資料學習路線Hbase總結程式設計師大資料
- 好程式設計師大資料學習路線之hive表的查詢程式設計師大資料Hive
- 好程式設計師大資料學習路線分享Scala系列之抽象類程式設計師大資料抽象
- 好程式設計師大資料學習路線分享Scala系列之陣列程式設計師大資料陣列
- 好程式設計師大資料學習路線分享Scala系列之泛型程式設計師大資料泛型
- 好程式設計師大資料學習路線分享函式+map對映+元祖程式設計師大資料函式
- 好程式設計師大資料學習路線Hadoop學習乾貨分享程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 好程式設計師大資料學習路線分享hdfs學習乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享Actor學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享Map學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享Scala系列之基礎篇程式設計師大資料
- 好程式設計師大資料學習路線分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料學習路線分享AWK詳解程式設計師大資料
- 好程式設計師大資料學習路線分享UDF函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享Lambda表示式程式設計師大資料
- 好程式設計師Java學習路線之集程式設計師Java
- 好程式設計師大資料學習路線分享Scala系列之集合操作函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享高階函式程式設計師大資料函式
- 好程式設計師大資料學習路線hive內部函式程式設計師大資料Hive函式
- 好程式設計師大資料學習路線分享Hadoop機架感知程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享TCP和UDP學習筆記程式設計師大資料TCPUDP筆記
- 好程式設計師大資料學習路線分享MapReduce全過程解析程式設計師大資料
- 好程式設計師大資料學習路線分享hive的執行方式程式設計師大資料Hive