一定要弄懂的Hive基礎(chǔ)知識

Hive是基于Hadoop的數(shù)據(jù)倉庫工具溺蕉,可對存儲在HDFS上的文件中的數(shù)據(jù)集進行數(shù)據(jù)整理甚侣、特殊查詢和分析處理,提供了類似于SQL語言的查詢語言–HiveQL缰雇,可通過HQL語句實現(xiàn)簡單的MR統(tǒng)計,Hive將HQL語句轉(zhuǎn)換成MR任務(wù)進行執(zhí)行追驴。

一械哟、概述

1-1 數(shù)據(jù)倉庫概念

數(shù)據(jù)倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)殿雪、相對穩(wěn)定的(Non-Volatile)戒良、反應(yīng)歷史變化(Time Variant)的數(shù)據(jù)集合,用于支持管理決策冠摄。

數(shù)據(jù)倉庫體系結(jié)構(gòu)通常含四個層次:數(shù)據(jù)源糯崎、數(shù)據(jù)存儲和管理、數(shù)據(jù)服務(wù)河泳、數(shù)據(jù)應(yīng)用沃呢。

數(shù)據(jù)源:是數(shù)據(jù)倉庫的數(shù)據(jù)來源,含外部數(shù)據(jù)拆挥、現(xiàn)有業(yè)務(wù)系統(tǒng)和文檔資料等;

數(shù)據(jù)集成:完成數(shù)據(jù)的抽取薄霜、清洗某抓、轉(zhuǎn)換和加載任務(wù),數(shù)據(jù)源中的數(shù)據(jù)采用ETL(Extract-Transform-Load)工具以固定的周期加載到數(shù)據(jù)倉庫中惰瓜。

數(shù)據(jù)存儲和管理:此層次主要涉及對數(shù)據(jù)的存儲和管理否副,含數(shù)據(jù)倉庫、數(shù)據(jù)集市崎坊、數(shù)據(jù)倉庫檢測备禀、運行與維護工具和元數(shù)據(jù)管理等。

數(shù)據(jù)服務(wù):為前端和應(yīng)用提供數(shù)據(jù)服務(wù)奈揍,可直接從數(shù)據(jù)倉庫中獲取數(shù)據(jù)供前端應(yīng)用使用曲尸,也可通過OLAP(OnLine Analytical Processing,聯(lián)機分析處理)服務(wù)器為前端應(yīng)用提供負責(zé)的數(shù)據(jù)服務(wù)男翰。

數(shù)據(jù)應(yīng)用:此層次直接面向用戶另患,含數(shù)據(jù)查詢工具、自由報表工具蛾绎、數(shù)據(jù)分析工具昆箕、數(shù)據(jù)挖掘工具和各類應(yīng)用系統(tǒng)。

1-2 傳統(tǒng)數(shù)據(jù)倉庫的問題

無法滿足快速增長的海量數(shù)據(jù)存儲需求租冠,傳統(tǒng)數(shù)據(jù)倉庫基于關(guān)系型數(shù)據(jù)庫鹏倘,橫向擴展性較差,縱向擴展有限肺稀。

無法處理不同類型的數(shù)據(jù)第股,傳統(tǒng)數(shù)據(jù)倉庫只能存儲結(jié)構(gòu)化數(shù)據(jù)应民,企業(yè)業(yè)務(wù)發(fā)展话原,數(shù)據(jù)源的格式越來越豐富。

傳統(tǒng)數(shù)據(jù)倉庫建立在關(guān)系型數(shù)據(jù)倉庫之上诲锹,計算和處理能力不足繁仁,當(dāng)數(shù)據(jù)量達到TB級后基本無法獲得好的性能。

1-3 Hive

Hive是建立在Hadoop之上的數(shù)據(jù)倉庫归园,由Facebook開發(fā)黄虱,在某種程度上可以看成是用戶編程接口,本身并不存儲和處理數(shù)據(jù)庸诱,依賴于HDFS存儲數(shù)據(jù)捻浦,依賴MR處理數(shù)據(jù)。有類SQL語言HiveQL桥爽,不完全支持SQL標準朱灿,如,不支持更新操作钠四、索引和事務(wù)盗扒,其子查詢和連接操作也存在很多限制。

