學習大數據爲什麼要先學Java? 原

計算機編程語言有很多,目前用的多一點的就是Java,C++,Python等等。目前大多數學習大數據的人都是選擇學習Java,那Java到底好在哪呢?爲什麼學大數據之前要先學Java呢?我們今天就來分析一下。

不少想學習大數據的零基礎學員都知道,學大數據部分課程之前要先學習一種計算機編程語言。大數據開發需要編程語言的基礎,因爲大數據的開發基於一些常用的高級語言,比如Java和.Net。不論是hadoop,還是數據挖掘,都需要有高級編程語言的基礎。因此,如果想學習大數據開發,還是需要至少精通一門高級語言。

Java是目前使用最爲廣泛的網絡編程語言之一


它不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作爲靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。

Java有許多特性


Java具有簡單性、面向對象、分佈式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點。

Java擁有極高的跨平臺能力


Java可以編寫桌面應用程序、Web應用程序、分佈式系統和嵌入式系統應用程序等與傳統的編程語言,如C、C++相比,Java能夠更加容易上手,而比之微軟平臺的開發語言,如VB、MFC等,則有着跨平臺運行的能力,儘管Java沒有能夠完全實現最初的一次編程、隨處運行的口號,但是Java相比於其它較早的編程語言,仍然擁有極高的跨平臺能力。

Java是一個強類型語言


Java是一個強類型語言,它允許擴展編譯時檢查潛在類型不匹配問題的功能。Java要求顯式的方法聲明,它不支持C風格的隱式聲明。這些嚴格的要求保證編譯程序能捕捉調用錯誤,這就導致更可靠的程序。可靠性方面最重要的增強之一是Java的存儲模型。

不支持指針消除重寫存儲和訛誤數據的可能性


Java不支持指針,它消除重寫存儲和訛誤數據的可能性。類似地,Java自動的“無用單元收集”預防存儲漏泄和其它有關動態存儲分配和解除分配的有害錯誤。Java解釋程序也執行許多運行時的檢查,諸如驗證所有數組和串訪問是否在界限之內。

Java的異常處理使得系統更穩定 


異常處理是Java中使得程序更穩健的另一個特徵。異常是某種類似於錯誤的異常條件出現的信號。使用try/catch/finally語句,程序員可以找到出錯的處理代碼,這就簡化了出錯處理和恢復的任務。

最重要的是,Hadoop以及其他大數據處理技術很多都是用Java,例如Apache的基於Java的HBase和Accumulo以及 ElasticSearchas,因此學習Hadoop的一個首要條件,就是掌握Java語言編程。

 

大數據學習路線(完整詳細版)

大數據學習路線

java
(Java se,javaweb)
Linux(shell,高併發架構,lucene,solr)
Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)
機器學習(R,mahout)
Storm(Storm,kafka,redis)
Spark(scala,spark,spark core,spark sql,spark streaming,spark mllib,spark graphx)
Python(python,spark python) 
雲計算平臺(docker,kvm,openstack)

名詞解釋

一、Linux
lucene: 全文檢索引擎的架構
solr: 基於lucene的全文搜索服務器,實現了可配置、可擴展並對查詢性能進行了優化,並且提供了一個完善的功能管理界面。

二、Hadoop
HDFS
: 分佈式存儲系統,包含NameNode,DataNode。NameNode:元數據,DataNode。DataNode:存數數據。
yarn: 可以理解爲MapReduce的協調機制,本質就是Hadoop的處理分析機制,分爲ResourceManager NodeManager。
MapReduce: 軟件框架,編寫程序。
Hive: 數據倉庫 可以用SQL查詢,可以運行Map/Reduce程序。用來計算趨勢或者網站日誌,不應用於實時查詢,需要很長時間返回結果。
HBase: 數據庫。非常適合用來做大數據的實時查詢。Facebook用Hbase存儲消息數據並進行消息實時的分析
ZooKeeper: 針對大型分佈式的可靠性協調系統。Hadoop的分佈式同步等靠Zookeeper實現,例如多個NameNode,active standby切換。
Sqoop: 數據庫相互轉移,關係型數據庫和HDFS相互轉移
Mahout: 可擴展的機器學習和數據挖掘庫。用來做推薦挖掘,聚集,分類,頻繁項集挖掘。
Chukwa: 開源收集系統,監視大型分佈式系統,建立在HDFS和Map/Reduce框架之上。顯示、監視、分析結果。
Ambari: 用於配置、管理和監視Hadoop集羣,基於Web,界面友好。

