bulkで20M以上のデータを登録したい


(jrgerwejg12312sd) #1

お世話になります。
フォーラムへは初投稿です。

現在 bulkAPIを利用しての大量データ登録のスクリプトを作成しています。
公式では5〜15Mが推奨とされていますがどうしても20M以上の登録が不可欠となっています。

試してみたこと
・refresh_interval -1
・number_of_replicas 0
・indices.store.throttle.max_bytes_per_sec "100mb"
・indices.store.throttle.type "none"
・http.max_content_lengthはデフォルト(100mb)
を試しましたがダメでした。
結果としては
curlで実行して
curl: (52) Empty reply from server
が返却されてしまいます。

何か設定が足りないのでしょうか。。。

どうぞお力添えをよろしくお願いいたします。


(tsgkdt) #2

こちらでは、およそ50mb程度になるjsonをbulk apiを利用して登録してみましたが、正常に登録できました。
curlで試されているとのことですが、Elasticsearchサーバ側で何らかのログが出力されてませんか?

参考までにこちらで正常に登録できた環境とテストデータを書いておきます。

試した環境

Elasticsearch 6.0.1

Indexの設定

PUT 20megaover
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  }
}

テストスクリプト

from elasticsearch import Elasticsearch, helpers
es = Elasticsearch('http://xxx.xxx.xxx.xxx:9200')

def create_doc():
    doc = {
        'number1': random.randint(1, 100),
        'number2': random.randint(1, 5000),
        'number3': random.randint(1, 10000),
        'text1': 'asdfasdfasdfasdfasdf',
        'text2': 'あいうえおかきくけこさしすせそ',
        'text3': '隣の客はよく柿食う客だ',
        'text4': 'asdfasdfasdfasdfasdf',
        'text5': 'あいうえおかきくけこさしすせそ',
        'text6': '隣の客はよく柿食う客だ',
        'text7': 'asdfasdfasdfasdfasdf',
        'text8': 'あいうえおかきくけこさしすせそ',
        'text9': '隣の客はよく柿食う客だ',
        'text10': 'asdfasdfasdfasdfasdf',
        'text11': 'あいうえおかきくけこさしすせそ',
        'text12': '隣の客はよく柿食う客だ',
        'text13': 'asdfasdfasdfasdfasdf',
        'text14': 'あいうえおかきくけこさしすせそ',
        'text15': '隣の客はよく柿食う客だ',
        'text16': 'asdfasdfasdfasdfasdf',
        'text17': 'あいうえおかきくけこさしすせそ',
        'text18': '隣の客はよく柿食う客だ',
        'text19': 'asdfasdfasdfasdfasdf',
        'text20': 'あいうえおかきくけこさしすせそ',
        'text21': '隣の客はよく柿食う客だ',
    }

    return doc

actions = []

# 50万レコード だいたい50mb弱になるをbulkで送信
for row in range(500000):
    doc = create_doc()
    type = 'test'
    actions.append({'_index': '20megaover', '_type': 'test', '_id': row, '_source': doc})
helpers.bulk(es, actions)


(jrgerwejg12312sd) #3

ご返信ありがとうございます。
ログは何も出力されておりませんでした。。

1つのオブジェクトが結構大きかったりするのでその辺りでも調べてみようと思っています。

テストありがとうございます。


(tsgkdt) #4

ここのフォーラムでも「curl Empty reply from server」などで検索すると、何件かヒットします。
また、OutOfMemoryの発生でも同様のエラーになったとGoogleで検索しても出てきます。
何かヒントになることがあるかもしれません。

あと、試された設定値については書かれているのですが、
利用されているElasticsearchのバージョンや、Heapの設定などの環境情報がないようです。
回答を得やすくするためには、こうした環境情報や、具体的な手順やデータがあれば、なお良いと思います。


(system) #5

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.