[英]Import huge data from MySQL to Elasticsearch
我正在嘗試使用Logstash從MySQL導入32m行到Elasticsearch,它工作正常,但在達到3,5m時會中斷。 檢查過MySQL,Logstash工作正常,Elasticsearch中的問題請查看日志:
[2018-08-14T23:06:44,299][WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [4OtmyM2] Failed to clear cache for realms [[]]
[2018-08-14T23:06:44,345][INFO ][o.e.l.LicenseService ] [4OtmyM2] license [23fbbbff-0ba9-44f5-be52-7f5a6498dbd1] mode [basic] - valid
[2018-08-14T23:06:44,368][INFO ][o.e.g.GatewayService ] [4OtmyM2] recovered [1] indices into cluster_state
[2018-08-14T23:06:46,120][INFO ][o.e.c.r.a.AllocationService] [4OtmyM2] Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[clustername][2]] ...]).
[2018-08-14T23:55:55,780][INFO ][o.e.m.j.JvmGcMonitorService] [4OtmyM2] [gc][2953] overhead, spent [378ms] collecting in the last [1s]
我已將堆大小增加到2GB,但仍然無法處理。 用於遷移的配置文件如下:
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/clustername?useCursorFetch=true"
jdbc_user => "USER"
jdbc_password => "PSWD"
jdbc_validate_connection => true
jdbc_driver_library => "/usr/share/java/mysql-connector-java-5.1.42.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
#jdbc_fetch_size => "50000"
jdbc_page_size => 100000
statement => "SELECT * FROM `video` ORDER by `id` ASC LIMIT 100000 OFFSET 3552984"
}
}
感謝您的任何建議。
您沒有提供足夠的數據來幫助診斷問題。 要正確索引大量數據,您必須真正了解數據是什么,將要占用多少存儲空間以及將要使用多少內存。
Elasticsearch不是魔術。 如果您要超越簡單的概念證明,就必須了解一些事情。 當看到諸如gc開銷之類的事情花費大量時間時,您必須假設您沒有正確調整Elasticsearch集群的大小。
您需要考慮的事情:
elasticsearch需要多少內存?
您需要多少個節點
您還需要考慮很多其他事情,但是作為一般規則,請嘗試找出錯誤的根源所在,即通過生成一些看起來像真實數據的隨機數據來從混合中刪除SQL Server / logstash。您可以收集適當調整群集大小所需的指標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.