鏈接:https://www.zhihu.com/question/52187221/answer/129439263
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
如果你畢業了, 去個什么公司,應聘個“大數據開發工程師”什么的,我們來看看職位要求是什么:
崗位職責:
1、負責數據分析、監控、安全、風控等平台設計與開發
2、責基於spark平台的用戶行為分析、實時業務數據的開發
3、采用統計分析、數據建模、數據挖掘等方法,提供有價值的數據、模型、算法支持
崗位要求:
1、大學本科學歷,3年及以上相關工作經驗
2、熟悉java/scala的一種開發語言
3、熟悉spark/hadoop生態系統
4、熟悉shell或python腳本
5、有數據挖掘、機器學習方面的項目經驗者優先
6、熟悉Redis、MongoDB、HBase等NOSQL數據庫
7、良好的溝通與技術學習能力,對開源技術充滿熱情
看到沒?
大數據開發一共幾個流程,大概概括起來有:
收集、清洗、數倉(建模)、OLAP、可視化
這里邊:
收集一般的技術是:Kafka、Flume、高性能HTTP開發(可能)、Avro協議(可能)、Thrift協議(可能),取決於所在公司的技術棧。
清洗:Spark、HiveSQL/SparkSQL、MapReduce(已經過時)
存儲:HDFS、Alluxio(分布式內存存儲)、Redis(高速緩存)、mongoDB(文檔型數據庫)...
流式計算:Spark Streaming / Storm
數倉建模:Hive、MongoDB、HBase
OLAP:MySQL(常用),PostgreSQL(GreenPlum)MyCAT(小眾)...
數據可視化:一般來說這活不歸你管, 技術有 echarts.js hicharts.js d3.js ...
看眼花了吧?
其實很好理解, 從上到下就是:數據要怎么存, 數據要怎么查...
你需要學的是:
計算機體系基礎: 內存、CPU、指令、等等這些概念,得有個感覺,不然別人一說,你都不知道咋回事,尷尬了。看《深入理解計算機系統》。
網絡基礎: 這個我還真不知道有什么書, 《TCP/IP詳解》有點深了,不過你有時間,慢慢啃下來挺好, 而且第一本就夠用,書也不厚。
數據庫基礎:RMDBS里的MySQL其實我不推薦,但是這玩意已經爛大街了,是個公司就用,不學也得學。postgreSQL很不錯,但是用的人少。
Java系的語言你必須得會, 重要的就是Java和Scala, Java用來做傳統的開發(你總要寫幾個接口, 這個時候最常用的就是SpringMVC/Mybatis,這倆兄弟玩明白就行了, 但是什么J2EE,什么Hibernate,什么HTML5,跟你一點關系也!沒!有!)。
Scala是我特別推崇的一門語言, 靈活、高效, Java搞懂了就把它也學了,以后寫Spark,甚至用Play寫Web,都很爽。
Python是必學的一門語言, 靈活的腳本, 以后想早點下班回家,少不了它。
Hadoop生態體系你必須得懂, 不需要一個組件一個組件的文檔去看, 先看個大概,知道啥玩意是干啥的, 然后用的時候再去看文檔。 Hadoop想自己裝是有點蛋疼,跟你導師申請個阿里雲幾台機, 慢慢折騰去吧。
哦對了, 你想折騰Hadoop,Linux的基礎必須得學,至少Shell得用的溜溜的,不然hadoop你怎么裝... cd / mv/ cp/ mkdir / chmod / ls / ssh / touch / vim / awk / sed / ifconfig / du / df / 這亂七八糟一大堆命令,一個一個學了吧, linux的各種概念,文件、管道、bash、配置,你得整懂吧?學吧!趁着研究生時間多,短投資大回報!
作為研究生,建議你多看一看機器學習,說到底大數據還是一個“基礎設施”,但要創造價值,還得靠機器學習(數據挖掘的意思就是 機器學習 on 大數據)。
逼逼了這么多,頭緒也比較亂(誰讓我剛起床呢!), 照着我說的這些關鍵詞,一個一個技術的了解吧,哪個不懂盡可以私信我