Hadoop+Spark 筆記 2025/4/21

讀書筆記

定義

1. 大數據(Big Data)
? ?- 指傳統數據處理工具難以處理的海量、高速、多樣的數據集合,通常具備3V特性(Volume體量大、Velocity速度快、Variety多樣性)。擴展后還包括Veracity(真實性)和Value(價值)。

2. Hadoop
? ?- 一個開源的分布式計算框架,用于存儲和處理大規模數據集。核心組件包括HDFS(存儲)和MapReduce(計算),具有高容錯性橫向擴展能力。

3. HDFS(Hadoop Distributed File System)
? ?- Hadoop的分布式文件系統,設計用于**廉價硬件集群**。特點:
? ? ?- 分塊存儲(默認128MB/塊)
? ? ?- 多副本機制(默認3副本)
? ? ?- 主從架構(NameNode管理元數據,DataNode存儲實際數據)

4. MapReduce
? ?- 一種批處理編程模型,分為兩個階段:
? ? ?- Map階段:將任務分割成更小任務交給每臺服務器分別運行,也就是并行處理輸入數據(映射)
? ? ?- Reduce階段:聚合Map結果(歸約)
? ?- 適合離線大規模數據處理,但磁盤I/O開銷較大。

5. Spark
? ?- 基于內存的分布式計算引擎,相比MapReduce優勢:
? ? ?- 內存計算(比Hadoop快10-100倍)
? ? ?- 支持DAG(有向無環圖)優化執行計劃
? ? ?- 提供SQL、流處理、圖形處理、機器學習等統一API(Spark SQL/Streaming/GraphX/MLlib)

6. 機器學習(Machine Learning)
? ?- 通過算法讓計算機從數據中自動學習規律并做出預測/決策,主要分為:
? ? ?- 監督學習(如分類、回歸)
? ? ?- 無監督學習(如聚類、降維)
? ? ?- 強化學習(通過獎勵機制學習)

關鍵區別:Hadoop基于磁盤批處理,Spark基于內存迭代計算,機器學習則是數據分析的高級應用方法。

安裝Hadoop

1.虛擬機軟件安裝(搭建Hadoop cluster集群時需要很多臺虛擬機)

2.安裝Ubuntu操作系統(hadoop最主要在Linux操作系統環境下運行)

3.安裝Hadoop Single Node Cluster(只以一臺機器來建立Hadoop環境)

  1. 安裝JDK(Hadoop是java開發的,必須先安裝JDK)
  2. 設置SSH無密碼登錄(Hadoop必須通過SSH與本地計算機以及其他主機連接,所以必須設置SSH)
  3. 下載安裝Hadoop(官網下載Hadoop,安裝到Ubuntu中)
  4. 設置Hadoop環境變量(設置每次用戶登錄時必須要設置的環境變量)
  5. Hadoop配置文件的設置(在Hadoop的/usr/local/hadoop/etc/hadoop的目錄下,有很多配置設置文件)
  6. 創建并格式化HDFS目錄(HDFS目錄是存儲HDFS文件的地方,在啟動Hadoop之前必須先創建并格式化HDFS目錄)
  7. 啟動Hadoop(全部設置完成后啟動Hadoop,并查看Hadoop相關進程是否已經啟動)
  8. 打開Hadoop Web界面(Hadoop界面可以查看當前Hadoop的狀態:Node節點、應用程序、任務運行狀態)

常用命令:

啟動HDFS

start-dfs.sh

啟動YARN(啟動Hadoop MapReduce框架YARN)

start-yarn.sh

同時啟動HDFS和YARN

start-all.sh

使用jps查看已經啟動的進程(查看NameNode、DataNode進程是否啟動)

PS:因為只有一臺服務器,所以所有功能都集中在一臺服務器中,可以看到:

  • HDFS功能:NameNode、Secondary NameNode、DataNode已經啟動
  • MapReduce2(YARN):Resource Manager、NodeManager已經啟動
jps

監聽端口上的網絡服務:

打開Hadoop Resource-Manager Web界面

http://localhost:8088/

?NameNode HDFS Web界面

http://localhost:50070/