Hive把HQL語句轉(zhuǎn)換成MR任務(wù)后,采用批處理的方式對海量數(shù)據(jù)進行處理侣灶。數(shù)據(jù)倉庫存儲的是靜態(tài)數(shù)據(jù)甸祭,很適合采用MR進行批處理。Hive還提供了一系列對數(shù)據(jù)進行提取褥影、轉(zhuǎn)換池户、加載的工具,可以存儲伪阶、查詢和分析存儲在HDFS上的數(shù)據(jù)煞檩。

1-4 Hive與Hadoop生態(tài)系統(tǒng)中其他組件的關(guān)系

Hive依賴于HDFS存儲數(shù)據(jù),依賴MR處理數(shù)據(jù);

Pig可作為Hive的替代工具栅贴,是一種數(shù)據(jù)流語言和運行環(huán)境斟湃,適合用于在Hadoop平臺上查詢半結(jié)構(gòu)化數(shù)據(jù)集,用于與ETL過程的一部分檐薯,即將外部數(shù)據(jù)裝載到Hadoop集群中凝赛,轉(zhuǎn)換為用戶需要的數(shù)據(jù)格式;

HBase是一個面向列的、分布式可伸縮的數(shù)據(jù)庫坛缕,可提供數(shù)據(jù)的實時訪問功能墓猎,而Hive只能處理靜態(tài)數(shù)據(jù),主要是BI報表數(shù)據(jù)赚楚,Hive的初衷是為減少復(fù)雜MR應(yīng)用程序的編寫工作毙沾,HBase則是為了實現(xiàn)對數(shù)據(jù)的實時訪問。

1-5 Hive與傳統(tǒng)數(shù)據(jù)庫的對比

1-6 Hive的部署和應(yīng)用

1-6-1 Hive在企業(yè)大數(shù)據(jù)分析平臺中的應(yīng)用

當(dāng)前企業(yè)中部署的大數(shù)據(jù)分析平臺宠页,除Hadoop的基本組件HDFS和MR外左胞,還結(jié)合使用Hive、Pig举户、HBase烤宙、Mahout,從而滿足不同業(yè)務(wù)場景需求俭嘁。

上圖是企業(yè)中一種常見的大數(shù)據(jù)分析平臺部署框架 躺枕,在這種部署架構(gòu)中:

Hive和Pig用于報表中心,Hive用于分析報表供填,Pig用于報表中數(shù)據(jù)的轉(zhuǎn)換工作拐云。

HBase用于在線業(yè)務(wù),HDFS不支持隨機讀寫操作近她,而HBase正是為此開發(fā)叉瘩,可較好地支持實時訪問數(shù)據(jù)。

Mahout提供一些可擴展的機器學(xué)習(xí)領(lǐng)域的經(jīng)典算法實現(xiàn)泄私,用于創(chuàng)建商務(wù)智能(BI)應(yīng)用程序房揭。

二备闲、Hive系統(tǒng)架構(gòu)

下圖顯示Hive的主要組成模塊、Hive如何與Hadoop交互工作捅暴、以及從外部訪問Hive的幾種典型方式恬砂。

Hive主要由以下三個模塊組成:

用戶接口模塊,含CLI蓬痒、HWI泻骤、JDBC、Thrift Server等梧奢,用來實現(xiàn)對Hive的訪問狱掂。CLI是Hive自帶的命令行界面;HWI是Hive的一個簡單網(wǎng)頁界面;JDBC、ODBC以及Thrift Server可向用戶提供進行編程的接口亲轨,其中Thrift Server是基于Thrift軟件框架開發(fā)的趋惨,提供Hive的RPC通信接口。

