欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

試用時(shí)間序列數(shù)據(jù)庫(kù)InfluxDB-創(chuàng)新互聯(lián)

Hadoop集群監(jiān)控需要使用時(shí)間序列數(shù)據(jù)庫(kù),今天花了半天時(shí)間調(diào)研使用了一下最近比較火的InfluxDB,發(fā)現(xiàn)還真是不錯(cuò),記錄一下學(xué)習(xí)心得。

創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的安定網(wǎng)站建設(shè)公司,安定接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行安定網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

Influx是用Go語(yǔ)言寫(xiě)的,專(zhuān)為時(shí)間序列數(shù)據(jù)持久化所開(kāi)發(fā)的,由于使用Go語(yǔ)言,所以各平臺(tái)基本都支持。類(lèi)似的時(shí)間序列數(shù)據(jù)庫(kù)還有OpenTSDB,Prometheus等。

OpenTSDB很有名,性能也不錯(cuò),但是基于HBase,要用那個(gè)還得先搭一套HBase,有點(diǎn)為了吃紅燒肉自己得先去殺豬,燙皮,拔毛的感覺(jué)。Prometheus相關(guān)文檔和討論太少,而InfluxDB項(xiàng)目活躍,使用者多,文檔也比較豐富,所以先看看這個(gè)。Influx可以說(shuō)是LevelDB的Go語(yǔ)言修改版實(shí)現(xiàn),LevelDB采用LSM引擎,效率很高,Influx是基于LSM引擎再修改的TSM引擎,專(zhuān)為時(shí)間序列設(shè)計(jì)。

InfluxDB 架構(gòu)原理介紹

LevelDB 架構(gòu)原理介紹

下午跟七牛的CrazyJVM聊了一下,因?yàn)槠吲6际怯肎o,所以也大量部署了Influx給大型企業(yè)級(jí)用戶(hù)使用,據(jù)說(shuō)是全球大的InfluxDB集群,七牛也給Influx提交了大量的Patch,結(jié)果Influx通過(guò)早期開(kāi)源弄得差不多穩(wěn)定了,突然就閉源了,這也太不局氣了,然后搞Cluster功能收費(fèi),單機(jī)功能免費(fèi)使用。

昨天看了一會(huì)文檔,今天試用了一下,感覺(jué)很不錯(cuò),值得推薦。把學(xué)習(xí)了解的內(nèi)容記錄下來(lái),供愛(ài)好者參考,也省的自己時(shí)間長(zhǎng)忘了。

InfluxDB其實(shí)不能說(shuō)像哪個(gè)數(shù)據(jù)庫(kù),初上手感覺(jué)更像Mongo類(lèi)型的NoSQL,但是有意思的是,它提供了類(lèi)SQL接口,對(duì)開(kāi)發(fā)人員十分友好。命令行查詢(xún)結(jié)果的界面又有點(diǎn)像MySQL,挺有意思的。

不寫(xiě)安裝部署和CLI接口,因?yàn)閷?shí)在沒(méi)得可寫(xiě),直接yum或者apt就裝了。service一啟動(dòng),再influx命令就進(jìn)命令行了,網(wǎng)上一大堆安裝教程

InfluxDB有幾個(gè)關(guān)鍵概念是需要了解的。

database:相當(dāng)于RDBMS里面的庫(kù)名。創(chuàng)建數(shù)據(jù)庫(kù)的語(yǔ)句也十分相似。一進(jìn)去就可以先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)玩,加不加分號(hào)都行。

CREATE DATABASE 'hadoop'

然后需要?jiǎng)?chuàng)建一個(gè)用戶(hù),我省事點(diǎn),直接創(chuàng)建一個(gè)高權(quán)限,就看了一天,然后直接寫(xiě)REST接口去了,權(quán)限管理慢慢再細(xì)看。

CREATE USER "xianglei" WITH PASSWORD 'password' WITH ALL PRIVILEGES

使用查詢(xún)語(yǔ)句插入一條數(shù)據(jù)

INSERT hdfs,hdfs=adh,path=/ free=2341234,used=51234123,nonhdfs=1234

Influx沒(méi)有先建立schema的概念,因?yàn)镮nflux允許存儲(chǔ)的數(shù)據(jù)是schemeless的,表在這里叫做measurement,數(shù)據(jù)在插入時(shí)如果沒(méi)有表,則自動(dòng)創(chuàng)建該表。

measurement: 相當(dāng)于RDBMS里面的數(shù)據(jù)表名。