4.Hadoop Multi Node Cluster的安裝(至少有四臺服務器,才能發揮多臺計算機并行的優勢。不過我只有一個電腦,只能創建四臺虛擬主機演練)

Hadoop的基本功能

1.HDFS

常用HDFS命令:

HDFS 常見命令 -CSDN博客

回頭再寫那些常用命令

2.MapReduce

批處理為主。

首先使用Map將待處理的數據分割成很多的小份數據,由每臺服務器分別運行。

再通過Reduce程序進行數據合并,最后匯總整理出結果。

單詞計數

Spark?

Spark的Cluster模式架構圖👇

  • 安裝Spark
  • 安裝Scale
  • 啟動spark-shell交互界面
  • 啟動Hadoop(start-all.sh命令)
  • 本地運行spark-shell(比如spark-shell --master local[4]->讀取本地文件->讀取HDFS文件)
  • 在Hadoop YARN運行spark-shell(spark可以在Hadoop YARN上運行,讓Yarn幫助它進行多臺機器資源的管理。在Hadoop Yarn運行spark-shell->讀取本地文件->讀取HDFS文件->在Hadoop Web界面可以查看spark-shell APP,8080端口)
  • 構建Spark Standalone Cluster執行環境(在master虛擬機設置spark-env.sh->復制spark程序到data1、data2、data3->在master虛擬機編輯slaves文件)
  • 在Spark Standalone運行spark-shell(啟動Spark Standalone Cluster也就是start-all.sh->在Spark Standalone運行Spark-shell->Spark Standalone Web UI界面->讀取本地文件->讀取HDFS文件->停止Spark stand alone cluster)

Spark本身是以Scala開發的,所以先安裝Scala。試著安裝在master虛擬機上。

安裝:官網下載->解壓縮并移動->配置環境變量->啟動

PS:spark-shell默認顯示很多信息,可以自己手動改,讓它只顯示警告信息。(cp復制log4j.properties.template模板到log4j.properties)👇

spark-shell --master local[4] 其中local[N]表示本地運行,使用N個線程,也就是說可以同時執行N個程序。

讀取本地文件👇

讀取HDFS文件👇

Spark的基本功能

1.RDD的特性

spark的核心是RDD(彈性分布式數據集),屬于一種分布式的內存系統的數據集應用,RDD也是spark的主要優勢。

RDD能與其他系統兼容,可以導入外部存儲系統的數據集,如HDFS、Hbase或其他Hadoop數據源。

RDD的三種基本運算:轉換Transformation、動作Action、持久化Persistence

2.基本RDD“轉換”運算

  • 先進入spark-shell
  • 創建intRDD
  • 創建stringRDD
  • map運算
  • map字符串運算
  • filter數字運算
  • filter字符串運算
  • distinct運算
  • randomSplit運算
  • groupBy運算

命令就不寫了,下面也是

3.多個RDD“轉換”運算

  • 先創建3個RDD來示范
  • union并集運算
  • intersection交集運算
  • subtract差集運算
  • cartersian笛卡爾乘積運算

4.基本“動作”運算

  • 讀取元素
  • 統計功能

5.RDD Key-Value基本“轉換”運算

  • 創建范例Key-Value RDD
  • 列出keys值
  • 列出values值
  • 使用filter篩選key運算
  • 使用filter篩選value運算
  • mapValues運算
  • sortByKey從小到大按照key排序
  • sortByKey從大到小按照key排序
  • reduceByKey(如(3,4)(3,5)(1,1)相同key進行合并(3,9)(1,1))

6.多個RDD Key-Value“轉換”運算

  • 創建Key-Value RDD范例
  • Key-Value RDD join運算
  • Key-Value leftOuterJoin運算
  • Key-Value rightOuterJoin運算
  • Key-Value subtractByKey運算

7.Key-Value“動作”運算

  • Key-Value first運算
  • 讀取第一條數據的元素
  • Key-Value countByKey運算
  • Key-Value collectAsMap運算
  • 使用對照表轉換數據

8.Broadcast廣播變量

9.accumulator累加器

共享變量包括:

  • Broadcast廣播變量
  • accumulator累加器

10.RDD Persistence持久化

Spark RDD持久化機制,可以用于將需要重復運算的RDD存儲在內存中,以便大幅提升運算效率。