驅(qū)動模塊(Driver)惦蚊,含編譯器器虾、優(yōu)化器、執(zhí)行器等蹦锋,負責(zé)把HiveQL語句轉(zhuǎn)換成一系列MR作業(yè)兆沙,所有命令和查詢都會進入驅(qū)動模塊,通過該模塊的解析變異莉掂,對計算過程進行優(yōu)化葛圃,然后按照指定的步驟執(zhí)行。

元數(shù)據(jù)存儲模塊(Metastore)憎妙,是一個獨立的關(guān)系型數(shù)據(jù)庫库正,通常與MySQL數(shù)據(jù)庫連接后創(chuàng)建的一個MySQL實例,也可以是Hive自帶的Derby數(shù)據(jù)庫實例尚氛。此模塊主要保存表模式和其他系統(tǒng)元數(shù)據(jù)诀诊,如表的名稱洞渤、表的列及其屬性阅嘶、表的分區(qū)及其屬性、表的屬性载迄、表中數(shù)據(jù)所在位置信息等讯柔。

喜歡圖形界面的用戶,可采用幾種典型的外部訪問工具:Karmasphere护昧、Hue魂迄、Qubole等。

三惋耙、Hive工作原理

3-1 SQL語句轉(zhuǎn)換成MapReduce作業(yè)的基本原理

3-1-1 用MapReduce實現(xiàn)連接操作

假設(shè)連接(join)的兩個表分別是用戶表User(uid,name)和訂單表Order(uid,orderid)捣炬,具體的SQL命令:

SELECT name, orderid FROM User u JOIN Order o ON u.uid=o.uid;

上圖描述了連接操作轉(zhuǎn)換為MapReduce操作任務(wù)的具體執(zhí)行過程熊昌。

首先,在Map階段湿酸,

User表以uid為key婿屹,以name和表的標記位(這里User的標記位記為1)為value,進行Map操作推溃,把表中記錄轉(zhuǎn)換生成一系列KV對的形式昂利。比如,User表中記錄(1,Lily)轉(zhuǎn)換為鍵值對(1,<1,Lily>)铁坎,其中第一個“1”是uid的值蜂奸,第二個“1”是表User的標記位,用來標示這個鍵值對來自User表;

同樣硬萍,Order表以uid為key扩所,以orderid和表的標記位(這里表Order的標記位記為2)為值進行Map操作,把表中的記錄轉(zhuǎn)換生成一系列KV對的形式;

接著朴乖,在Shuffle階段碌奉,把User表和Order表生成的KV對按鍵值進行Hash,然后傳送給對應(yīng)的Reduce機器執(zhí)行寒砖。比如KV對(1,<1,Lily>)赐劣、(1,<2,101>)、(1,<2,102>)傳送到同一臺Reduce機器上哩都。當(dāng)Reduce機器接收到這些KV對時魁兼,還需按表的標記位對這些鍵值對進行排序,以優(yōu)化連接操作;

最后漠嵌,在Reduce階段咐汞,對同一臺Reduce機器上的鍵值對,根據(jù)“值”(value)中的表標記位儒鹿,對來自表User和Order的數(shù)據(jù)進行笛卡爾積連接操作化撕,以生成最終的結(jié)果。比如鍵值對(1,<1,Lily>)與鍵值對(1,<2,101>)约炎、(1,<2,102>)的連接結(jié)果是(Lily,101)植阴、(Lily,102)。

3-1-2 用MR實現(xiàn)分組操作

假設(shè)分數(shù)表Score(rank, level)圾浅,具有rank(排名)和level(級別)兩個屬性掠手,需要進行一個分組(Group By)操作,功能是把表Score的不同片段按照rank和level的組合值進行合并狸捕,并計算不同的組合值有幾條記錄喷鸽。SQL語句命令如下:

SELECT rank,level,count(*) as value FROM score GROUP BY rank,level;

上圖描述分組操作轉(zhuǎn)化為MapReduce任務(wù)的具體執(zhí)行過程。

