Hadoop MongoDB的四種方案

2021-08-29 00:20:02 字數 1565 閱讀 4985

背景:

公司核心業務庫現存在mongodb中,分布在6臺mongodb節點。現面臨如下問題:

1.最大的一張表有10多個g,mongodb在查詢方面尚能勝任,但是涉及到複雜計算時會比較吃力。

2.mongodb中有三張表,分別記錄了終端使用者在三個不同系統(**,遊戲,桌牌等)的行為,需要按使用者匯聚成一張表。

考慮到mongodb整合hadoop來獲得計算能力,先要讓hadoop能訪問到mongodb中資料,下面討論各個方案:

一)乙個不安全的方案--mongodb-connector

for hadoop

支援通過hive建表直接訪問mongodb中的資料:

create

table

default

.caller_intent

( id string

merchantid

int,

effective boolean,

level

string,

status string,

canceled boolean,

levelid

int,

sendmsg boolean

)stored by'

com.mongodb.hadoop.hive.mongostoragehandler

'with serdeproperties(''=

'')tblproperties(

'mongo.uri'=

'mongodb:

');

問題:

1)mongo資料庫需要暴露密碼給hadoop平台,兩個平台是不同團隊維護。

2)hadoop對mongo的操作是難以預料的,在不當時間內做不當操作可能會影響mongodb負載。

如果你的團隊沒有這樣的問題,可以考慮這個方案。

二)乙個好想法,但只是「想法」--mongodb-oplog同步到hadoop

通過oplog來同步資料是乙個好想法,不過目前沒有好的工具包支援同步到hive(倒是有同步到solr和elasticsearch的),自己開發成本太高,作罷。

三)乙個可行方案:寫入mongodb的同時寫入到kafka,然後通過flume到hdfs。

問題:

在這個方案施行以前的歷史資料需要手動匯入。

四)另乙個想法:另建乙個備mongodb集群同步主集群資料,hadoop平台擁有該備mongo集群許可權。問題:增加一台伺服器資源,卻只是為了安全的考慮,成本-效益不高。

ApplicationContext的四個實現類

context的實現類有很多,但是 ci 是唯一做具體工作的,其他實現都是對 ci 做 ci 中有一些成員物件,先來看看這些物件的用處 1.mresources resources 獲取 apk 中 res 資源的物件。2.moutercontext context 用於指向 本物件的 contex...

走過四年 無言的大四

大四,不知道該記述那現實歲月裡的那一點。前三年,有夢想的人可以盡情地追夢 沒有夢的人,還可以忘我地醉生夢死。然而,大四。所有人都被拉回現實,面臨選擇 工作還是創業 考研,還是出國留學。現實非常的現實。生活還是照常,但每個人都改變著。臥談會的內容也不再只有遊戲 女生,會加進工作 工資,未來。大四上,提...

四元數,四叉樹的理解

四元數是複數向三維的擴充擴充套件,使用複數乘法來實現旋轉。具體參考如下 understanding quaternions understanding quaternions 中文翻譯 其實就是將二維空間使用矩形大小來表示,每個結點分為0 leftup,1 leftdown,2 rightup,3 ...