主頁 > 資料庫 > 3000字長文教你大資料該怎么學!

3000字長文教你大資料該怎么學!

2020-09-12 00:35:11 資料庫

大概兩年前寫過同樣標題的一篇文章,對于這個問題感興趣的人不少,后臺收到不少同學的提問,所以準備細致地解答一下這些問題,希望能解決掉大家90%的疑問,下次再看到相關的提問我會理直氣壯地把這篇文章的鏈接甩你臉上,但是可能又會有同學有疑問了,那剩下10%的疑問怎么辦?可以關注我的公眾號【老蒙大資料】,

開發語言

言歸正傳,對于新手來說,老是會有類似這樣的問題,“做大資料需要學Java嗎?”“不會Java可以嗎”“需要學到什么程度”...我的回答是“需要!”,“不可以”,“精通”,當然對于一個新手來說讓你精通Java是不可能的,寫Java沒個十年半載真的不敢說精通,但是你得走在通往“精通”的這條路上,精通程度和你拿到的錢是成正比的,

其實我想表達的是,不要有僥幸心理,不要覺得大資料就是搭搭環境,用用組件,大資料是正兒八經需要寫代碼做開發的,而且對代碼能力的要求是比較高的,為什么這么說,因為大資料生態圈有很多優秀的開源組件,如果你的 Java 是半吊子的水平那我可以很明確地說,你能看得懂的代碼可能都不超過100行,不信的話可以找個開源專案看看,

Java 可以說是大資料開發的第一語言,至少當前還是的,雖然垃圾回收的問題經常被大家詬病,但是有龐大的生態圈在呢,一時半會都還會是 Java 的天下,“Java 要學到什么程度?”JavaSE 必須掌握,JVM,多執行緒之類的都是基礎,面試必問系列;JavaEE 必須熟悉,丟個Java web專案給你,不求你把底層了解地多么透徹,但是必須得會寫,因為大資料開發實際作業中少不了寫介面,

SQL,如果說有一門語言可能會撼動 Java 一哥的位置的話,那絕對是 SQL,雖然 SQL 和 Java 都算不上是一個層面上的語言,但是它太重要了,太多人的 SQL 寫得太渣了,太多人寫 SQL 的時候不考慮底層優化了,要重視呀兄弟們,不是增刪查改就完事了的,有小伙伴問過要怎么提升寫 SQL 的能力?孰能生巧,多寫,多了解底層原理,多思考優化的方案,

Scala 要學到什么程度?語法得懂,除了基本的,還有什么隱式轉換,什么柯里化,什么閉包等等,學Scala 最大的目的就是寫 Spark,Spark 在大資料生態圈的存在感太強了,學習一門語言最好的方式就是實踐,多寫寫 Spark 相關的專案,或者去看看 Spark 的原始碼,

shell 也是必不可少的,大資料開發其實一般都會承擔起大資料集群的運維作業,說到運維,shell的重要性應該不用我多說了吧,

語言是程式員的兵器,兵器肯定是越鋒利越好,種類越多越好,弓箭,刀,劍,盾,都有它們各自使用的場景,程式員不要有僥幸心理,不要得過且過,對于技術來說要知其然且知其所以然,如果你還達不到這個地步,那一定要走在這個方向上,

大資料技術組件

上面這張讓人犯密集恐懼癥的東西是什么?是2019年據不完全統計的大資料產品,

是的,人人都知道,大資料技術實在是太多了,變化也太快了,新技術層出不窮,作為一個新人在面對這些技術的時候,常有的一個狀態就是懵,所以新人加我微信最常見的問題就是怎么學?這個要不要學?那個需要學到什么程度?等等,

哪些要學?

hadoop基礎全家桶,hdfs,yarn,hbase,hive,zookeeper等,再加個 spark 全家桶,以及流式計算全家桶kafka,flink,redis,

如果真的是認認真真吃透了上面的那些技能的話,那我能保證你已經基本上能解決90%的大資料問題,那剩下的10%怎么辦?這個問題好像有點熟悉,當然還是繼續學,但是你有了這解決90%問題的能力,剩下的10%的問題其實也不是什么大問題了,

怎么學?

從區域到整體,說得通俗一點就是要腳踏實地,不要老是飄在天上,因為在天上看到的是一整個生態,你當然會看到有很多很多東西,但是如果你不走近看的話你是不會知道,其實有很多東西都是類似的,經典的理論就那么幾個,大家的系統很多都是照著這些理論去實作的,只是實作的方式會有些不一樣,所以同型別的產品可能場景會稍有不同,但是架構是非常類似的,熟悉了之后你會發現,分布式系統萬變不離其宗,

簡單地說,從一個入手,比如存盤,舉個例子可以從HBase入手,因為它算是一個比較經典的分布式存盤引擎,《Big Table》也是非常經典的一篇paper,HBase里面存在的 LSM-Tree,Bloom Filter,壓縮,磁區等等原理和概念在很多分布式存盤中也是適用的,