首先灸拍,在Map階段做祝,對表Score進行Map操作砾省,生成一系列KV對,其鍵為混槐,值為“擁有該組合值的記錄的條數(shù)”纯蛾。比如,Score表的第一片段中有兩條記錄(A,1)纵隔,所以進行Map操作后翻诉,轉(zhuǎn)化為鍵值對(,2);

接著在Shuffle階段,對Score表生成的鍵值對捌刮,按照“鍵”的值進行Hash碰煌,然后根據(jù)Hash結(jié)果傳送給對應(yīng)的Reduce機器去執(zhí)行。比如绅作,鍵值對(,2)芦圾、(,1)傳送到同一臺Reduce機器上,鍵值對(,1)傳送另一Reduce機器上俄认。然后个少,Reduce機器對接收到的這些鍵值對,按“鍵”的值進行排序;

在Reduce階段眯杏,把具有相同鍵的所有鍵值對的“值”進行累加夜焦,生成分組的最終結(jié)果。比如岂贩,在同一臺Reduce機器上的鍵值對(,2)和(,1)Reduce操作后的輸出結(jié)果為(A,1,3)茫经。

3-2 Hive中SQL查詢轉(zhuǎn)換成MR作業(yè)的過程

當(dāng)Hive接收到一條HQL語句后,需要與Hadoop交互工作來完成該操作萎津。HQL首先進入驅(qū)動模塊卸伞,由驅(qū)動模塊中的編譯器解析編譯,并由優(yōu)化器對該操作進行優(yōu)化計算锉屈,然后交給執(zhí)行器去執(zhí)行荤傲。執(zhí)行器通常啟動一個或多個MR任務(wù),有時也不啟動(如SELECT * FROM tb1颈渊,全表掃描遂黍,不存在投影和選擇操作)

上圖是Hive把HQL語句轉(zhuǎn)化成MR任務(wù)進行執(zhí)行的詳細過程。

由驅(qū)動模塊中的編譯器–Antlr語言識別工具儡炼,對用戶輸入的SQL語句進行詞法和語法解析妓湘,將HQL語句轉(zhuǎn)換成抽象語法樹(AST Tree)的形式;

遍歷抽象語法樹查蓉,轉(zhuǎn)化成QueryBlock查詢單元乌询。因為AST結(jié)構(gòu)復(fù)雜,不方便直接翻譯成MR算法程序豌研。其中QueryBlock是一條最基本的SQL語法組成單元妹田,包括輸入源唬党、計算過程、和輸入三個部分;

遍歷QueryBlock鬼佣,生成OperatorTree(操作樹)驶拱,OperatorTree由很多邏輯操作符組成,如TableScanOperator晶衷、SelectOperator蓝纲、FilterOperator、JoinOperator晌纫、GroupByOperator和ReduceSinkOperator等税迷。這些邏輯操作符可在Map、Reduce階段完成某一特定操作;

Hive驅(qū)動模塊中的邏輯優(yōu)化器對OperatorTree進行優(yōu)化锹漱,變換OperatorTree的形式箭养,合并多余的操作符,減少MR任務(wù)數(shù)哥牍、以及Shuffle階段的數(shù)據(jù)量;

遍歷優(yōu)化后的OperatorTree毕泌,根據(jù)OperatorTree中的邏輯操作符生成需要執(zhí)行的MR任務(wù);

啟動Hive驅(qū)動模塊中的物理優(yōu)化器,對生成的MR任務(wù)進行優(yōu)化嗅辣,生成最終的MR任務(wù)執(zhí)行計劃;

最后撼泛,有Hive驅(qū)動模塊中的執(zhí)行器,對最終的MR任務(wù)執(zhí)行輸出澡谭。