二、Cloudera
Cloudera Manager: 管理 監控 診斷 集成
Cloudera CDH:(Cloudera's Distribution,including Apache Hadoop) Cloudera對Hadoop做了相應的改變,發行版本稱爲CDH。
Cloudera Flume: 日誌收集系統,支持在日誌系統中定製各類數據發送方,用來收集數據。
Cloudera Impala: 對存儲在Apache Hadoop的HDFS,HBase的數據提供直接查詢互動的SQL。
Cloudera hue: web管理器,包括hue ui,hui server,hui db。hue提供所有CDH組件的shell界面的接口,可以在hue編寫mr。

三、機器學習/R
R
: 用於統計分析、繪圖的語言和操作環境,目前有Hadoop-R
mahout: 提供可擴展的機器學習領域經典算法的實現,包括聚類、分類、推薦過濾、頻繁子項挖掘等,且可通過Hadoop擴展到雲中。

四、storm
Storm
: 分佈式,容錯的實時流式計算系統,可以用作實時分析,在線機器學習,信息流處理,連續性計算,分佈式RPC,實時處理消息並更新數據庫。
Kafka: 高吞吐量的分佈式發佈訂閱消息系統,可以處理消費者規模的網站中的所有動作流數據(瀏覽,搜索等)。相對Hadoop的日誌數據和離線分析,可以實現實時處理。目前通過Hadoop的並行加載機制來統一線上和離線的消息處理
Redis: 由c語言編寫,支持網絡、可基於內存亦可持久化的日誌型、key-value型數據庫。

五、Spark
Scala
: 一種類似java的完全面向對象的編程語言。

jblas: 一個快速的線性代數庫(JAVA)。基於BLAS與LAPACK,矩陣計算實際的行業標準,並使用先進的基礎設施等所有的計算程序的ATLAS藝術的實現,使其非常快。

Spark: Spark是在Scala語言中實現的類似於Hadoop MapReduce的通用並行框架,除了Hadoop MapReduce所具有的優點,但不同於MapReduce的是job中間輸出結果可以保存在內存中,從而不需要讀寫HDFS,因此Spark能更好的適用於數據挖掘與機器學習等需要迭代的MapReduce算法。可以和Hadoop文件系統並行運作,用過Mesos的第三方集羣框架可以支持此行爲。
Spark SQL: 作爲Apache Spark大數據框架的一部分,可用於結構化數據處理並可以執行類似SQL的Spark數據查詢
Spark Streaming: 一種構建在Spark上的實時計算框架,擴展了Spark處理大數據流式數據的能力。
Spark MLlib: MLlib是Spark是常用的機器學習算法的實現庫,目前(2014.05)支持二元分類,迴歸,聚類以及協同過濾。同時也包括一個底層的梯度下降優化基礎算法。MLlib以來jblas線性代數庫,jblas本身以來遠程的Fortran程序。

Spark GraphX: GraphX是Spark中用於圖和圖並行計算的API,可以在Spark之上提供一站式數據解決方案,可以方便且高效地完成圖計算的一整套流水作業。

Fortran: 最早出現的計算機高級程序設計語言,廣泛應用於科學和工程計算領域。

BLAS: 基礎線性代數子程序庫,擁有大量已經編寫好的關於線性代數運算的程序。
LAPACK: 著名的公開軟件,包含了求解科學與工程計算中最常見的數值線性代數問題,如求解線性方程組、線性最小二乘問題、特徵值問題和奇異值問題等。
ATLAS: BLAS線性算法庫的優化版本。
Spark Python: Spark是由scala語言編寫的,但是爲了推廣和兼容,提供了java和python接口。

六、Python
Python
: 一種面向對象的、解釋型計算機程序設計語言。


七、雲計算平臺
Docker
: 開源的應用容器引擎
kvm: (Keyboard Video Mouse)

openstack:  開源的雲計算管理平臺項目

 

大數據學習加羣:19942+7210  一起學習資源課程分享

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章