再比如,計算,mr很經典,但是我還是建議直接從Spark入手,它的很多設計是基于mr又超過了mr的,而且 spark 生態系統非常的全能,能干的事情非常多,先學Spark Core,搞懂編程模型,了解大概原理,接著學SparkSQL,了解catalyst等,再接著就是SparkStreaming,以及后面的StructedStreaming,學到到這里,如果學得足夠有深度,Flink也是可以輕松拿下的了,二者都大量借鑒了《DataFlow》這篇paper的理論,還是那句話,萬變不離其宗,

還有很多的其他的例子,比如調度系統 AirFlow,Azkaban 以及最近挺火的 DolphinScheduler,本質上的實作都是類似的,只是在各自都增加了不同的功能來滿足用戶的需求,

還有資料可視化等等很多的例子就部一一列舉了,

說這么多目的只有一個,腳踏實地一步一步走,程式猿這個工種還是很依賴經驗的,孰能生巧是沒有錯的,

要學到什么程度?

我再強調一遍大資料平臺的開發人員不是簡簡單單會個搭建和使用就可以的了,這是最基礎和淺顯的內容,所以平時有些小伙伴貼一大堆報錯資訊給我,問我安裝怎么報錯了,怎么這個功能用不了了,這些問題基本上我都不會回答,除非我那天真的我心情非常好,因為如果你連這些在google一搜一大把的問題都沒法解決的話,你覺得你是不是應該重新思考一下自己的職業選擇,

回到正題,要學到什么程度,取決于你現在什么水平,如果你剛入門,你要學會理解場景,搭建,使用;熟練了之后就要理解原理,懂得調優;再接下來,需要你主動去發現應用中的問題,以及找解決方案來解決問題,這個時候就不僅限于眼前的某一種技術了,需要有一個大局觀,如何培養你的這種大局觀呢,多混社區多和優秀的同行交流,多看原始碼多學習優秀的開源專案,

當然最好是能夠成為優秀開源專案的 contributor 甚至 committer,這無論是在跳槽的面試中還是在晉升的述職中都是非常亮眼的加分項,

擁抱開源

學好語言的目的是為了寫代碼,寫優秀的代碼,那么如何能寫出優秀的代碼呢,人類最初學習的程序是從模仿開始的,

上面都提到了原始碼,為什么我要反復提這個問題呢,大資料的技術逐漸成熟,大資料的下半場絕對不會像前幾年一樣會搭個Hadoop,會寫個Spark就能拿比較高的薪資,高薪大資料平臺方向的程式員未來的趨勢一定能夠是搗鼓各種原始碼進行二次開發的,

都說一入開源深似海,那為什么還是有那么多人往坑里跳呢,坑里有好處呀,

首先開源的目的就是能給更多的人使用這個產品,同時能讓開發者參與開發,讓使用者提出需求,這對產品而言是有積極推進作用的,但是,開發者核心團隊會篩選使用者的需求,因為開源的東西考慮的是大多數人通用的需求,不可能為個人定制,所以它是不能適應所有的場景,而業務是千變萬化的,需求方是神通廣大的,他們總是能夠發掘一些刁鉆的需求,總是會“想方設法”地為難你,如果你經常被難倒的話,N+1會在不遠處向你招手,而如果你能夠改動一下原始碼,讓這個東西滿足你的需求,不是很美好嗎?

參與開源專案的建設是提升程式員個人水平的一個很好的方式,通過一些頭部的開源專案,你可以看到業界優秀的程式員是怎么合理設計架構的,是怎么寫出高質量代碼的,是怎么實作刁鉆需求的,人總是在模仿中不斷成長的,你的水平怎么樣很大一部分取決于你接觸的人水平怎么樣,這也是大廠經歷可以給簡歷加分的原因,沒有大廠經歷怎么辦呢,送你四個字,“入開源坑”,

大部分人作業說到底都是為了錢,不晉升哪來的錢,造輪子,二次開發都是晉升很好的資本,不然阿里在github也不會有那么多KPI產物了,你可以看不慣,但是沒辦法,這就是競爭力,別人都沒有做出來,而你做出來了,

那么如何入坑呢,先從簡單的開始,最好是能結合公司現在在使用東西,或者潛在需要使用的東西來下手,國外apache的專案一般都是比較高質量的,也要參照一下github上的star個數和活躍度來看,另外沒進入apache的一些專案,比如cloudera,facebook,linkin等這些公司開源的也有很多高質量的大資料專案,

國內的話,阿里也有不少應用非常廣泛的Java專案,比如druid,fastjson,datax,canal等等,可以先從這些下手,先讀懂,然后可以看看 Github 上的 Issues,有沒有和自己遇到的問題類似的,或者有沒有問題是你可以解決的,提個PR,至此,你已經邁出了第一步,一只腳已經踩進坑里了,

總而言之,要多讀優秀原始碼,模仿人家寫代碼的思想,原始碼閱讀相關的內容可能會枯燥乏味,但是一點點堅持下來的話,各方面都會有蛻變的,

還沒有看夠?掃下面的二維碼關注下公眾號吧!

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/8626.html

標籤:大數據

上一篇:Docker基礎修煉3--Docker容器及常用命令

下一篇:Druid 0.17入門(4)—— 資料查詢方式大全

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more