企業(yè)是如何選擇技術(shù)棧來做離線數(shù)倉

前言

???????? 最近在跟一位粉絲聊天,聊起來了做離線數(shù)倉時(shí)該用那些技術(shù)棧编饺。于是根據(jù)我的經(jīng)驗(yàn)和參考一些資料于就有本篇文章。在這里我會(huì)分享三個(gè)案例响驴,僅供參考反肋。

案例一、小型公司

???????? 首先我們要明白一點(diǎn)小型公司人員并不多其次服務(wù)器的配置有不是很高踏施,這時(shí)如果要做數(shù)倉使用到的大數(shù)據(jù)組件就不可能了石蔗,那我們就使用傳統(tǒng)數(shù)據(jù)庫來進(jìn)行講解。

1.1 技術(shù)選型

???????? ?首先公司在選擇一個(gè)技術(shù)時(shí)需要考慮成本的畅形,比如人員的安排养距,公司的員工對(duì)大數(shù)據(jù)的組件都不是很了解,如果選擇大數(shù)據(jù)的組件學(xué)習(xí)成本較高日熬,可以還會(huì)找一批大數(shù)據(jù)的員工進(jìn)來開發(fā)棍厌,提高了項(xiàng)目的成本,由于數(shù)據(jù)量也不是很高1年也就幾百萬的數(shù)據(jù)量竖席,目前市場(chǎng)上的數(shù)據(jù)庫也是支持存儲(chǔ)的耘纱,MySQLoracle毕荐,SQL server 該選擇那個(gè)一個(gè)那束析?

MySQL、oracle憎亚、SQL server 對(duì)比

MySQL優(yōu)缺點(diǎn)優(yōu)

  1. 它使用的核心線程是完全多線程员寇,支持多處理器。
  2. 有多種列類型:1第美、2蝶锋、3、4什往、和8字節(jié)長(zhǎng)度自有符號(hào)/無符號(hào)整數(shù)扳缕、FLOAT、DOUBLE、CHAR躯舔、VARCHAR贡必、TEXT、BLOB庸毫、DATE、TIME衫樊、DATETIME飒赃、 TIMESTAMP、YEAR科侈、和ENUM類型载佳。
  3. 它通過一個(gè)高度優(yōu)化的類庫實(shí)現(xiàn)SQL函數(shù)庫并像他們能達(dá)到的一樣快速,通常在查詢初始化后不該有任何內(nèi)存分配臀栈。沒有內(nèi)存漏洞蔫慧。
  4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數(shù)(COUNT()权薯、COUNT(DISTINCT)姑躲、AVG()、STD()盟蚣、SUM()黍析、MAX()和MIN())。你可以在同一查詢中混來自不同數(shù)據(jù)庫的表屎开。
  5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC阐枣。
  6. 所有列都有缺省值。你可以用INSERT插入一個(gè)表列的子集奄抽,那些沒用明確給定值的列設(shè)置為他們的決省值蔼两。
  7. MySQL可以工作在不同的平臺(tái)上。支持C逞度、C++额划、Java、Perl档泽、PHP锁孟、Python和TCL API。
  8. 支持索引創(chuàng)建

  1. MySQL最大的缺點(diǎn)是其安全系統(tǒng)茁瘦,主要是復(fù)雜而非標(biāo)準(zhǔn)品抽,另外只有到調(diào)用mysqladmin來重讀用戶權(quán)限時(shí)才發(fā)生改變。
  2. MySQL的另一個(gè)主要的缺陷之一是缺乏標(biāo)準(zhǔn)的RI(Referential Integrity-RI)機(jī)制甜熔;Rl限制的缺乏(在給定字段域上的一種固定的范圍限制)可以通過大量的數(shù)據(jù)類型來補(bǔ)償圆恤。
  3. MySQL沒有一種存儲(chǔ)過程(Stored Procedure)語言,這是對(duì)習(xí)慣于企業(yè)級(jí)數(shù)據(jù)庫的程序員的最大限制。
  4. MySQL不支持熱備份盆昙。
  5. MySQL的價(jià)格隨平臺(tái)和安裝方式變化羽历。Linux的MySQL如果由用戶自己或系統(tǒng)管理員而不是第三方安裝則是免費(fèi)的,第三方案則必須付許可費(fèi)淡喜。Unix或Linux 自行安裝 免費(fèi) 秕磷、Unix或Linux 第三方安裝 200美元,

