1. 程式人生 > >阿里雲分析型資料庫AnalyticDB:使用Logstash外掛進行高效資料寫入

阿里雲分析型資料庫AnalyticDB:使用Logstash外掛進行高效資料寫入

前言

AnalyticDB(簡稱ADB,ADS,早期專案名Garuda)是阿里巴巴自主研發的海量資料實時高併發線上實時分析型資料庫(Real-Time OLAP)。自2012年第一次在集團釋出上線以來(初期內部命名Garuda),至今已累計迭代釋出一百多個版本,支撐起集團內的電商、廣告、菜鳥、文娛、飛豬等眾多線上資料分析業務。AnalyticDB 於2014年在阿里雲開始正式對外輸出,包括公共雲和專有云,支撐行業既包括傳統的大中型企業和政府機構,也包括眾多的網際網路公司。每年集團雙十一、電商、廣告投放、遊戲和物流等公有云和專有云大量使用者和大量業務的實時分析業務高峰都驅動著AnalyticDB不斷的架構演進,技術創新。

背景

眾所周知,Logstash是一個開源的伺服器端資料處理管道,起初是為了處理日誌類資料寫入到ES中,但隨著開源社群的不斷髮展,如今可以同時從多個數據源獲取資料,並對其進行轉換,然後將其傳送到你想要的“儲存”。就日誌資料為例,我們如果想要把log資料匯入ADB中進行進一步分析,因為ADB支援原生JDBC方式訪問,所以目前可以通過開源logstash output外掛logstash-output-jdbc進行資料的匯入,但是在使用過程中發現,在日誌量非常大的情況下,jdbc方式寫入ADB的效能是比較低的,並且會非常消耗CPU的資源(因為jdbc是單條記錄寫入的方式)。在日誌量非常大的時候,這種方式價效比明顯是很低的,因此,我們基於jdbc外掛的方式優化了一個專門支援ADB的聚合寫入方式的output plugin——

logstash-ouput-analyticdb,在此就簡單介紹一下logstash通過logstash-output-analyticdb外掛寫入ADB的使用方式。

安裝

Logstash的安裝流程可以參見傳送門,這裡不多敘,我們主要介紹一下安裝logstash-output-analyticdb的流程:

  • 進入logstash根目錄:cd logstash
  • 安裝logstash-output-analyticdb:bin/logstash-plugin install logstash-output-analyticdb
  • 在logstash目錄下建立vendor/jar/jdbc目錄:mkdir -p vendor/jar/jdbc
  • 將jdbc jar拷貝到vendor/jar/jdbc中:cd vendor/jar/jdbc; wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar
    至此,logstash-output-analyticdb的安裝步驟就都完成了!

使用方式

上面我們已經安裝好了logstash-output-analyticdb外掛,下面我們看看怎麼使用呢?
和大多數logstash案例的使用方式一樣,我們在config目錄下建立一個logstash-analyticdb.conf(名字可以自行定義)的配置檔案,此處我們貼一個簡單的example:

input
{
    stdin { }
}
output {
    analyticdb {
        driver_class => "com.mysql.jdbc.Driver"
        connection_string => "jdbc:mysql://HOSTNAME:PORT/DATABASE?user=USER&password=PASSWORD"
        statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, ?, ?)", "host", "@timestamp", "message" ]
    }
}

connection_string:連線你的AnalyticDB的jdbc url
statement:insert SQL的宣告陣列,要提前在你的AnalyticDB上建立對應的表哦,不然往哪兒寫呢?
此配置檔案的內容只是一個例子,具體配置檔案的內容根據各使用者的實際使用場景決定。其他analyticdb相關的配置項請看README
logstash的原有使用配置項,大家可以看看logstash的文件(因為配置項和規則太多了,就不在此贅述了)
至此,我們使用前的配置任務都已經做完,下面我們來啟動任務,在logstash安裝目錄執行:bin/logstash -f config/logstash-analyticdb.conf即可

後記

我們在使用logstash-output-analyticdb寫入AnalyticDB的效能相較於logstash-output-jdbc會有5倍的提升,並且對於CPU的使用也有明顯的降低。
如果大家在使用過程中遇到任何問題,歡迎issue拋過來