Hive驅(qū)動模塊中的執(zhí)行器執(zhí)行最終的MR任務(wù)時坎弯,Hive本身不會生成MR算法程序。它通過一個表示“Job執(zhí)行計劃”的XML文件译暂,來驅(qū)動內(nèi)置的抠忘、原生的Mapper和Reducer模塊。Hive通過和JobTracker通信來初始化MR任務(wù)外永,而不需直接部署在JobTracker所在管理節(jié)點上執(zhí)行崎脉。通常在大型集群中,會有專門的網(wǎng)關(guān)機來部署Hive工具伯顶,這些網(wǎng)關(guān)機的作用主要是遠程操作和管理節(jié)點上的JobTracker通信來執(zhí)行任務(wù)囚灼。Hive要處理的數(shù)據(jù)文件常存儲在HDFS上,HDFS由名稱節(jié)點(NameNode)來管理祭衩。

JobTracker/TaskTracker

NameNode/DataNode

四灶体、Hive HA基本原理

在實際應(yīng)用中,Hive也暴露出不穩(wěn)定的問題掐暮,在極少數(shù)情況下蝎抽,會出現(xiàn)端口不響應(yīng)或進程丟失問題。Hive HA(High Availablity)可以解決這類問題路克。

在Hive HA中樟结,在Hadoop集群上構(gòu)建的數(shù)據(jù)倉庫是由多個Hive實例進行管理的养交,這些Hive實例被納入到一個資源池中,由HAProxy提供統(tǒng)一的對外接口瓢宦∷榱客戶端的查詢請求,首先訪問HAProxy驮履,由HAProxy對訪問請求進行轉(zhuǎn)發(fā)鱼辙。HAProxy收到請求后,會輪詢資源池中可用的Hive實例玫镐,執(zhí)行邏輯可用性測試座每。

如果某個Hive實例邏輯可用,就會把客戶端的訪問請求轉(zhuǎn)發(fā)到Hive實例上;

如果某個實例不可用摘悴,就把它放入黑名單峭梳,并繼續(xù)從資源池中取出下一個Hive實例進行邏輯可用性測試。

對于黑名單中的Hive蹂喻,Hive HA會每隔一段時間進行統(tǒng)一處理葱椭,首先嘗試重啟該Hive實例,如果重啟成功口四,就再次把它放入資源池中孵运。

由于HAProxy提供統(tǒng)一的對外訪問接口,因此蔓彩,對于程序開發(fā)人員來說治笨,可把它看成一臺超強“Hive”。

五赤嚼、Impala

5-1 Impala簡介

Impala由Cloudera公司開發(fā)旷赖,提供SQL語義,可查詢存儲在Hadoop和HBase上的PB級海量數(shù)據(jù)更卒。Hive也提供SQL語義等孵,但底層執(zhí)行任務(wù)仍借助于MR,實時性不好蹂空,查詢延遲較高俯萌。

Impala作為新一代開源大數(shù)據(jù)分析引擎,最初參照Dremel(由Google開發(fā)的交互式數(shù)據(jù)分析系統(tǒng))上枕,支持實時計算咐熙,提供與Hive類似的功能,在性能上高出Hive3~30倍辨萍。Impala可能會超過Hive的使用率能成為Hadoop上最流行的實時計算平臺棋恼。Impala采用與商用并行關(guān)系數(shù)據(jù)庫類似的分布式查詢引擎,可直接從HDFS、HBase中用SQL語句查詢數(shù)據(jù)蘸泻,不需把SQL語句轉(zhuǎn)換成MR任務(wù)琉苇,降低延遲嘲玫,可很好地滿足實時查詢需求悦施。

Impala不能替換Hive,可提供一個統(tǒng)一的平臺用于實時查詢去团。Impala的運行依賴于Hive的元數(shù)據(jù)(Metastore)抡诞。Impala和Hive采用相同的SQL語法、ODBC驅(qū)動程序和用戶接口土陪,可統(tǒng)一部署Hive和Impala等分析工具昼汗,同時支持批處理和實時查詢。

5-2 Impala系統(tǒng)架構(gòu)

上圖是Impala系統(tǒng)結(jié)構(gòu)圖鬼雀,虛線模塊數(shù)據(jù)Impala組件顷窒。Impala和Hive、HDFS源哩、HBase統(tǒng)一部署在Hadoop平臺上鞋吉。Impala由Impalad、State Store和CLI三部分組成励烦。

