搞大數據,Java 工程師需要掌握哪些知識?
題目是一名叫“截然不同”的同學私信我的一個問題,原話是,“搞大數據,java 需要掌握哪些技術點?”,我稍微調整了一下。必須得承認一點,我本人沒有搞過大數據,所在這方面的經驗為零。
但同學既然問了,咱就不能假裝不知道啊,雖然真的是不知道。但要變強,就必須無所畏懼,迎難而上,對吧?
幸好我身邊有一些朋友是做大數據的,我可以向他們請教,了解清楚后,我現在就把他們給我的建議整理一下發出來,希望給有需求的同學們一點幫助。
01、大數據的就業方向有哪些?
現實點,我們掌握任何技能都是為了就業,為了能夠找份工作糊口;立志不打工的同學們請繞行哈。
那大數據的就業方向都有哪些呢?
- 大數據工程師
- 大數據科學家
- 數據分析師
那針對這些不同的就業方向,都需要哪些技能呢?我們來一一的分析下。
02、大數據工程師的技能要求
大數據工程師的門檻相對其他兩個較低一些,所以同學們可以重點關注一下這個方向。
先說一些必備的技能吧。
- 對 Java 虛擬機有著深入的研究,推薦書籍,周志明的《深入理解 Java 虛擬機》。
- 對 Java 并發掌握得很透徹,推薦書籍,《Java 并發編程實戰》。
- 掌握 Hadoop。Hadoop 是一款支持數據密集型分布式應用程序并以 Apache 2.0 許可協議發布的開源軟件框架,可以使應用程序與成千上萬的獨立計算的電腦和 PB 級的數據連接起來,整個 Hadoop “平臺”還包括 MapReduce、Hadoop 分布式文件系統(HDFS)。
- 掌握 HBase。HBase 是一個開源的非關系型分布式數據庫,是 Hadoop 項目的一部分,運行于 HDFS 文件系統之上,對稀疏文件提供極高的容錯率。
- 掌握 Hive。Hive 是一個建立在 Hadoop 架構之上的數據倉庫,能夠提供數據的精煉,查詢和分析。
- 掌握 Kafka。Kafka 的目標是為處理實時數據提供一個統一、高吞吐、低延遲的平臺。
- 掌握 Storm。Storm 是一個分布式計算框架,使用用戶創建的“管”和“螺栓”來定義信息源和操作,允許批量、分布式處理流式數據。
- 了解 Scala。Scala 是一門多范式的編程語言,設計初衷是要集成面向對象編程和函數式編程的各種特性。可以和 Java 兼容,運行在 Java 虛擬機上。
- 掌握 Spark。Spark 是一個開源集群運算框架,相對于 Hadoop 的 MapReduce 會在運行完工作后將中介數據存放到磁盤中,Spark 使用了存儲器內運算技術,能在數據尚未寫入硬盤時即在存儲器內分析運算。
- 會用 Linux。推薦書籍,鳥哥的《Linux 私房菜》。
再來說一些高階的技能吧。
- 會用 Python。
- 會用 R 語言。
- 精通算法和數據結構。
03、大數據科學家的技能要求
“科學家”,這個 title 聽起來就很牛逼,不會出乎同學們的意料,我小時候的夢想之一除了成為一名作家之外,就是成為一名“科學家”。
那大數據科學家,要求的技能就會超出絕大多數普通人的能力。首先,要對“統計機器學習方法”有著很深入的研究,既要會預測,還要能解釋為什么要這樣預測,對吧?
如果要預測股票是漲還是跌,就必須得有一套可以解釋給客戶聽的理論,還要有一套預測方法,讓程序能夠按照這個方法去執行,并得出預期的結論。
現如今,數據已經不值錢了,哪里都是大量的數據,值錢的是通過對這些數據進行分析,得出指導性的建議——這就要求科學家要有數據處理的能力。
不多說了,這方面的要求非常高,最起碼也得考個研究生吧。
04、數據分析師的技能要求
數據分析也可以細分為兩個領域,一個類似產品經理,更注重業務,對業務能力要求比較高;一個偏向數據挖掘,更注重技術,對算法和數據結構要求比較高。
那不管是產品經理還是做數據挖掘,SQL 是必知必會的,因為數據分析師每天都要處理海量的數據,而這些數據來自哪呢?就是數據庫。那怎么把數據從數據庫中取出來呢?SQL 語句(select * from xxx,哈哈),別無其他。
那還需要什么技能呢?統計學基礎,對,沒錯,數據和時間的關系,數據的動態分布,數據的最大值、最小值、平均值,這些都需要一定的統計學基礎。
當然了,做數據分析比較好的編程語言是 R 語言或者 Python,所以還需要學習一下這兩門語言。不過,有了 Java 作為基礎,學 Python 就會更容易些,因為 Python 本身的語言更簡潔。(R 語言主要用于統計分析、繪圖、數據挖掘)
推薦兩本書吧,《深入淺出數據分析》和《精益數據分析》。
05、最后
好了,我已經把要學習的技能告訴同學們了,接下來,就靠同學們自己的修行了??磿?,或者網上找資料(按照關鍵字去搜索),都可以,關鍵就看你愿不愿意沉下心,去花時間鉆研了。
執行力,很重要,對吧?