使用方法:

  • RDD.persist()——可指定存儲等級
  • RDD.unpersist()——取消持久化

11.用Spark創建WordCount

  1. 創建測試文件(mkdir -p ~workspace/WordCount/data,cd到剛剛創建的文件夾,編輯test.txt)
  2. 進入spark-shell(~workspace/WordCount/data下輸入spark-shell)
  3. 執行WordCount spark命令
  4. 查看data目錄(ll)
  5. 查看output目錄(cd output,ll,因為結果保存在/data/output)
  6. 查看part-00000輸出文件(cat part-00000)

Spark的集成開發環境

使用eclipse集成開發環境(IDE)開發Spark應用程序。

  1. 下載與安裝eclipse Scala IDE,安在master服務器上
  2. 下載項目所需要的Library
  3. 啟動eclipse
  4. 創建新的Spark項目(要添加外部Jar或者創建后像第五步一樣添加,設置scala library版本)
  5. 設置項目鏈接庫
  6. 新建scala程序
  7. 創建WordCount測試文本文件
  8. 創建WordCount.scala
  9. 編譯WordCount.scala程序
  10. 運行Word.scala程序
  11. 導出jar文件
  12. spark-submit介紹
  13. 在本地local模式運行WordCount程序(記得刪除之前的/data/output目錄,切換到WordCount目錄,本地運行WordCount——spark-submit...代碼巴拉巴拉,查看結果/data/output里)
  14. 在Hadoop yarn-client運行WordCount程序(介紹如何用spark-submit,在Hadoop YARN上運行WordCount Spark程序:啟動集群start-all.sh->在HDFS創建data目錄,復制LICENSE.txt文件到HDFS,查看HDFS->修改環境配置文件bashrc并使其生效->切換到WordCount項目目錄,在Hadoop YARN上運行WordCount(spark-submit),查看HDFS產生的目錄和文件,看完刪除,因為一會還要測試)
  15. 在Spark Standalone Cluster上運行WordCount程序(仍然是啟動Standalone Cluster->運行程序->看結果)

機器學習(推薦引擎)

幾個概念和目錄,實戰。簡寫,主播也第一次學

  1. 推薦算法是啥
  2. 推薦引擎在大數據分析的幾個使用場景:電影推薦
  3. ALS推薦算法
  4. ml-100k推薦數據(一個數據集)的下載
  5. 使用spark-shell導入ml-100k數據
  6. 查看導入的數據
  7. 使用ALS.train訓練(ALS.train命令)
  8. 使用模型進行推薦
  9. 顯示推薦電影名
  10. 創建Recommend項目(剛剛是用spark-shell學習的,它的缺點是無法重復使用,這次啟動eclipse演示:啟動eclipse->創建Recommend項目->創建Recommend.scala文件->起個名字吧->創建完成的Scala程序,接下來開始輸入程序代碼)
  11. Recommend.scala程序代碼(Import導入鏈接庫->main主函數代碼(數據準備、訓練、推薦)->SetLogger可設置不顯示log信息)
  12. 創建PrepareData()數據準備(創建PrepareData()函數->創建用戶評分數據->創建電影ID與名稱對照表->顯示數據記錄數)
  13. recommend()推薦程序代碼(recommend()推薦程序代碼、RecommendMovies()針對此用戶推薦電影)
  14. 運行Recommend.scala
  15. 創建AIsEvaluation.scala調校推薦引擎參數(前面使用的ALS.train命令訓練,會返回model訓練完成的模型,其中rank、Iterations、lambda這些參數值的設置會影響結果的準確度,以及訓練所需的時間。接下來將進行調校找出最佳的參數組合)
  16. 創建PrepareData()數據準備(共有4步,前3部與Recommend.scala完全相同:1.創建用戶評分數據;2.創建電影ID與名稱對照表;3.顯示數據記錄數;4.以隨機方式將數據分為3個部分并且返回(以8:1:1比例分成訓練數據、驗證數據、測試數據))
  17. 進行訓練評估(1.train Validation訓練評估:評估rank參數、評估numIterations參數、評估lambda參數、所有參數交叉評估。2.evaluateParamter評估單個參數。3.Chart.plotBarLineChart繪制出柱形圖與折線圖。4.trainModel訓練模型。5.計算RMSE,表示預測與實際的誤差平均值,通常RMSE越小誤差越小。6.evaluateAllParameter程序將三個參數交叉評估找出最好的參數組合)
  18. 運行AlsEvaluation(運行AlsEvaluation,評估rank參數,評估lambda參數、所有參數交叉評估找出最好的參數組合)
  19. 修改Recommend.scala為最佳參數組合(剛剛我們已經找出了最佳參數組合)

