Elasticsearch bulk request

2018-12-22

最近在往ES里寫數(shù)據(jù)的時候,發(fā)現(xiàn)一條一條寫非常慢猫十。基本一個比較小規(guī)模(3master、3data炫彩、1client)的ES集群on k8s匾七,用RestHighLevelClient寫入數(shù)據(jù),加上一些業(yè)務(wù)邏輯江兢,每秒只能寫到30條左右昨忆。

線上環(huán)境有一張3500w的表,這樣寫實在不能忍杉允,于是換成ES的bulk request邑贴,發(fā)現(xiàn)速度快了很多,每秒5000條叔磷。

我們是這樣設(shè)置的拢驾,由于ES對bulk request的一次請求大小有限制,要求在20M以內(nèi)改基,所以我們采用1000條作為一個bulk繁疤,目前看效果很不錯,應(yīng)該還可以繼續(xù)優(yōu)化秕狰,要求是200w/s稠腊,還有一定差距。鸣哀。架忌。

2018-01-17

ES官方推薦的一次bulk size介于5-15MB之間,請求個數(shù)是1000-5000個
但是實際環(huán)境里我衬,一條數(shù)據(jù)的大小是不確定的叹放,而且不同規(guī)模的集群,bulk的大小也不一樣挠羔,具體設(shè)置還是要看情況
不過有這樣一個辦法井仰,可以大致估計一個請求的大小
將這個請求序列化出來,然后看大小褥赊,達到最佳size后就發(fā)送

這樣有幾個問題:

  • 每個數(shù)據(jù)都執(zhí)行這個操作嗎糕档?
  • 序列化本身就是一件很耗cpu的事情,這樣不會很慢嗎拌喉?
  • 序列化以后的數(shù)據(jù)要占據(jù)的空間是MB級別,回收這個空間的消耗值得嗎俐银?

這個問題比較有意思尿背,spark的代碼里有一個類 SizeEstimator,他的用途其實和我們的需要是一樣的捶惜,用來估計一個對象在內(nèi)存中的大小田藐,但是有個問題,他估計的是這個對象。如果這個對象有一個字段是指針汽久,那這個指針指向的另一個對象也會被序列化鹤竭,有空可以研究一下,如何改進這個類景醇,達到我們的目的臀稚。

在索引數(shù)據(jù)過程中,經(jīng)常發(fā)現(xiàn)三痰,即使使用了最佳的bulk size吧寺,也不能達到最快的速度,因為我們的數(shù)據(jù)來源雖然是impala數(shù)據(jù)散劫,但是實現(xiàn)上并沒有使用impala的JDBC接口稚机。而是直接用HDFS的FileSystem打開文件流,理論上最快的速度應(yīng)該達到文件流的速度获搏,然而實際上遠遠沒有赖条。目前的測試情況,最快的速度也只有1w條數(shù)據(jù)/s常熙,與目標相差甚遠??纬乍。

所以目前的設(shè)計方案除了繼續(xù)優(yōu)化代碼,減少不必要的性能損失以外症概,還有一個想法就是集群化蕾额,并且多線程化,大概設(shè)想如下:

  • 首先每個任務(wù)有自己的線程池彼城,在集群啟動時诅蝶,預(yù)估整個集群的資源,并按需分配募壕,這部分可以參考spark的邏輯调炬,然后以文件數(shù)為例,對impala數(shù)據(jù)來說舱馅,最終數(shù)據(jù)都存在HDFS上缰泡,所以可以先查看HDFS的數(shù)據(jù)集文件大小,大概每個block的量(256MB)代嗤,作為一個線程去做索引棘钞,如果這個表含有的數(shù)據(jù)大小約等于3個block,實際上是5份文件干毅,那就起3個線程宜猜,平均每個線程分得的數(shù)據(jù)量最好一致,以此類推硝逢。
  • 集群化則是說姨拥,可以有一個service提供服務(wù)绅喉,然后索引實例有n個,沒有master叫乌,最好彼此之間互不影響柴罐,并且能夠完成任務(wù)的自動調(diào)度,能夠統(tǒng)一提供索引服務(wù)憨奸,最大化利用資源革屠,讓索引速度快起來。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末膀藐,一起剝皮案震驚了整個濱河市屠阻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌额各,老刑警劉巖国觉,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異虾啦,居然都是意外死亡麻诀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門傲醉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝇闭,“玉大人,你說我怎么就攤上這事硬毕∩胍” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵吐咳,是天一觀的道長逻悠。 經(jīng)常有香客問我,道長韭脊,這世上最難降的妖魔是什么童谒? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮沪羔,結(jié)果婚禮上饥伊,老公的妹妹穿的比我還像新娘。我一直安慰自己蔫饰,他們只是感情好琅豆,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著篓吁,像睡著了一般趋距。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上越除,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音,去河邊找鬼摘盆。 笑死翼雀,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的孩擂。 我是一名探鬼主播狼渊,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼类垦!你這毒婦竟也來了狈邑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蚤认,失蹤者是張志新(化名)和其女友劉穎米苹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砰琢,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蘸嘶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陪汽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片训唱。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挚冤,靈堂內(nèi)的尸體忽然破棺而出育韩,到底是詐尸還是另有隱情,我是刑警寧澤剩燥,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布拦盹,位于F島的核電站,受9級特大地震影響舍哄,放射性物質(zhì)發(fā)生泄漏宴凉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一表悬、第九天 我趴在偏房一處隱蔽的房頂上張望弥锄。 院中可真熱鬧,春花似錦蟆沫、人聲如沸籽暇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戒悠。三九已至,卻和暖如春舟山,著一層夾襖步出監(jiān)牢的瞬間绸狐,已是汗流浹背卤恳。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寒矿,地道東北人突琳。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像符相,于是被迫代替她去往敵國和親拆融。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348