1. 程式人生 > >Flume原始碼分析—程式碼結構理解(四)

Flume原始碼分析—程式碼結構理解(四)

Flume原始碼涵蓋的內容很多,但大家在讀取Flume原始碼時可以去除枝葉,把握核心部分,可以有效的減輕原始碼分析的工作量。我使用的Flume-NG原始碼的版本為1.6.0,其他版本的原始碼可以參照分析。

根據Flume的基本原理,flume主要由source、sink以及channel三個元件組成,為了方便廣大使用者使用flume,flume專案組也是花了很多心思做了大量的元件來適配當前主流的源、目標以及channel。其原始碼中的包名如下所示,大家從包名中就很容易看出相應元件的作用。

source:
/flume-avro-source
/flume-jms-source
/flume-kafka
-source /flume-ng-legacy-sources /flume-ng-sources /flume-scribe-source /flume-thrift-source /flume-twitter-source
sink:
/flume-dataset-sink
/flume-hdfs-sink
/flume-hive-sink
/flume-irc-sink
/flume-kafka-sink
/flume-ng-elasticsearch-sink
/flume-ng-hbase-sink
/flume-ng-kafka-sink
/flume-ng-morphline-solr-sink
/flume-ng
-sinks
channel:
/flume-file-channel
/flume-jdbc-channel
/flume-ng-channels
/flume-spillable-memory-channel

flume在組織這些元件是通過event來進行訊息的傳遞,flume原始碼的核心功能在於根據配置檔案來呼叫相應的source、channel、sink來進行訊息的流轉。分析原始碼時可以先選擇flume原始碼的核心來理解整個平臺的工作流程,從而加深對flume的理解。

flume整體框架的核心在於以下幾個包,當然個別包也只是起到一定的輔助作用。

/flume-ng-node
/flume-ng
-sdk /flume-ng-auth /flume-ng-configuration /flume-ng-core /flume-ng-dist /flume-parent /flume-tools