通過(guò)阿里云Logstash將MaxCompute數(shù)據(jù)同步至Elasticsearch
本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。
當(dāng)您需要將MaxCompute離線表中的數(shù)據(jù)同步到阿里云Elasticsearch中時(shí),可以通過(guò)阿里云Logstash的logstash-input-maxcompute插件和管道配置功能實(shí)現(xiàn)。本文介紹對(duì)應(yīng)的配置方法。
前提條件
您已完成以下操作:
開(kāi)通阿里云MaxCompute產(chǎn)品,并完成創(chuàng)建項(xiàng)目、創(chuàng)建表和導(dǎo)入數(shù)據(jù)的任務(wù)。
具體操作步驟請(qǐng)參見(jiàn)MaxCompute官方文檔的準(zhǔn)備工作和快速入門章節(jié)。
創(chuàng)建阿里云Logstash實(shí)例,并安裝logstash-input-maxcompute插件。
具體操作步驟請(qǐng)參見(jiàn)步驟二:創(chuàng)建阿里云Logstash實(shí)例和安裝或卸載插件。
創(chuàng)建目標(biāo)阿里云Elasticsearch實(shí)例,并開(kāi)啟實(shí)例的自動(dòng)創(chuàng)建索引功能。
具體操作步驟請(qǐng)參見(jiàn)創(chuàng)建阿里云Elasticsearch實(shí)例和快速訪問(wèn)與配置。本文以6.7.0版本為例。
請(qǐng)確保網(wǎng)絡(luò)能夠互通。即MaxCompute、阿里云Logstash、阿里云Elasticsearch處于同一專有網(wǎng)絡(luò)VPC(Virtual Private Cloud)下。
說(shuō)明您也可以使用公網(wǎng)環(huán)境的服務(wù),前提是需要通過(guò)配置NAT網(wǎng)關(guān)實(shí)現(xiàn)與公網(wǎng)的連通,詳情請(qǐng)參見(jiàn)配置NAT公網(wǎng)數(shù)據(jù)傳輸。
配置Logstash管道
- 進(jìn)入阿里云Elasticsearch控制臺(tái)的Logstash頁(yè)面。
- 進(jìn)入目標(biāo)實(shí)例。
- 在頂部菜單欄處,選擇地域。
- 在Logstash實(shí)例中單擊目標(biāo)實(shí)例ID。
在左側(cè)導(dǎo)航欄,單擊管道管理。
單擊創(chuàng)建管道。
在創(chuàng)建管道任務(wù)頁(yè)面,輸入管道ID,并進(jìn)行Config配置。
本文使用的Config配置如下。
input { maxcompute { access_id => "LTAIezFX********" access_key => "SCm8xcF3bwdRbGY7AdU1sH********" endpoint => "http://service.cn-hangzhou.maxcompute.aliyun-inc.com/api" project_name => "mXXX" table_name => "sale_detail" partition => "sale_date='201911', region='hangzhou'" thread_num => 1 dirty_data_file => "/ssd/1/<Logstash實(shí)例ID>/logstash/data/XXXXX.txt" } } output { elasticsearch { hosts => ["http://es-cn-4591f5ja9000j****.elasticsearch.aliyuncs.com:9200"] index => "odps_index" user => "elastic" password => "Adm******" } }
表 1. input參數(shù)說(shuō)明 參數(shù)
類型
是否必選
說(shuō)明
access_id
string
是
您阿里云賬號(hào)的AccessKey ID。
access_key
string
是
您阿里云賬號(hào)的Access Key Secret。
endpoint
string
是
MaxCompute各地域Endpoint,請(qǐng)參見(jiàn)各地域Endpoint對(duì)照表(阿里云VPC網(wǎng)絡(luò)連接方式)。
project_name
string
是
MaxCompute的項(xiàng)目名稱。
table_name
string
是
MaxCompute的表名稱。
partition
string
是
分區(qū)字段。分區(qū)表按照字段來(lái)定義,例如:
sale_date='201911'
,region='hangzhou'
。thread_num
number
是
線程數(shù),默認(rèn)為1。
dirty_data_file
string
是
指定文件路徑,用于記錄處理失敗的日志。
說(shuō)明文件路徑請(qǐng)指定為
/ssd/1/<Logstash實(shí)例ID>/logstash/data/
。重要以上配置僅作為測(cè)試使用,在實(shí)際業(yè)務(wù)中,請(qǐng)按照業(yè)務(wù)需求進(jìn)行合理配置。Input插件支持的其他配置選項(xiàng)請(qǐng)參見(jiàn)Logstash Jdbc input plugin。
logstash-input-maxcompute插件會(huì)全量同步MaxCompute中的數(shù)據(jù)到阿里云Elasticsearch中。
Config配置詳情請(qǐng)參見(jiàn)Logstash配置文件說(shuō)明。
單擊下一步,配置管道參數(shù)。
參數(shù)
說(shuō)明
管道工作線程
并行執(zhí)行管道的Filter和Output的工作線程數(shù)量。當(dāng)事件出現(xiàn)積壓或CPU未飽和時(shí),請(qǐng)考慮增大線程數(shù),更好地使用CPU處理能力。默認(rèn)值:實(shí)例的CPU核數(shù)。
管道批大小
單個(gè)工作線程在嘗試執(zhí)行Filter和Output前,可以從Input收集的最大事件數(shù)目。較大的管道批大小可能會(huì)帶來(lái)較大的內(nèi)存開(kāi)銷。您可以設(shè)置LS_HEAP_SIZE變量,來(lái)增大JVM堆大小,從而有效使用該值。默認(rèn)值:125。
管道批延遲
創(chuàng)建管道事件批時(shí),將過(guò)小的批分派給管道工作線程之前,要等候每個(gè)事件的時(shí)長(zhǎng),單位為毫秒。默認(rèn)值:50ms。
隊(duì)列類型
用于事件緩沖的內(nèi)部排隊(duì)模型。可選值:
MEMORY:默認(rèn)值。基于內(nèi)存的傳統(tǒng)隊(duì)列。
PERSISTED:基于磁盤的ACKed隊(duì)列(持久隊(duì)列)。
隊(duì)列最大字節(jié)數(shù)
請(qǐng)確保該值小于您的磁盤總?cè)萘俊DJ(rèn)值:1024 MB。
隊(duì)列檢查點(diǎn)寫入數(shù)
啟用持久性隊(duì)列時(shí),在強(qiáng)制執(zhí)行檢查點(diǎn)之前已寫入事件的最大數(shù)目。設(shè)置為0,表示無(wú)限制。默認(rèn)值:1024。
警告配置完成后,需要保存并部署才能生效。保存并部署操作會(huì)觸發(fā)實(shí)例重啟,請(qǐng)?jiān)诓挥绊憳I(yè)務(wù)的前提下,繼續(xù)執(zhí)行以下步驟。
單擊保存或者保存并部署。
保存:將管道信息保存在Logstash里并觸發(fā)實(shí)例變更,配置不會(huì)生效。保存后,系統(tǒng)會(huì)返回管道管理頁(yè)面。可在管道列表區(qū)域,單擊操作列下的立即部署,觸發(fā)實(shí)例重啟,使配置生效。
保存并部署:保存并且部署后,會(huì)觸發(fā)實(shí)例重啟,使配置生效。
驗(yàn)證結(jié)果
登錄目標(biāo)阿里云Elasticsearch實(shí)例的Kibana控制臺(tái)。
具體步驟請(qǐng)參見(jiàn)登錄Kibana控制臺(tái)。
在左側(cè)導(dǎo)航欄,單擊Dev Tools(開(kāi)發(fā)工具)。
在Console中,執(zhí)行以下命令,查看同步成功的索引數(shù)據(jù)。
GET /odps_index/_search
運(yùn)行成功后,結(jié)果如下。
說(shuō)明如果運(yùn)行失敗,可在日志查詢頁(yè)面查看相關(guān)日志進(jìn)行排查修復(fù),詳情請(qǐng)參見(jiàn)查詢?nèi)罩?/a>。
切換到Monitoring(監(jiān)控)頁(yè)面,單擊Indices(索引)。
在Indices頁(yè)面,查看同步成功的索引,以及寫入文檔的數(shù)量。