oraclet優(yōu)缺點(diǎn)

優(yōu)

  1. 開放性:oracle 能所有主流平臺(tái)上運(yùn)行(包括 windows)完全支持所有工業(yè)標(biāo)準(zhǔn)采用完全開放策略使客戶選擇適合解決方案對(duì)開發(fā)商全力支持炼团;
  2. 可伸縮性,并行性:Oracle 并行服務(wù)器通過使組結(jié)點(diǎn)共享同簇工作來擴(kuò)展windownt能力提供高用性和高伸縮性簇解決方案windowsNT能滿足需要用戶把數(shù)據(jù)庫移UNIXOracle并行服務(wù)器對(duì)各種UNIX平臺(tái)集群機(jī)制都有著相當(dāng)高集成度澎嚣;
  3. 安全性:獲得最高認(rèn)證級(jí)別的ISO標(biāo)準(zhǔn)認(rèn)證。
  4. 性能:Oracle 性能高 保持開放平臺(tái)下TPC-D和TPC-C世界記錄瘟芝;
  5. 客戶端支持及應(yīng)用模式:Oracle 多層次網(wǎng)絡(luò)計(jì)算支持多種工業(yè)標(biāo)準(zhǔn)用ODBC易桃、JDBC、OCI等網(wǎng)絡(luò)客戶連接
  6. 使用風(fēng)險(xiǎn):Oracle 長(zhǎng)時(shí)間開發(fā)經(jīng)驗(yàn)完全向下兼容得廣泛應(yīng)用地風(fēng)險(xiǎn)低

  1. 對(duì)硬件的要求很高锌俱;
  2. 價(jià)格比較昂貴晤郑;
  3. 管理維護(hù)麻煩一些;
  4. 操作比較復(fù)雜贸宏,需要技術(shù)含量較高造寝;

SQL Server優(yōu)缺點(diǎn)

優(yōu)

  1. 易用性、適合分布式組織的可伸縮性吭练、用于決策支持的數(shù)據(jù)倉庫功能匹舞、與許多其他服務(wù)器軟件緊密關(guān)聯(lián)的集成性、良好的性價(jià)比等线脚;
  2. 為數(shù)據(jù)管理與分析帶來了靈活性赐稽,允許單位在快速變化的環(huán)境中從容響應(yīng),從而獲得競(jìng)爭(zhēng)優(yōu)勢(shì)

  1. SQL Server 只能windows上運(yùn)行沒有絲毫開放性操作系統(tǒng)系統(tǒng)穩(wěn)定對(duì)數(shù)據(jù)庫十分重要Windows9X系列產(chǎn)品偏重于桌面應(yīng)用NT server只適合小型企業(yè)而且windows平臺(tái)靠性安全性和伸縮性非常有限象unix樣久經(jīng)考驗(yàn)尤其處理大數(shù)據(jù)庫浑侥;
  2. SQL server 并行實(shí)施和共存模型并成熟難處理日益增多用戶數(shù)和數(shù)據(jù)卷伸縮性有限姊舵;
  3. 沒有獲得任何安全證書。
  4. SQL Server 多用戶時(shí)性能佳 寓落;客戶端支持及應(yīng)用模式:客戶端支持及應(yīng)用模式括丁。只支持C/S模式,SQL Server C/S結(jié)構(gòu)只支持windows客戶用ADO伶选、DAO史飞、OLEDB、ODBC連接
  5. SQL server 完全重寫代碼經(jīng)歷了長(zhǎng)期測(cè)試斷延遲許多功能需要時(shí)間來證明并十分兼容仰税;

小結(jié)?????????