機器學習(二元分類)

機器學習(多元分類)

機器學習(回歸分析)

數據可視化

使用Apache Zeppelin數據可視化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80287.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80287.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80287.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

femap許可不足如何解決

在復雜的工程仿真領域,Femap以其強大的功能和廣泛的應用場景而備受青睞。然而,隨著用戶需求的增長和項目規模的擴大,Femap許可不足的問題逐漸凸顯,成為了許多工程師和團隊面臨的挑戰。本文將為您詳細解析Femap許可不足的原因&…

【Microsoft Store 中的軟件推薦】

目錄: 😀 TranslucentTB😀 Snipaste😀 Watt Toolkit😀 NVIDIA Control Panel😀 Typedown 微軟應用商店中的軟件會直接安裝在C盤,所以,下面分享的這些是即超級好用,又占用…

AOSP Android14 Launcher3——RecentsView最近任務數據加載

最近任務是Launcher中的一個重要的功能,顯示用戶最近使用的應用,并可以快速切換到其中的應用;用戶可以通過底部上滑停頓進入最近任務,也可以在第三方應用底部上滑進最近任務。 這兩種場景之前的博客也介紹過,本文就不…

Flink介紹——實時計算核心論文之Flink論文

引入 通過前面的文章,我們梳理了大數據流計算的核心發展脈絡: S4論文詳解S4論文總結Storm論文詳解Storm論文總結Kafka論文詳解Kafka論文總結MillWheel論文詳解MillWheel論文總結Dataflow論文詳解Dataflow論文總結 而我們專欄的主角Flink正是站在前人的…

極狐GitLab CEO 柳鋼受邀出席 2025 全球機器學習技術大會

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 2025 年 4 月 18 日至 19 日,2025 全球機器學習技術大會(ML-Summit 2025)在上海隆重舉行。…

Linux Sed 深度解析:從日志清洗到 K8s 等12個高頻場景

看圖猜詩,你有任何想法都可以在評論區留言哦~ 摘要:Sed(Stream Editor)作為 Linux 三劍客之一,憑借其流式處理與正則表達式能力,成為運維場景中文本批處理的核心工具。本文聚焦生產環境高頻需求&#xff…

C++ STL 容器簡介(藍橋杯適用精簡版)

C的萬能頭文件是&#xff1a; #include <bits/stdc.h> 一、常用 STL 容器 1.vector&#xff08;動態數組&#xff09; #include<iostream> #include<string> #include <vector> #include <algorithm> // 包含排序所需的頭文件 using namespa…

Java語言的進化:JDK的未來版本

作為一名Java開發者&#xff0c;我們正處在一個令人興奮的時代&#xff01;Java語言正在以前所未有的速度進化&#xff0c;每個新版本都帶來令人驚喜的特性。讓我們一起探索JDK未來版本的發展方向&#xff0c;看看Java將如何繼續領跑編程語言界&#xff01;&#x1f4aa; &…

不要使用Round函數保留小數位了

不要使用Round函數保留小數位了 如果你表格不需要保留公式&#xff0c;那么就不要使用Round函數保留小數位了。用Excel工作圈插件&#xff0c;可以輕松以數值形式保留小數位&#xff0c;且支持合并單元格、不連貫區域快速處理。 如下圖&#xff0c;有文本&#xff0c;有跨行合并…

【C++】入門基礎【下】

目錄 一、缺省參數二、函數重載1. 函數類型不同2. 參數個數不同3、函數類型順序不同 三、引用1、引用的概念和定義2、引用的功能2.1 功能1&#xff1a; 做函數形參&#xff0c;修改形參影響實參2.2 功能2&#xff1a; 做函數形參&#xff0c;減少拷貝&#xff0c;提高效率2.3 功…

