Hadoop大資料平臺架構與實踐
Hadoop大資料平臺架構與實踐
什麼是大資料
大資料 Big Data
據說,詞源出自Alvin Toffler,上世紀70年代的作品《第三次浪潮》。
大資料就是多,就是多。原來的裝置存不下、算不動。
————啪菠蘿·畢加索大資料,不是隨機樣本,而是所有資料;不是精確性,而是混雜性;不是因果關係,而是相關關係。
_______Schönberger21世紀核心的競爭是資料的競爭,誰擁有更多的資料誰就擁有未來。
————馬雲
機器學習是人工智慧的一個分支。人工智慧的研究歷史有著一條從以“推理”為重點,到以“知識”為重點,再到以“學習”為重點的自然、清晰的脈絡。顯然,機器學習是實現人工智慧的一個途徑,即以機器學習為手段解決人工智慧中的問題。機器學習在近30多年已發展為一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、計算複雜性理論等多門學科。機器學習理論主要是設計和分析一些讓計算機可以自動“學習”的演算法。機器學習演算法是一類從資料中自動分析獲得規律,並利用規律對未知資料進行預測的演算法。因為學習演算法中涉及了大量的統計學理論,機器學習與推斷統計學聯絡尤為密切,也被稱為統計學習理論。演算法設計方面,機器學習理論關注可以實現的,行之有效的學習演算法。很多推論問題屬於無程式可循難度,所以部分的機器學習研究是開發容易處理的近似演算法。機器學習已廣泛應用於資料探勘、計算機視覺、自然語言處理、生物特徵識別、搜尋引擎、醫學診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、語音和手寫識別、戰略遊戲和機器人等領域。
上圖是一個簡化的大資料處理流程圖,大資料處理的主要流程包括資料收集、資料儲存、資料處理、資料應用等主要環節。下面我們逐一對各個環節所需要的技術棧進行講解:
1.1 資料收集
大資料處理的第一步是資料的收集。現在的中大型專案通常採用微服務架構進行分散式部署,所以資料的採集需要在多臺伺服器上進行,且採集過程不能影響正常業務的開展。基於這種需求,就衍生了多種日誌收集工具,如 Flume 、Logstash、Kibana 等,它們都能通過簡單的配置完成複雜的資料收集和資料聚合。
1.2 資料儲存
收集到資料後,下一個問題就是:資料該如何進行儲存?通常大家最為熟知是 MySQL、Oracle 等傳統的關係型資料庫,它們的優點是能夠快速儲存結構化的資料,並支援隨機訪問。但大資料的資料結構通常是半結構化(如日誌資料)、甚至是非結構化的(如視訊、音訊資料),為了解決海量半結構化和非結構化資料的儲存,衍生了 Hadoop HDFS 、KFS、GFS 等分散式檔案系統,它們都能夠支援結構化、半結構和非結構化資料的儲存,並可以通過增加機器進行橫向擴充套件。
分散式檔案系統完美地解決了海量資料儲存的問題,但是一個優秀的資料儲存系統需要同時考慮資料儲存和訪問兩方面的問題,比如你希望能夠對資料進行隨機訪問,這是傳統的關係型資料庫所擅長的,但卻不是分散式檔案系統所擅長的,那麼有沒有一種儲存方案能夠同時兼具分散式檔案系統和關係型資料庫的優點,基於這種需求,就產生了 HBase、MongoDB。
1.3 資料分析
大資料處理最重要的環節就是資料分析,資料分析通常分為兩種:批處理和流處理。
- 批處理:對一段時間內海量的離線資料進行統一的處理,對應的處理框架有 Hadoop MapReduce、Spark、Flink 等;
- 流處理:對運動中的資料進行處理,即在接收資料的同時就對其進行處理,對應的處理框架有 Storm、Spark Streaming、Flink Streaming 等。
批處理和流處理各有其適用的場景,時間不敏感或者硬體資源有限,可以採用批處理;時間敏感和及時性要求高就可以採用流處理。隨著伺服器硬體的價格越來越低和大家對及時性的要求越來越高,流處理越來越普遍,如股票價格預測和電商運營資料分析等。
上面的框架都是需要通過程式設計來進行資料分析,那麼如果你不是一個後臺工程師,是不是就不能進行資料的分析了?當然不是,大資料是一個非常完善的生態圈,有需求就有解決方案。為了能夠讓熟悉 SQL 的人員也能夠進行資料的分析,查詢分析框架應運而生,常用的有 Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix 等。這些框架都能夠使用標準的 SQL 或者 類 SQL 語法靈活地進行資料的查詢分析。這些 SQL 經過解析優化後轉換為對應的作業程式來執行,如 Hive 本質上就是將 SQL 轉換為 MapReduce 作業,Spark SQL 將 SQL 轉換為一系列的 RDDs 和轉換關係(transformations),Phoenix 將 SQL 查詢轉換為一個或多個 HBase Scan。
2、大資料技術的相關概念
Google大資料技術:
- MapResuce
- BigTable
- GFS
革命性的變化:
1、成本降低,能用PC機,就不用大型機和高階儲存。
2、軟體容錯硬體故障視為常態,通過軟體保證可靠性
3、簡化並行分散式計算,無須控制節點同步和資料交換
但是,Google只發表了相關的技術論文,沒有開放原始碼。
一個模仿Google大資料技術的開源實現來了。Doug Cutting
Hadoop是什麼?
開源的分散式儲存+分散式計算平臺。目前託管在Apache
包括兩個核心組成:
HDFS:分散式檔案系統,儲存海量的資料
MapReduce:並行處理框架,實現任務分解和排程。
Hadoop可以用來做什麼?
搭建大型資料倉庫,PB級資料的儲存,處理、分析、統計等業務。
Hadoop的 優勢
-
高擴充套件
-
低成本
-
成熟的生態圈
Hadoop安裝
-
準備Linux環境
-
安裝JDK
-
配置Hadoop
HDFS的特點
1、資料冗餘,硬體容錯
2、流式的資料訪問
3、儲存大檔案
HDFS適用性和侷限性
適合資料批量讀寫,吞吐量高
不適合互動式應用,低延遲很難滿足
適合一次寫入多次讀取,順序讀寫
不支援多使用者併發寫相同檔案