? ? ? ? 根據(jù)開會(huì)和各位領(lǐng)導(dǎo)的決定使用oracle來做數(shù)倉构资,分別在oracle中構(gòu)構(gòu)建四層分別為 odsdwd陨簇、dws吐绵、ads這里我就不介紹數(shù)倉分層概念了最后的整體架構(gòu)如下:數(shù)據(jù)庫:Oracle數(shù)據(jù)同步 :kettle數(shù)據(jù)展示:大屏展示,Superset

1.2 技術(shù)架構(gòu)

案例二、中型公司

???????? ?首先中型公司做離線數(shù)倉并不單純的做數(shù)倉己单,你將你數(shù)據(jù)存放在數(shù)倉中通報(bào)表的形式展示在大屏中唉窃,體現(xiàn)不出數(shù)倉的價(jià)值,可以通過這個(gè)些數(shù)據(jù)做一個(gè)用戶畫像纹笼。我在這里舉一個(gè)不恰到的例子:比如數(shù)倉的中的數(shù)據(jù)沒有被利用起來纹份,我購買了一個(gè)商品在后臺(tái)報(bào)表中加上我剛剛下單的這一條數(shù)據(jù)(死數(shù)據(jù)),只是報(bào)表發(fā)生了改變但是對(duì)于公司而是價(jià)值不大廷痘,這時(shí)我們是不是可用基于數(shù)倉做一個(gè)用戶畫像,分析出這個(gè)用戶喜歡夠那類商品蔓涧,價(jià)格的區(qū)間是多少,這樣就可以做一個(gè)精準(zhǔn)推薦牍疏。廢話就不多少了直接開始。

2.1 技術(shù)選型

???????? 技術(shù)選型需要根據(jù)公司的需求以及公司的數(shù)據(jù)量等綜合的因素進(jìn)行選擇拨齐,可以使用Hive鳞陨、HBase等技術(shù)來做。那我們這里就使用Hive詳細(xì)架構(gòu)請(qǐng)看下:

數(shù)據(jù)采集:Kettle瞻惋、sqoop厦滤、flume數(shù)據(jù)存儲(chǔ):HDFS、Hbase歼狼、Redis掏导、Kafka任務(wù)調(diào)度:Yarn計(jì)算引擎:Spark離線處理:Hive數(shù)據(jù)應(yīng)用層:kylin 、大屏展示羽峰、Superset

???????? 我拍在這里就有好多小伙伴不知道為什么這么選型趟咆,我就在這一一給講解下:

數(shù)據(jù)采集

???????? kettle 一般處理一些數(shù)據(jù)量比較小的數(shù)據(jù),因?yàn)閷W(xué)習(xí)成本低梅屉,適合那些剛剛接觸ETL的員工值纱,并且還有豐富的組件,例如exec坯汤、Json虐唠、文本等信息錄入到數(shù)據(jù)庫中。

???????? sqoop主要將關(guān)系型數(shù)據(jù)同步到hive中惰聂,因?yàn)樗牡讓邮峭ㄟ^MapReduce的方式當(dāng)多量數(shù)據(jù)通過分布式方式效率也不會(huì)很慢疆偿。

???????? Flume 主要將前端產(chǎn)生的日志存到kafka中用來做一些點(diǎn)擊流操作。例如:分析用戶在這個(gè)頁面停留了多長(zhǎng)時(shí)間搓幌。求出頁面的TopN等信息杆故。

數(shù)據(jù)存儲(chǔ)

???????? ?HDFS 主要存儲(chǔ)一些要求時(shí)效不高的數(shù)據(jù),但是這些數(shù)據(jù)又不能被丟失場(chǎng)景溉愁,一般會(huì)結(jié)合Hive一起使用反番。????????

? ? ? ? ? Hbase 一般會(huì)將hive中的ADS層的一部分?jǐn)?shù)據(jù)存儲(chǔ)到Hbase中提供數(shù)據(jù)支撐。這一部分?jǐn)?shù)據(jù)一般要求時(shí)效性比較高。???????? ?

? ? ? ? ??Redis ?一般用于前端與數(shù)據(jù)庫之間的橋梁罢缸,前端來的請(qǐng)求先去Redis查篙贸,這樣就避免了數(shù)據(jù)庫高并出現(xiàn)宕機(jī)的現(xiàn)象。?????????