git比較不同分支的不同提交文件差異

背景&#xff1a;只想比較某2個分支的某2次提交的差異&#xff0c;不需要帶上父提交。 以commitA為基準&#xff0c;用commitB去比較差異 直接上代碼&#xff1a; commitAxxxx1 commitBxxxx2 outputFile"output.txt"# 獲取與第一個父提交的文件列表 filesA$(git di…

Linux內核之struct pt_regs結構

前沿 項目開發最近進行系統hook功能實現相關業務&#xff0c;主要在centos7和8系列環境開發下關功能。調研了相關知識點&#xff0c;發現在系統7和8上內核版本差別比較大&#xff0c;7-3.10.x系列版本&#xff0c;8-4.18.x系列版本。依據兩個系統的內核情況根對應的內核符號表進…

《從混亂到有序:ArkUI項目文件結構改造指南》

在ArkUI開發的廣袤天地里&#xff0c;構建一個清晰、有序的文件結構&#xff0c;是打造優質應用的關鍵。一個合理的文件結構&#xff0c;就像為開發者精心繪制的地圖&#xff0c;在項目的各個階段&#xff0c;都能提供明確的指引&#xff0c;讓開發過程順暢無阻。今天&#xff…

C#基于Sunnyui框架和MVC模式實現用戶登錄管理

C#基于Sunnyui框架和MVC模式實現用戶登錄管理 1 Controller1.1 UserManagementController.cs&#xff08;控制器入口&#xff09; 2 Model2.1 UserRepository.cs&#xff08;用戶管理模型&#xff09;2.2 User.cs&#xff08;用戶結構體&#xff09;2.3 SQLiteHelper.cs&#x…

自然語言處理(NLP)技術的實例

自然語言處理&#xff08;NLP&#xff09;技術在各個領域都有廣泛的應用&#xff0c;以下是幾個例子&#xff1a; 語音識別&#xff1a;通過NLP技術&#xff0c;計算機可以識別和理解語音指令&#xff0c;例如智能助手如Siri和Alexa就是通過語音識別技術實現與用戶的交互。 機…

Spring Boot實戰(三十六)編寫單元測試

目錄 一、什么是單元測試&#xff1f;二、Spring Boot 中的單元測試依賴三、舉例 Spring Boot 中不同層次的單元測試3.1 Service層3.2 Controller 層3.3 Repository層 四、Spring Boot 中 Mock、Spy 對象的使用4.1 使用Mock對象的背景4.2 什么是Mock對象&#xff0c;有哪些好處…

aws服務(四)文件存儲服務S3 介紹使用代碼集成

一、介紹 1、簡介 Amazon S3 是 Amazon Web Services 提供的一種對象存儲服務(Object Storage),用于在云中存儲和檢索任意數量的數據。它以高可用性、高擴展性和高持久性著稱,非常適合用來存儲網站資源、數據備份、日志文件、大數據、機器學習輸入輸出等。 2、主要特性 …

應用信息1.13.0發布

增加工具箱 增加啟動器功能 增加布局查看器 增加手動安裝和卸載應用 增加APK文件解析 增加應用多選功能 增加查看應用預裝版本 增加應用信息和ADB命令導出 修復其它問題... 百度下載&#xff1a;百度網盤 請輸入提取碼 提取碼&#xff1a;1234

【Vue3 實戰】插槽封裝與懶加載

一、為什么需要插槽&#xff1f;從一個面板組件說起 在電商首頁開發中&#xff0c;經常遇到這樣的場景&#xff1a; 「新鮮好物」「人氣推薦」同樣類型模塊都需要相同的標題欄&#xff0c;但內容區布局不同 這時候&#xff0c;插槽&#xff08;Slot&#xff09;就像一個「內容…

虛無隧穿產生宇宙(true nothing tunneling) 是誰提出的

是 亞歷克斯.維連金 英文名&#xff08;alex vilenkin 或者 Alexander Vilenkin)提出來的。 “虛無隧穿產生宇宙”&#xff08;true nothing tunneling&#xff09;這一概念并非一個標準的物理學術語&#xff0c;它更像是對某些現代宇宙學理論的描述&#xff0c;尤其是涉及宇宙…