Implalad:是Impala的一個進程谓着,負責(zé)協(xié)調(diào)客戶端提供的查詢執(zhí)行,給其他Impalad分配任務(wù)坛掠,以及收集其他Impalad的執(zhí)行結(jié)果進行匯總赊锚。Impalad也會執(zhí)行其他Impalad給其分配的任務(wù),主要是對本地HDFS和HBase里的部分數(shù)據(jù)進行操作屉栓。Impalad進程主要含Query Planner舷蒲、Query Coordinator和Query Exec Engine三個模塊,與HDFS的數(shù)據(jù)節(jié)點(HDFS DataNode)運行在同一節(jié)點上友多,且完全分布運行在MPP(大規(guī)模并行處理系統(tǒng))架構(gòu)上阿纤。

State Store:收集分布在集群上各個Impalad進程的資源信息,用于查詢的調(diào)度夷陋,它會創(chuàng)建一個statestored進程欠拾,來跟蹤集群中的Impalad的健康狀態(tài)及位置信息闯两。statestored進程通過創(chuàng)建多個線程來處理Impalad的注冊訂閱以及與多個Impalad保持心跳連接帮孔,此外颓芭,各Impalad都會緩存一份State Store中的信息种柑。當(dāng)State Store離線后言缤,Impalad一旦發(fā)現(xiàn)State Store處于離線狀態(tài)時璧坟,就會進入恢復(fù)模式本冲,并進行返回注冊囊蓝。當(dāng)State Store重新加入集群后,自動恢復(fù)正常刹枉,更新緩存數(shù)據(jù)叽唱。

CLI:CLI給用戶提供了執(zhí)行查詢的命令行工具。Impala還提供了Hue微宝、JDBC及ODBC使用接口棺亭。

5-3 Impala查詢執(zhí)行過程

注冊和訂閱。當(dāng)用戶提交查詢前蟋软,Impala先創(chuàng)建一個Impalad進程來負責(zé)協(xié)調(diào)客戶端提交的查詢镶摘,該進程會向State Store提交注冊訂閱信息,State Store會創(chuàng)建一個statestored進程岳守,statestored進程通過創(chuàng)建多個線程來處理Impalad的注冊訂閱信息凄敢。

提交查詢。通過CLI提交一個查詢到Impalad進程湿痢,Impalad的Query Planner對SQL語句解析涝缝,生成解析樹;Planner將解析樹變成若干PlanFragment,發(fā)送到Query Coordinator譬重。其中PlanFragment由PlanNode組成拒逮,能被分發(fā)到單獨的節(jié)點上執(zhí)行,每個PlanNode表示一個關(guān)系操作和對其執(zhí)行優(yōu)化需要的信息害幅。

獲取元數(shù)據(jù)與數(shù)據(jù)地址消恍。Query Coordinator從MySQL元數(shù)據(jù)庫中獲取元數(shù)據(jù)(即查詢需要用到哪些數(shù)據(jù)),從HDFS的名稱節(jié)點中獲取數(shù)據(jù)地址(即數(shù)據(jù)被保存到哪個數(shù)據(jù)節(jié)點上)以现,從而得到存儲這個查詢相關(guān)數(shù)據(jù)的所有數(shù)據(jù)節(jié)點狠怨。

分發(fā)查詢?nèi)蝿?wù)。Query Coordinator初始化相應(yīng)的Impalad上的任務(wù)邑遏,即把查詢?nèi)蝿?wù)分配給所有存儲這個查詢相關(guān)數(shù)據(jù)的數(shù)據(jù)節(jié)點佣赖。

匯聚結(jié)果。Query Executor通過流式交換中間輸出记盒,并由Query Coordinator匯聚來自各個Impalad的結(jié)果憎蛤。

返回結(jié)果。Query Coordinator把匯總后的結(jié)果返回給CLI客戶端纪吮。

5-4 Impala與Hive

不同點:

Hive適合長時間批處理查詢分析;而Impala適合進行交互式SQL查詢俩檬。