? ? ? ? ? ?kafka 主要存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)枫疆,一般設(shè)置保存7天爵川,場(chǎng)景不同。這里用于做點(diǎn)擊流息楔。

任務(wù)調(diào)度

???????? ?yarn 想必大家對(duì)它都不陌生主要用戶做資源調(diào)度了寝贡。

計(jì)算引擎

???????? Spark ?在本次項(xiàng)目中主要做數(shù)據(jù)分析,通過SparkSql 更快的提高分析效率值依,大大的節(jié)約了時(shí)間圃泡。

離線處理????????

Hive這里起到了數(shù)據(jù)倉庫的作用 ,Hive在這里進(jìn)行了分層分別為ods愿险、dwd颇蜡、dwsads 每個(gè)層都有他自己的作用域辆亏。

2.2 技術(shù)架構(gòu)

案例三风秤、攜程機(jī)票數(shù)據(jù)倉庫技術(shù)棧

以下內(nèi)容來源于:https://www.sohu.com/a/403837625_411876

???????? 攜程機(jī)票部門的數(shù)據(jù)倉庫建設(shè)主要基于公司公共部門的大數(shù)據(jù)基礎(chǔ)環(huán)境及數(shù)據(jù)調(diào)度平臺(tái),輔以部分自運(yùn)維的開源存儲(chǔ)引擎和基于開源組件二次開發(fā)的數(shù)據(jù)同步工具和運(yùn)維工具扮叨。

3.1 當(dāng)前技術(shù)棧

生產(chǎn)環(huán)境的數(shù)據(jù)可以大致分成三類:

  1. 業(yè)務(wù)數(shù)據(jù)缤弦,主要存儲(chǔ)在MySQL和SQLServer,在這些關(guān)系型數(shù)據(jù)庫里面有數(shù)以萬計(jì)的表承接著各種生產(chǎn)服務(wù)的業(yè)務(wù)數(shù)據(jù)寫入彻磁;
  2. 基礎(chǔ)數(shù)據(jù)碍沐,也是存儲(chǔ)在MySQL和SQLServer中,生產(chǎn)應(yīng)用時(shí)一般會(huì)建立一層中心化緩存(如Redis)或者本地緩存衷蜓;
  3. 日志數(shù)據(jù)抢韭,這類數(shù)據(jù)的特點(diǎn)是”append only”,對(duì)已經(jīng)生成的數(shù)據(jù)不會(huì)有更新的操作恍箭,考慮到這類數(shù)據(jù)的高吞吐量刻恭,生產(chǎn)環(huán)境一般會(huì)用消息隊(duì)列Kafka暫存;

數(shù)據(jù)倉庫在實(shí)施數(shù)據(jù)同步時(shí)扯夭,會(huì)根據(jù)需求在實(shí)時(shí)鳍贾、近實(shí)時(shí)以及T+1天等不同的頻率執(zhí)行數(shù)據(jù)同步,并且在大數(shù)據(jù)環(huán)境會(huì)用不同的載體承接不同頻率同步過來的數(shù)據(jù)交洗。在攜程機(jī)票骑科,實(shí)時(shí)同步的目標(biāo)載體是ElasticSearch、CrateDB或者HBase构拳,近實(shí)時(shí)(一般T+1小時(shí))或者T+1天的目標(biāo)載體是Hive咆爽。

