您好,登錄后才能下訂單哦!
學(xué)大數(shù)據(jù)需要什么編程基礎(chǔ)?大數(shù)據(jù)學(xué)習(xí)步驟是什么? 大數(shù)據(jù)是什么? 有很多朋友問過我,大數(shù)據(jù)到底是什么?一句話來…
學(xué)大數(shù)據(jù)需要什么編程基礎(chǔ)?大數(shù)據(jù)學(xué)習(xí)步驟是什么?
學(xué)大數(shù)據(jù)需要什么編程基礎(chǔ)?大數(shù)據(jù)學(xué)習(xí)步驟是什么?
大數(shù)據(jù)是什么?
有很多朋友問過我,大數(shù)據(jù)到底是什么?一句話來概括
針對(duì)非軟件行業(yè)的朋友
根據(jù)你平時(shí)在超市,加油站,飯店等地方的一些消費(fèi)行為,通過大數(shù)據(jù)這個(gè)技術(shù),我們可以知道你現(xiàn)在的年齡范圍,是否婚配,是否有孩子,孩子大致是幾歲,是否有固定住宅,車大致是什么價(jià)位的等信息。
針對(duì)軟件行業(yè)的朋友
平時(shí)我們寫的程序都是在一臺(tái)機(jī)器上運(yùn)行,處理能力有限,當(dāng)然,數(shù)據(jù)量也是有限的。大數(shù)據(jù)這個(gè)技術(shù),其實(shí)就是可以實(shí)現(xiàn)把我們的代碼分布在很多臺(tái)機(jī)器上去并行處理海量的數(shù)據(jù),然后從這些海量數(shù)據(jù)中獲取有價(jià)值,有意義的信息。
學(xué)習(xí)大數(shù)據(jù)需要的基本功
linux基礎(chǔ)是必須的,最起碼需要掌握linux命令行下的基本操作命令
大數(shù)據(jù)技術(shù)板塊劃分
數(shù)據(jù)采集
flume 、kafka、 logstash 、filebeat …
數(shù)據(jù)存儲(chǔ)
mysql 、redis 、hbase 、hdfs …
雖然mysql不屬于大數(shù)據(jù)范疇 但是我在這也列出來了,因?yàn)槟阍诠ぷ髦须x不開它
數(shù)據(jù)查詢
hive impala elasticsearch kylin …
數(shù)據(jù)計(jì)算
實(shí)時(shí)計(jì)算
storm sparkstreaming flink …
離線計(jì)算
hadoop spark …
其他框架
zookeeper …
其實(shí),學(xué)習(xí)大數(shù)據(jù),就是要學(xué)習(xí)大數(shù)據(jù)生態(tài)圈周邊的各種框架。
學(xué)大數(shù)據(jù)需要什么編程基礎(chǔ)?大數(shù)據(jù)學(xué)習(xí)步驟是什么?
大數(shù)據(jù)學(xué)習(xí)步驟
上面雖然列出來了很多框架,但是最開始學(xué)習(xí)的時(shí)候沒必要全部都學(xué),就算是在工作中,這些框架也不一定會(huì)全部用到。
下面我就大致列一下,各種框架的一個(gè)學(xué)習(xí)步驟吧:
注意:下面列出來的順序只是個(gè)人建議,可以根據(jù)個(gè)人實(shí)際情況來調(diào)整順序
linux基礎(chǔ)和javase基礎(chǔ)【包含mysql】
這些是基本功,剛開始也不可能學(xué)的很精通,最起碼要對(duì)linux中的一些基本的命令混個(gè)臉熟,后面學(xué)習(xí)各種框架的時(shí)候都會(huì)用到,用多了就熟悉了。javase的話建議主要看面向?qū)ο螅?,io,多線程,以及jdbc操作即可。
zookeeper
zookeeper是很多大數(shù)據(jù)框架的基礎(chǔ),中文名稱是動(dòng)物園的意思,因?yàn)槟壳暗拇髷?shù)據(jù)框架的圖標(biāo)很多都是動(dòng)物的形狀,所以zookeeper其實(shí)就是可以管理很多大數(shù)據(jù)框架的。針對(duì)這個(gè)框架,主要掌握如何搭建單節(jié)點(diǎn)和集群,以及掌握如何在zkcli客戶端下對(duì)zookeeper的節(jié)點(diǎn)進(jìn)行增刪改查操作即可。
hadoop
目前企業(yè)中一般都是用hadoop2.x的版本了,所以就沒有必要再去學(xué)hadoop1.x版本了,hadoop2.x主要包含三大塊
hdfs 前期,主要學(xué)習(xí)hdfs的一些命令即可,上傳,下載,刪除,移動(dòng),查看等命令…
mapreduce 這個(gè)需要重點(diǎn)學(xué)習(xí)下,要理解mr的原理以及代碼實(shí)現(xiàn),雖然現(xiàn)在工作中真正寫mr的代碼次數(shù)很少了,但是原理還是要理解的。
yarn 前期了解即可,只需要知道yarn是一個(gè)資源調(diào)度平臺(tái),主要負(fù)責(zé)給任務(wù)分配資源即可,yarn不僅可以給mapreduce任務(wù)調(diào)度資源,還可以為spark任務(wù)調(diào)度資源…yarn是一個(gè)公共的資源調(diào)度平臺(tái),所有滿足條件的框架都可以使用yarn來進(jìn)行資源調(diào)度。
hive
hive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù),所有的數(shù)據(jù)都是存儲(chǔ)在hdfs上的,具體【數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)庫(kù)】的區(qū)別大家可以去網(wǎng)上搜索一下,有很多介紹。其實(shí)如果對(duì)mysql的使用比較熟悉的話,使用hive也就簡(jiǎn)單很多了,使用hive主要是寫hql,hql是hive的sql語言,非常類似于mysql數(shù)據(jù)庫(kù)的sql,后續(xù)學(xué)習(xí)hive的時(shí)候主要理解一些hive的語法特性即可。其實(shí)hive在執(zhí)行hql,底層在執(zhí)行的時(shí)候還是執(zhí)行的mapredce程序。
注意:其實(shí)hive本身是很強(qiáng)大的,數(shù)據(jù)數(shù)據(jù)倉(cāng)庫(kù)的設(shè)計(jì)在工作中也是很重要的,但是前期學(xué)習(xí)的時(shí)候,主要先學(xué)會(huì)如何使用就好了。后期可以好好研究一下hive。
hbase
hbase是一個(gè)nosql 數(shù)據(jù)庫(kù),是一個(gè)key-value類型的數(shù)據(jù)庫(kù),底層的數(shù)據(jù)存儲(chǔ)在hdfs上。在學(xué)習(xí)hbase的時(shí)候主要掌握 row-key的設(shè)計(jì),以及列簇的設(shè)計(jì)。要注意一個(gè)特點(diǎn)就是,hbase基于rowkey查詢效率很快,可以達(dá)到秒級(jí)查詢,但是基于列簇中的列進(jìn)行查詢,特別是組合查詢的時(shí)候,如果數(shù)據(jù)量很大的話,查詢性能會(huì)很差。
redis
redis也是一個(gè)nosql 數(shù)據(jù)庫(kù)和key-value類型的數(shù)據(jù)庫(kù),但是這個(gè)數(shù)據(jù)庫(kù)是純基于內(nèi)存的,也就是redis數(shù)據(jù)庫(kù)中的數(shù)據(jù)都是存儲(chǔ)在內(nèi)存中的,所以它的一個(gè)特點(diǎn)就是適用于快速讀寫的應(yīng)用場(chǎng)景,讀寫可以達(dá)到10W次/秒,但是不適合存儲(chǔ)海量數(shù)據(jù),畢竟機(jī)器的內(nèi)存是有限的;
當(dāng)然,redis也支持集群,也可以存儲(chǔ)大量數(shù)據(jù)。在學(xué)習(xí)redis的時(shí)候主要掌握string,list,set,sortedset,hashmap這幾種數(shù)據(jù)類型的區(qū)別以及使用,還有pipeline管道,這個(gè)在批量入庫(kù)數(shù)據(jù)的時(shí)候是非常有用的,以及transaction事務(wù)功能。
-flume
flume是一個(gè)日志采集工具,這個(gè)還是比較常用的,最常見的就是采集應(yīng)用產(chǎn)生的日志文件中的數(shù)據(jù)。一般有兩個(gè)流程,一個(gè)是flume采集數(shù)據(jù)存儲(chǔ)到kafka中,為了后面使用storm或者sparkstreaming進(jìn)行實(shí)時(shí)處理。另一個(gè)流程是flume采集的數(shù)據(jù)落盤到hdfs上,為了后期使用hadoop或者spark進(jìn)行離線處理。在學(xué)習(xí)flume的時(shí)候其實(shí)主要就是學(xué)會(huì)看flume官網(wǎng)的文檔,學(xué)習(xí)各種組建的配置參數(shù),因?yàn)槭褂胒lume就是寫各種的配置。
-kafka
kafka 是一個(gè)消息隊(duì)列,在工作中常用于實(shí)時(shí)處理的場(chǎng)景中,作為一個(gè)中間緩沖層,例如,flume->kafka->storm/sparkstreaming。學(xué)習(xí)kafka主要掌握topic,partition,replicate等的概念和原理。storm
storm是一個(gè)實(shí)時(shí)計(jì)算框架,和hadoop的區(qū)別就是,hadoop是對(duì)離線的海量數(shù)據(jù)進(jìn)行處理,而storm是對(duì)實(shí)時(shí)新增的每一條數(shù)據(jù)進(jìn)行處理,是一條一條的處理,可以保證數(shù)據(jù)處理的時(shí)效性。學(xué)習(xí)storm主要學(xué)習(xí)topology的編寫,storm并行度的調(diào)整,以及storm如何整合kafka實(shí)時(shí)消費(fèi)數(shù)據(jù)。
-spark
spark 現(xiàn)在發(fā)展的也很不錯(cuò),也發(fā)展成了一個(gè)生態(tài)圈,spark里面包含很多技術(shù),spark core,spark steaming,spark mlib,spark graphx。
spark生態(tài)圈里面包含的有離線處理spark core,和實(shí)時(shí)處理spark streaming,在這里需要注意一下,storm和spark streaming ,兩個(gè)都是實(shí)時(shí)處理框架,但是主要區(qū)別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理。
spark中包含很多框架,在剛開始學(xué)習(xí)的時(shí)候主要學(xué)習(xí)spark core和spark streaming即可。這個(gè)一般搞大數(shù)據(jù)的都會(huì)用到。spark mlib和spark graphx 可以等后期工作需要或者有時(shí)間了在研究即可。
-elasticsearch
elasticsearch是一個(gè)適合海量數(shù)據(jù)實(shí)時(shí)查詢的全文搜索引擎,支持分布式集群,其實(shí)底層是基于lucene的。在查詢的時(shí)候支持快速模糊查詢,求count,distinct,sum,avg等操作,但是不支持join操作。
elasticsearch目前也有一個(gè)生態(tài)圈,elk(elasticsearch logstash kibana)是一個(gè)典型的日志收集,存儲(chǔ),快速查詢出圖表的一整套解決方案。在學(xué)習(xí)elasticsearch的時(shí)候,前期主要學(xué)習(xí)如何使用es進(jìn)行增刪改查,es中的index,type,document的概念,以及es中的mapping的設(shè)計(jì)。
目前暫且列出來這么多吧,大數(shù)據(jù)生態(tài)圈目前還有很多比較好的技術(shù)框架,這個(gè)就需要等大家以后工作之后再去擴(kuò)展了。
其實(shí)上面列出來的這十幾個(gè)框架,在學(xué)習(xí)的時(shí)候,要專門挑一兩個(gè)著重研究一下,最好針對(duì),底層原理,優(yōu)化,源碼等部分有所涉獵,這么的話可以在面試過程中脫穎而出。不要想著把每一個(gè)框架都搞精通,目前是不現(xiàn)實(shí)的,其實(shí)就算
如果能過對(duì)上面的框架都大致會(huì)使用,并且對(duì)某一兩個(gè)框架研究的比較深的話,其實(shí)想去找一份滿意的大數(shù)據(jù)工作也就水到渠成了。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。