大數(shù)據(jù)開發(fā)聽著挺玄乎的蓖租,其實很多公司就是寫寫SQL,分析分析數(shù)據(jù)辆毡,這也被稱作大數(shù)據(jù)開發(fā)菜秦。對很多公司的大數(shù)據(jù)開發(fā)而言,平時工作寫SQL舶掖,使用Hive做離線數(shù)據(jù)分析球昨,使用UDF、UDAF眨攘、UDTF函數(shù)處理處理數(shù)據(jù)主慰,就能完成日常工作任務。
大數(shù)據(jù)開發(fā)哪些事
現(xiàn)在很多招聘崗位鲫售,實質上大數(shù)據(jù)開發(fā)崗都是偏向SQL開發(fā)共螺,也就是Hive開發(fā)。只要掌握ETL數(shù)據(jù)同步工具情竹,比如kettle工具藐不、sqoop工具能清洗數(shù)據(jù)就成,連ETL都不用自己寫秦效。我以前很多同事就是做這類工作的雏蛮,他們更偏向傳統(tǒng)寫HQL,解決問題阱州,當然SQL也不是那么容易些的挑秉,有些復雜的SQL沒有一定的功底是難以寫出來的。
但是話說回來苔货,想有一個好的發(fā)展方向犀概,只會寫SQL是不行的立哑。有些東西多少都是必須要懂、要會的姻灶。就我個人而言铛绰,在我工作中或面試中,面試官最常問的一些問題木蹬,簡單總結一下至耻,大數(shù)據(jù)要掌握哪些東西?
在我的工作經(jīng)歷中,大數(shù)據(jù)我什么都做過镊叁。從最簡單的離線ETL數(shù)據(jù)開發(fā)、到Hadoop的mapreduce開發(fā)走触、到數(shù)據(jù)倉庫開發(fā)晦譬、到天天寫Sql開發(fā)(寫了半年HQL沒摸過代碼)、到spark開發(fā)互广、到sparkstreaming實時流處理開發(fā)敛腌、到flink開發(fā),不同工作階段做的事情也不一樣惫皱。當然做的越多對大數(shù)據(jù)這行理解也深一些像樊。
大數(shù)據(jù)開發(fā)掌握哪些技能?
一旅敷、Java部分生棍,掌握Javase部分是必須的。
Javaee部分了解就行媳谁。工作四年沒一次做過Javaee方面的工作涂滴,剛工作時想做后端開發(fā),還被主管diss晴音,你做好大數(shù)據(jù)的工作就好了柔纵,后端有Java工程師負責,少年你要做好本職工作锤躁。
二搁料、Hadoop生態(tài)。
2.1系羞、Hadoop生態(tài)內容可就太多了郭计,入門要先了解Hadoop集群的這套東西,有能力的自己找教程安裝一遍集群觉啊,這樣你才能更好的了解一些底層原理拣宏。
當然,你也可以選擇不了解這些杠人。但是Zookeeper勋乾、HDFS宋下、Yarn這些原理你一定要深入了解一些。盡管工作中很少會用到這些東西辑莫,但是面試經(jīng)常問学歧。
2.2、Mapreduce各吨。我在2017年的時候枝笨,做ETL項目的時候用過一次,之后就再也沒用過了揭蜒。我感覺寫Mapreduce很復雜横浑,但是大部分代碼都是框架,在框架里寫業(yè)務邏輯就行了屉更。但是Mapreduce的shuffle過程一定要了熟于心徙融,不為別的,因為面試常問瑰谜。
2.3欺冀、Flume日志收集系統(tǒng)和Oozie任務流調度系統(tǒng)。這些也不常用萨脑,flume收集日志用經(jīng)常跟Kafka結合做實時日志處理用隐轩,會用flume收集日志,能把數(shù)據(jù)抽進kafka里就行渤早。oozie也是在做ETL項目時用到過一次职车,后面都是借助各種云開發(fā),第三方的云自帶各種任務調度系統(tǒng)蛛芥,在他們云上應用層開發(fā)配置提鸟。
三、Spark
Spark做離線開發(fā)仅淑,基于內存速度快称勋。可以用java開發(fā)涯竟、可以用scala開發(fā)赡鲜、也可以用python開發(fā)。選擇一種自己擅長的語言進行開發(fā)庐船,完成項目或日常工作就行银酬。我一般用scala開發(fā),使用java感覺太繁瑣了筐钟。
SparkSql揩瞪,使用spark代碼寫Sql,跟平時寫Sql一樣篓冲,很有意思的玩法李破,你會喜歡SparkSql的宠哄,比單純寫Sql有意思多了。
SparkStreaming實時處理嗤攻,這些需要結合Kafka使用毛嫉,就是做實時數(shù)據(jù)處理用的,一定要認真學習Spark妇菱。
四承粤、數(shù)據(jù)庫和存儲系統(tǒng)
數(shù)據(jù)庫系統(tǒng),這個必須必須要會闯团,大數(shù)據(jù)基礎就是這些辛臊。包括Msyql、Oracle房交、Postgresql浪讳、Hive、Hbase涌萤、Redis、ElasticSearch等口猜。把這些放在一起說负溪,因為大數(shù)據(jù)開發(fā)最常跟這些打交道。
Msyql济炎、Oracle川抡、Postgresql傳統(tǒng)數(shù)據(jù)庫,你會寫Sql就成须尚,因為對后臺開發(fā)來說崖堤,數(shù)據(jù)庫操作基本都是必懂的。
Hive離線分析型數(shù)據(jù)庫耐床,一般用來做數(shù)據(jù)分析使用密幔,工作中寫HQL,一種類Sql語句(大同小異)撩轰,但經(jīng)常會寫UDF函數(shù)胯甩,處理一些數(shù)據(jù)。
Hbase列式存儲數(shù)據(jù)庫堪嫂。主要用來做海量數(shù)據(jù)存儲查詢用的偎箫,海量數(shù)據(jù)達到TB、PB級別的數(shù)據(jù)皆串。大數(shù)據(jù)量的快速查詢淹办。Rowkey的設計,預分region恶复,熱點問題呀等都是重點考察對象怜森。一定要搞明白了Hbase速挑。
Redis內存緩存數(shù)據(jù)庫。了解Redis的機制塔插,主從梗摇、哨兵模式、緩存穿透想许、雪崩等等伶授,掌握Redis是很有必要的,網(wǎng)上一搜一堆資料流纹,很容易學習糜烹。
ElasticSearch全文檢索系統(tǒng)∈快速檢索文本內容疮蹦,ES大數(shù)據(jù)最常用的存儲系統(tǒng)之一,必會茸炒。
工作四年中最常用的就是以上這些數(shù)據(jù)庫和存儲系統(tǒng)愕乎,其他的沒怎么用過和接觸過。
五壁公、其他必備技能
1感论、Linux操作系統(tǒng),命令最好自己跟著敲一遍紊册,有些常用的命令一定要會比肄。
2、Kettle或Sqoop工具囊陡,這個工作中學習使用就行了芳绩,很多公司并不用這些工具。
3撞反、Flink這個有能力妥色,學習學習是極好的(我是工作需要才開始自學的)。
4痢畜、Python目前正在自學中垛膝,當然你可以選擇不學。
寫在最后
像數(shù)據(jù)倉庫開發(fā)丁稀,數(shù)據(jù)傾斜問題吼拥、Spark內存的優(yōu)化等這些都是建立在你會了上面的基礎上才能繼續(xù)研究學習的。
比如线衫,數(shù)據(jù)倉庫 凿可。數(shù)據(jù)倉庫建模(星型模型、雪花模型、維表枯跑、事實表等選擇設計惨驶,數(shù)據(jù)倉庫分層問題等)、數(shù)據(jù)倉庫的設計規(guī)范敛助。從ODS源數(shù)據(jù)層粗卜、到DWD數(shù)據(jù)明細層、到DWS數(shù)據(jù)匯總層纳击、到ADS數(shù)據(jù)應用層续扔、到DIM數(shù)據(jù)維度層等,這些都是根據(jù)公司業(yè)務來設計的焕数,不同公司數(shù)據(jù)倉庫建模也是不一樣的纱昧。數(shù)倉是一個很大的方面,細節(jié)問題真的非常多堡赔。