從生產(chǎn)的數(shù)據(jù)載體來講梁棠,主要包括DB和消息隊(duì)列,他們的數(shù)據(jù)同步方案主要是:

  1. 生產(chǎn)DB到Hive的同步使用taobao開源的DataX斗埂,DataX由網(wǎng)站運(yùn)營(yíng)中心DP團(tuán)隊(duì)做了很多擴(kuò)展開發(fā)符糊,目前支持了多種數(shù)據(jù)源之間的數(shù)據(jù)同步。實(shí)時(shí)同步的場(chǎng)景主要在MySQL呛凶,使用DBA部門使用Canal解析并寫入至消息隊(duì)列的bin log男娄。
  2. 從Kafka到Hive同步使用Camus,但是由于Camus的性能問題及消費(fèi)記錄和消費(fèi)過期較難監(jiān)控的問題漾稀,我們基于spark-sql-kafka開發(fā)了hamal模闲,用于新建的Kafka到Hive的同步;Kafka實(shí)時(shí)同步的載體主要是ElasticSearch或者CrateDB崭捍,主要通過Flink實(shí)施尸折。
  3. 生產(chǎn)數(shù)據(jù)被同步數(shù)據(jù)倉庫后,會(huì)在數(shù)倉內(nèi)完成數(shù)據(jù)清洗殷蛇、信息整合实夹、聚合計(jì)算等數(shù)據(jù)扭轉(zhuǎn)流程,最終數(shù)據(jù)出倉導(dǎo)入到其它載體晾咪,這一系列的流程調(diào)度由公司DP團(tuán)隊(duì)運(yùn)維的調(diào)度平臺(tái)Zeus完成收擦。

3.2 技術(shù)架構(gòu)

小結(jié)

???????? 一套完整的數(shù)據(jù)倉庫實(shí)施方案應(yīng)該包括但不局限于上面介紹的數(shù)據(jù)同步方案贮配、數(shù)據(jù)存儲(chǔ)方案谍倦、數(shù)據(jù)規(guī)范、元數(shù)據(jù)建設(shè)泪勒、數(shù)據(jù)質(zhì)量體系昼蛀、運(yùn)維工具等,每個(gè)實(shí)施團(tuán)隊(duì)?wèi)?yīng)該根據(jù)面臨的實(shí)際情況選擇針對(duì)每個(gè)點(diǎn)的具體技術(shù)方案圆存。我在這里為大家提供大數(shù)據(jù)的資料需要的朋友可以去下面GitHub去下載叼旋,信自己,努力和汗水總會(huì)能得到回報(bào)的沦辙。我是大數(shù)據(jù)老哥夫植,我們下期見~~~

資源獲取 獲取Flink面試題,Spark面試題油讯,程序員必備軟件详民,hive面試題,Hadoop面試題陌兑,Docker面試題沈跨,簡(jiǎn)歷模板等資源請(qǐng)去GitHub自行下載 https://github.com/lhh2002/Framework-Of-BigDataGitee 自行下載 ?https://gitee.com/li_hey_hey/dashboard/projects

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市兔综,隨后出現(xiàn)的幾起案子饿凛,更是在濱河造成了極大的恐慌狞玛,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涧窒,死亡現(xiàn)場(chǎng)離奇詭異心肪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)杀狡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門蒙畴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人呜象,你說我怎么就攤上這事膳凝。” “怎么了恭陡?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵蹬音,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我休玩,道長(zhǎng)著淆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任拴疤,我火速辦了婚禮永部,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呐矾。我一直安慰自己苔埋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布蜒犯。 她就那樣靜靜地躺著组橄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罚随。 梳的紋絲不亂的頭發(fā)上玉工,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音淘菩,去河邊找鬼遵班。 笑死,一個(gè)胖子當(dāng)著我的面吹牛潮改,可吹牛的內(nèi)容都是我干的狭郑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼进陡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼愿阐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起趾疚,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤缨历,失蹤者是張志新(化名)和其女友劉穎以蕴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辛孵,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丛肮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了魄缚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宝与。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冶匹,靈堂內(nèi)的尸體忽然破棺而出习劫,到底是詐尸還是另有隱情,我是刑警寧澤嚼隘,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布诽里,位于F島的核電站,受9級(jí)特大地震影響飞蛹,放射性物質(zhì)發(fā)生泄漏谤狡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一卧檐、第九天 我趴在偏房一處隱蔽的房頂上張望墓懂。 院中可真熱鬧,春花似錦霉囚、人聲如沸捕仔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逻澳。三九已至闸天,卻和暖如春暖呕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苞氮。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工湾揽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笼吟。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓库物,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贷帮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子戚揭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容