Hi,
I'm new to openTSDB and right now I'm in evaluation step. We want to change our database to a time-series specific database and I'm investigating different solutions.
One important task is to migrate from our current database to openTSDB and since it's a custom one I have to write migration by myself.
I'm using openTSDB 2.2 and latest HBase version (standalone for the moment) using LZ4 compression.
To do migration I'm working with one of our customers database which consist of almost 500 time-series and each has almost 2M data points.
I had to increase some limitations in configuration and also enable Appending to be able to ingest my data as fast as possible. Still it is quite slow!
I used two ways:
1. Import from CLI: Always facing this exception even when ingesting only one time-series per time:
org.hbase.async.RemoteException: Call queue is full on testUser,42481,1473174792442, too many items queued ?
which makes it impossible to use.
2. Using HTTP api and then I send every 50000 dps in each request and set 500ms sleep between each request. This works in theory. No exception. But when I try to read the data, there are millions of dps missing!!!!! And I don't see any exception in logs or any HTTP error code. All requests are returned with 200 OK and no error!
So after writing, I tried to just go through all dps and check missing ones. When I immediately start reading what I've ingested, I don't receive almost any of ingested dps! So I set 2sec timeout between write and read and 50000 out of 2M were missed. (which is exactly one HTTP request). Now my question is how storage works? Should I wait for few seconds before reading my ingested data?
ps: I use POST to api/query
{
"msResolution" : true,
"start": 1434558735000,
"queries": [
{
"aggregator": "sum",
"metric": "metric",
"tags": {}
}
]
}
ps2: HBase and openTSDB are running on the same machine :
Intel® Xeon(R) CPU E3-1226 v3 @ 3.30GHz × 4
SSD
16GB ram
Ubuntu 16.04
Thanks in advance for any guide.
Cheers,
Mehran