在上面的INSERT語(yǔ)句中,跟在insert后面的第一個(gè)hdfs就是measurement,如果不存在一個(gè)叫做hdfs的,就自動(dòng)創(chuàng)建一個(gè)叫做hdfs的表,否則直接插入數(shù)據(jù)。

然后是tags,tags的概念類(lèi)似于RDBMS里面的查詢(xún)索引名,這里的tags是hdfs=adh和path=/,等于我建立了兩個(gè)tags。

free往后統(tǒng)稱(chēng)叫fields,tags和fields之間用空格分開(kāi),tags和fields內(nèi)部自己用逗號(hào)分開(kāi)。tags和fields名稱(chēng)可以隨意填寫(xiě),主要是一開(kāi)始設(shè)計(jì)好就行。

所以,對(duì)以上插入語(yǔ)句做一個(gè)注釋的話(huà),就是這樣。

INSERT [hdfs(measurement)],[hdfs=adh,path=/(tags)] [free=2341234,used=51234123,nonhdfs=1234(fields)]

然后即可查詢(xún)?cè)摂?shù)據(jù)

SELECT free FROM hdfs WHERE hdfs='adh' and path='/'name: hdfs time                    free ----                    ---- 1485251656036494252     425234 1485251673348104714     425234
SELECT * FROM hdfs LIMIT 2name: hdfs time                  free    hdfs    nonhdfs  path   used ----                  ----    ----    -------  ----   ---- 1485251656036494252   425234  adh     1341     /      23412 1485251673348104714   425234  adh     1341     /      23412

這里的where條件,即是上面tags里面的hdfs=adh和path=/,所以tags可以隨意添加,但是在插入第一條數(shù)據(jù)的時(shí)候,最好先設(shè)計(jì)好你的查詢(xún)條件。當(dāng)然,你插入的任何數(shù)據(jù),都會(huì)自動(dòng)添加time列,數(shù)了數(shù),應(yīng)該是納秒級(jí)的時(shí)間戳。


上面是Influx的基本概念和基本使用的記錄,下面是接口開(kāi)發(fā)的使用。以Tornado示例Restful查詢(xún)接口。

Influx本身支持restful的HTTP API,python有直接封裝的接口可以調(diào)用,直接 pip install influxdb即可

influxdb-python文檔

Talk is cheap, show me your code.

Models  Influx模塊,用于連接influxdb

class InfluxClient:     def __init__(self):         self._conf = ParseConfig()         self._config = self._conf.load()         self._server = self._config['influxdb']['server']         self._port = self._config['influxdb']['port']         self._user = self._config['influxdb']['username']         self._pass = self._config['influxdb']['password']         self._db = self._config['influxdb']['db']         self._retention_days = self._config['influxdb']['retention']['days']         self._retention_replica = self._config['influxdb']['retention']['replica']         self._retention_name = self._config['influxdb']['retention']['name']         self._client = InfluxDBClient(self._server, self._port, self._user, self._pass, self._db)     def _create_database(self):         try:             self._client.create_database(self._db)         except Exception, e:             print e.message     def _create_retention_policy(self):         try:             self._client.create_retention_policy(self._retention_name,                                                  self._retention_days,                                                  self._retention_replica,                                                  default=True)         except Exception, e:             print e.message     def _switch_user(self):         try:             self._client.switch_user(self._user, self._pass)         except Exception, e:             print e.message     def write_points(self, data):         self._create_database()         self._create_retention_policy()         if self._client.write_points(data):             return True         else:             return False     def query(self, qry):         try:             result = self._client.query(qry)             return result         except Exception, e:             return e.message

連接influxdb的配置從項(xiàng)目的配置文件里讀取,自己寫(xiě)也行。

Controller模塊InfluxController

class InfluxRestController(tornado.web.RequestHandler):     '''     "GET"         op=query&qry=select+used+from+hdfs+where+hdfs=adh     '''     查詢(xún)方法,使用HTTP GET     def get(self, *args, **kwargs):         op = self.get_argument('op')         #自己實(shí)現(xiàn)的python switch case,網(wǎng)上一大堆         for case in switch(op):             if case('query'):                 #查詢(xún)語(yǔ)句從url參數(shù)獲取                 qry = self.get_argument('qry')                 #實(shí)例化Models里面的class                 influx = InfluxClient()                 result = influx.query(qry)                 #返回結(jié)果為對(duì)象,通過(guò)raw屬性獲取對(duì)象中的字典。                 self.write(json.dumps(result.raw, ensure_ascii=False))                 break             if case():                 self.write('No argument found')     #寫(xiě)入數(shù)據(jù),使用HTTP PUT     def put(self):         op = self.get_argument('op')         for case in switch(op):             if case('write'):                 #data should urldecode first and then turn into json                 data = json.loads(urllib.unquote(self.get_argument('data')))                 influx = InfluxClient()                 #寫(xiě)入成功或失敗判斷                 if influx.write_points(data):                     self.write('{"result":true}')                 else:                     self.write('{"result":false}')                 break             if case():                 self.write('No argument found')