Hive依賴于MR計算框架,執(zhí)行計劃組合成管道型MR任務(wù)模型進行執(zhí)行;而Impala則把執(zhí)行計劃表現(xiàn)為一棵完整的執(zhí)行計劃樹碾盟,可更自然地分發(fā)執(zhí)行計劃到各個Impalad執(zhí)行查詢棚辽。

Hive在執(zhí)行過程中,若內(nèi)存放不下所有數(shù)據(jù)冰肴,則會使用外存屈藐,以保證查詢能夠順利執(zhí)行完成;而Impala在遇到內(nèi)存放不下數(shù)據(jù)時榔组,不會利用外存,所以Impala處理查詢時會受到一定的限制联逻。

相同點:

使用相同的存儲數(shù)據(jù)池搓扯,都支持把數(shù)據(jù)存儲在HDFS和HBase中,其中HDFS支持存儲TEXT包归、RCFILE锨推、PARQUET、AVRO箫踩、ETC等格式的數(shù)據(jù)爱态,HBase存儲表中記錄谭贪。

使用相同的元數(shù)據(jù)境钟。

對SQL的解析處理比較類似,都是通過詞法分析生成執(zhí)行計劃俭识。

結(jié)語

感謝您的觀看慨削,如有不足之處,歡迎批評指正套媚。

為了幫助大家讓學(xué)習(xí)變得輕松缚态、高效,給大家免費分享一大批資料堤瘤,幫助大家在成為大數(shù)據(jù)工程師玫芦,乃至架構(gòu)師的路上披荊斬棘。在這里給大家推薦一個大數(shù)據(jù)學(xué)習(xí)交流圈:658558542 歡迎大家進群交流討論本辐,學(xué)習(xí)交流桥帆,共同進步。

當(dāng)真正開始學(xué)習(xí)的時候難免不知道從哪入手慎皱,導(dǎo)致效率低下影響繼續(xù)學(xué)習(xí)的信心老虫。

但最重要的是不知道哪些技術(shù)需要重點掌握,學(xué)習(xí)時頻繁踩坑茫多,最終浪費大量時間祈匙,所以有有效資源還是很有必要的。

最后祝福所有遇到瓶疾且不知道怎么辦的大數(shù)據(jù)程序員們天揖,祝福大家在往后的工作與面試中一切順利夺欲。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市今膊,隨后出現(xiàn)的幾起案子些阅,更是在濱河造成了極大的恐慌,老刑警劉巖万细,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扑眉,死亡現(xiàn)場離奇詭異纸泄,居然都是意外死亡,警方通過查閱死者的電腦和手機腰素,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門聘裁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人弓千,你說我怎么就攤上這事衡便。” “怎么了洋访?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵镣陕,是天一觀的道長。 經(jīng)常有香客問我姻政,道長呆抑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任汁展,我火速辦了婚禮鹊碍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘食绿。我一直安慰自己侈咕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布器紧。 她就那樣靜靜地躺著耀销,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铲汪。 梳的紋絲不亂的頭發(fā)上熊尉,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音桥状,去河邊找鬼帽揪。 笑死,一個胖子當(dāng)著我的面吹牛辅斟,可吹牛的內(nèi)容都是我干的转晰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼士飒,長吁一口氣:“原來是場噩夢啊……” “哼查邢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酵幕,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤扰藕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芳撒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邓深,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡未桥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了芥备。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冬耿。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖萌壳,靈堂內(nèi)的尸體忽然破棺而出亦镶,到底是詐尸還是另有隱情,我是刑警寧澤袱瓮,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布缤骨,位于F島的核電站,受9級特大地震影響尺借,放射性物質(zhì)發(fā)生泄漏绊起。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一褐望、第九天 我趴在偏房一處隱蔽的房頂上張望勒庄。 院中可真熱鬧串前,春花似錦瘫里、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坛吁,卻和暖如春劳殖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拨脉。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工哆姻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玫膀。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓矛缨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親帖旨。 傳聞我的和親對象是個殘疾皇子箕昭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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