Python大數據分析(二):大數據技術基礎

(一)Linux系統和大數據

  • 大數據分析需要可擴展,易用,靈活的計算分析,大量的數據需要通過一個硬件的集羣製造一個計算資源之外的可擴展優勢
  • Linux的低門檻使得集羣架設可以以低成本完成,這使得Linux成爲這些年在處理數據上顯得更有更好的表現和更高效
  • Linux容器運行你去打包和隔離應用使得你可以在各種環境(開發,測試,生產…)下移動數據,對於完成大數據的數據處理工作,容器是一個快速簡單的方式
  • Linux系統在這方面的優勢:用戶社區龐大,開源免費,可跨平臺,多用戶多任務,高能高效,安全穩定,硬件計算快速,網絡功能完善


(二)Hadoop

Apache Hadoop 是一款支持數據密集型分佈式應用程序並以Apache 2.0許可協議發佈的開源軟件框架。它支持在商品硬件構建的大型集羣上運行的應用程序。Hadoop 是根據谷歌公司發表的MapReduce和Google文件系統的論文自行實現而成。所有的Hadoop模塊都有一個基本假設,即硬件故障是常見情況,應該由框架自動處理。
在這裏插入圖片描述

(1)Hadoop包含哪些模塊?

  • 常用模塊(Hadoop Common):常用模塊可以爲其他模塊提供效用
  • HDFS:HDFS是分佈式文件系統(Hadoop Distributed FIle Syetem )的簡稱,分佈式文件系統可以爲應用數據提供高吞吐量的處理
  • YARN:一個爲工作調度和集羣資源管理而設計的框架
  • MapReduce:一個爲龐大數據集所用的可並行YARN基礎系統
  • Ozone:一個Hadoop的對象存儲

(2)Hadoop的生態成員

  • HBase:HBase是一個開源的非關係型分佈式數據庫,它參考了谷歌的BigTable建模,實現的編程語言爲Java。
  • Hive:Hive是一個建立在Hadoop架構之上的數據倉庫。它能夠提供數據的精煉,查詢和分析。
  • ZooKeeper:ZooKeeper是Apache軟件基金會的一個軟件項目,它爲大型分佈式計算提供開源的分佈式配置服務、同步服務和命名註冊。 ZooKeeper曾經是Hadoop的一個子項目,但現在是一個獨立的頂級項目。 ZooKeeper的架構通過冗餘服務實現高可用性。在這裏插入圖片描述
  • Pig:Pig是一個基於Apache Hadoop的大規模數據分析平臺,它提供的SQL-LIKE語言叫Pig Latin,該語言的編譯器會把類SQL的數據分析請求轉換爲一系列經過優化處理的MapReduce運算。

(3)哪些人在使用Hadoop?

  1. Amazon
  2. Facebook
  3. Fox Interactive Media
  4. 華爲
  5. IBM
  6. ImageShack
  7. 信息學研究院
  8. 紐約時報
  9. 中國移動
    … …


(三)Spark

Spark是一個開源集羣運算框架,最初是由加州大學柏克萊分校AMPLab所開發。相對於Hadoop的MapReduce會在運行完工作後將中介數據存放到磁盤中,Spark使用了存儲器內運算技術,能在數據尚未寫入硬盤時即在存儲器內分析運算。
在這裏插入圖片描述在這裏插入圖片描述
Spark在存儲器內運行程序的運算速度能做到比Hadoop MapReduce的運算速度快上100倍,即便是運行程序於硬盤時,Spark也能快上10倍速度。Spark允許用戶將數據加載至集羣存儲器,並多次對其進行查詢,非常適合用於機器學習算法

(1)Scala

Scala是一門多範式的編程語言,設計初衷是要集成面向對象編程和函數式編程的各種特性。

def qsort(list: List[Int]): List[Int] = list match {
  case Nil => Nil
  case pivot :: tail =>
    val(smaller, rest) = tail.partition(_ < pivot)
    qsort(smaller) ::: pivot :: qsort(rest)
}

(2)RDD

Spark RDD(英語:Resilient Distributed Dataset,彈性分佈式數據集)是一種數據存儲集合。只能由它支持的數據源或是由其他RDD經過一定的轉換(Transformation)來產生。在RDD上可以執行的操作有兩種轉換(Transformation)和行動(Action),每個 RDD 都記錄了自己是如何由持久化存儲中的源數據計算得出的,即其血統(Lineage)。

(3)主件

  • Spark SQL:Spark用來操作結構化數據的組件
  • Spark Streaming:Spark平臺上針對實時數據進行流式計算的組件
  • MLlib:Spark提供的一個機器學習算法庫
  • GraphX:Spark面向圖計算提供的框架與算法庫


(四)雲計算

雲計算(cloud computing)是一種基於互聯網的計算方式,通過這種方式,共享的軟硬件資源和信息可以按需求提供給計算機各種終端和其他設備,使用服務商提供的電腦基建作計算和資源
在這裏插入圖片描述

  • SaaS:軟件服務,Software-as-a-service
  • PaaS:平臺服務,Platform-as-a-service
  • IaaS:基礎設施服務,Infrastructure-as-a-service

(1)虛擬化技術

雲計算虛擬化技術支持用戶在任意位置、使用各種終端獲取服務。虛擬化技術是實現雲計算基礎架構層面(IaaS)的核心技術

(2)雲計算特點

根據美國國家標準和技術研究院的定義,雲計算服務應該具備以下幾條 特徵

  • 隨需應變自助服務。
  • 隨時隨地用任何網絡設備訪問。
  • 多人共享資源池。
  • 快速重新部署靈活度。
  • 可被監控與量測的服務。

從研究現狀來看,雲計算具有以下 特點

  • (1)超大規模。
  • (2)虛擬化。
  • (3)高可靠性。
  • (4)通用性。
  • (5)高可伸縮性。
  • (6)按需服務。
  • (7)極其廉價。

(3)雲計算應用

  • 雲教育
  • 雲物聯
  • 雲安全
  • 雲政務
  • 雲存儲


(五)Python數據分析工具

(1)Pandas

Pandas 是一個由Python編程語言爲了數據操作和分析而建立的軟件庫
在這裏插入圖片描述

(2)matplotlib

matplotlib 是Python編程語言及其數值數學擴展包 NumPy的可視化操作界面。它利用通用的圖形用戶界面工具包,如Tkinter, wxPython, Qt或GTK+,嚮應用程序嵌入式繪圖提供了應用程序接口(API)
在這裏插入圖片描述

(3)scikit-learn

scikit-learn 是Python的開源機器學習庫,它的特色是多種多樣的分類,迴歸,線性等算法包含了提供向量化,隨機森林,梯度推進,K-means和DBSCAN,並且依賴於Python數值庫NumPy和科學庫SciPy設計爲互操作
在這裏插入圖片描述



附:參考資料

  • 《Why Linux is the powerhouse for big data》
  • https://www.computerweekly.com/blog/Open-Source-Insider/Why-Linux-is-the-powerhouse-for-big-data

  • 維基百科·Hadoop
  • https://zh.wikipedia.org/wiki/Apache_Hadoop

  • Hadoop官網
  • https://hadoop.apache.org/

  • 維基百科·Spark
  • https://zh.wikipedia.org/wiki/Apache_Spark

  • 維基百科·Pandas
  • https://en.wikipedia.org/wiki/Pandas_(software)

  • 維基百科·matplotlib
  • https://zh.wikipedia.org/wiki/Matplotlib

  • scikit-learn官網
  • https://scikit-learn.org/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章