Tornado配置路由

applications = tornado.web.Application(     [         (r'/', IndexController),         (r'/ws/api/influx', InfluxRestController)     ],     **settings )

JSON項(xiàng)目配置文件

{   "http_port": 19998,   "influxdb":{     "server": "47.88.6.247",     "port": "8086",     "username": "root",     "password": "root",     "db": "hadoop",     "retention": {       "days": "365d",       "replica": 3,       "name": "hound_policy"     },     "replica": 3   },   "copyright": "CopyLeft 2017 Xianglei" }

插入測(cè)試

def test_write():     base_url = 'http://localhost:19998/ws/api/influx'     #data = '[{"measurement": "hdfs"},"tags":{"hdfs": "adh","path":"/user"},"fields":{"used": 234123412343423423,"free": 425234523462546546,"nonhdfs": 1341453452345}]'     #構(gòu)造插入數(shù)據(jù)     body = dict()     body['measurement'] = 'hdfs'     body['tags'] = dict()     body['tags']['hdfs'] = 'adh'     body['tags']['path'] = '/'     body['fields'] = dict()     body['fields']['used'] = 234123     body['fields']['free'] = 425234     body['fields']['nonhdfs'] = 13414     tmp = list()     tmp.append(body)     op = 'write'     # dict data to json and urlencode     data = urllib.urlencode({'op': op, 'data': json.dumps(tmp)})     headers = {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}     try:         http = tornado.httpclient.HTTPClient()         response = http.fetch(             tornado.httpclient.HTTPRequest(                 url=base_url,                 method='PUT',                 headers=headers,                 body=data             )         )         print response.body     except tornado.httpclient.HTTPError, e:         print e test_write()

插入數(shù)據(jù)后通過(guò)訪問(wèn)http連接獲取插入結(jié)果

curl -i "http://localhost:19998/ws/api/influx?op=query&qry=select%20*%20from%20hdfs" HTTP/1.1 200 OK Date: Tue, 24 Jan 2017 15:47:42 GMT Content-Length: 1055 Etag: "7a2b1af6edd4f6d11f8b000de64050a729e8621e" Content-Type: text/html; charset=UTF-8 Server: TornadoServer/4.4.2 {"values": [["2017-01-24T09:54:16.036494252Z", 425234, "adh", 13414, "/", 234123]], "name": "hdfs", "columns": ["time", "free", "hdfs", "nonhdfs", "path", "used"]}

收工,明天用React寫(xiě)監(jiān)控前端

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前題目:試用時(shí)間序列數(shù)據(jù)庫(kù)InfluxDB-創(chuàng)新互聯(lián)
分享地址:http://aaarwkj.com/article20/cdpcco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、商城網(wǎng)站、響應(yīng)式網(wǎng)站、定制開(kāi)發(fā)靜態(tài)網(wǎng)站、軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
亚洲天堂国产中文在线| 色婷婷亚洲综合色一区二区| 国产午夜福利不卡在线观看| av影片在线观看不卡| 欧美电影剧情av在线| 久久蜜臀av一区三区| 成年人免费久久毛片| 久久成人av一区二区三区| 一区二区人妻乳中文字幕| 少妇高潮特黄在线观看| 中国毛片一区二区三区| 日本欧美国产污黄在线观看 | 熟女少妇精品一区二区三区| 日韩无砖区2021不卡| 深夜av免费在线观看| 日本中文字幕免费专区| 亚洲综合日韩丝袜人妻| 欧美大尺度影片在线观看| 亚洲av在线观看午夜| 欧美日韩亚洲精品久久| 日韩精品在线播放观看| 国产精品熟女在线视频| 亚洲国产精品久久久久国产精品| 久久精品一区二区三区乱码| 亚洲精品天堂av免费看| 免费看国产一级黄色大片| 尤物视频在线观看羞羞| 老熟女乱色一区二区三区| 亚洲天堂日韩欧美在线| 国产精品99久久久久久人| 免费搜索国产男女视频| 日韩三级在线观看av| 91性感视频在线播放| 亚洲av免费一区二区三区| 国产在线精品专区第一页| 91九色视频官网在线观看| 二区三区成人在线观看| 精品国产成人一区二区| 久久亚洲综合色一区二区三区| 欧美成人午夜福利在线视频| 国产传媒在线视频观看|