Hadoop 及Spark 分散式HA運行環境搭建

来源:https://www.cnblogs.com/Jcloud/archive/2023/02/21/17140070.html
-Advertisement-
Play Games

本文旨在站在研發的角度上通過手動實踐搭建運行環境,文中不拖泥帶水過多講述基礎知識,結合Hadoop和Spark最新版本,幫助大家跟著步驟一步步實踐環境搭建。 ...


作者:京東物流 秦彪

工欲善其事必先利其器,在深入學習大數據相關技術之前,先手動從0到1搭建一個屬於自己的本地Hadoop和Spark運行環境,對於繼續研究大數據生態圈各類技術具有重要意義。本文旨在站在研發的角度上通過手動實踐搭建運行環境,文中不拖泥帶水過多講述基礎知識,結合Hadoop和Spark最新版本,幫助大家跟著步驟一步步實踐環境搭建。

1. 總體運行環境概覽

(1) 軟體包及使用工具版本介紹表:

技術名稱或工具名稱 版本 備註
Hadoop hadoop-3.3.4.tar.gz
VirtualBox 6.0.0 r127566 虛擬機,推薦
CentOS centos7.3
JDK jdk-8u212-linux-x64.tar.gz 1.8.0_111
Zookeeper zookeeper-3.6.tar.gz
FileZilla FileZilla_3.34.0 文件傳輸工具,推薦
MobaXterm MobaXterm_Portable_v10.9 SSH連接工具,推薦
Idea IDEA COMMUNITY 2019.1.4 代碼IDE開發工具,推薦

(2)環境部署與分佈介紹表:

主機名 IP 運行的進程
master 192.168.0.20 QuorumPeerMain、NameNode、DataNode、ResourceManager、NodeManager、JournalNode、DFSZKFailoverController、Master
slave1 192.168.0.21 QuorumPeerMain、NameNode、DataNode、ResourceManager、NodeManager、JournalNode、DFSZKFailoverController、Master、Worker
slave2 192.168.0.22 QuorumPeerMain、NameNode、DataNode、JournalNode、NodeManager、Worker

(3)進程介紹:(1表示進程存在,0表示不存在)

進程名 含義 master slave1 slave2
QuorumPeerMain ZK進程 1 1 1
NameNode Hadoop主節點 1 1 0
DataNode Hadoop數據節點 1 1 1
ResourceManager Yarn管理進程 1 1 0
NodeManager Yarn 工作進程 1 1 1
JournalNode NameNode同步進程 1 1 1
DFSZKFailoverController NameNode監控進程 1 1 0
Master Spark主節點 1 1 0
Worker Spark工作節點 1 1 1

2. 系統基礎環境準備

步驟1: 虛擬機中Linux系統安裝(略)

VirtualBox中安裝CentOS7操作系統

步驟2: CentOS7基礎配置

(1) 配置主機的hostname

命令: vim/etc/hostname

(2) 配置hosts, 命令vim /etc/hosts

(3) 安裝JDK

命令:

rpm -qa | grep java 查看是否有通過rpm方式安裝的java

java -version 查看當前環境變數下的java 版本

1) filezilla上傳安裝包,tar -zxvf
jdk-8u212-linux-x64.tar.gz 解壓

2) bin目錄的完整路徑:
/usr/local/jdk/jdk1.8.0_212/bin

3) vim /etc/profile 配置jdk環境變數

(4) 複製主機:

1)利用VirtualBox複製功能複製兩台主機

2)命令:vi
/etc/sysconfig/network-scripts/ifcfg-eth0,設置相應的網路信息

3)三台主機IP分別為: 192.168.0.20/21/22

(5) 配置三台主機ssh無密碼登錄(略)

(6) 安裝zookeeper

1) filezilla上傳安裝包,zookeeper-3.4.10.tar.gz 解壓

2) bin目錄的完整路徑:
/usr/local/zookeeper/zookeeper-3.4.10/bin

3) vim /etc/profile 配置jdk環境變數

4) zookeeper的配置文件修改,zookeeper-3.4.10/conf/

5) 執行命令從master節點複製配置到其他兩個節點

6) 每台機器zookeeper目錄下新建一個data目錄, data目錄下新建一個myid文件,master主機存放標識值1;slave1主機標識值為2;slave3主機標識值為3

7) 每台機器上命令:zkServer.sh start ,啟動ZK,進程名:QuorumPeerMain

3. Hadoop安裝與部署

3.1安裝Hadoop

1)filezilla上傳安裝包,hadoop-3.3.4.tar.gz 解壓

2)bin目錄的完整路徑: /usr/local/hadoop/hadoop-3.3.4/bin

3)vim /etc/profile 配置jdk環境變數

4) 修改配置文件共6個: hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml和workers

文件1: hadoop-env.sh; 增加jdk環境變數

文件2: core-site.xml; 配置臨時目錄及zookeeper信息

文件3: hdfs-site.xml; 配置hdfs信息

文件4: mapred-site.xml; 配置mapreduce和dfs許可權信息

文件5: yarn-site.xml; 配置yarn資源調度信息

文件6: worker文件存放當前的worker節點名,複製到每一個虛擬機中

3.2啟動Hadoop

1) 使用命令: hadoop-daemon.sh start journalnode 啟動journalnode 進程(每個節點執行)

2) 使用命令: hadoop-daemon.sh start namenode 啟動namenode 進程(master、slave1節點上執行)

3) 使用命令:hadoop-daemon.sh start datanode 在所有節點上啟動datanode 進程

4) 使用命令:start-yarn.sh 在master上啟動yarn

5) 使用命令: hdfs zkfc -formatZK 在ZK上生成ha節點

6) 使用命令: hadoop-daemon.sh start zkfc 啟動 DFSZKFailoverController進程,在master節點執行

a. 訪問HDFS的管理頁面

http://192.168.0.20:50070此處192.168.0.20為namenode節點的Active節點

http://192.168.0.21:50070 此處192.168.0.20為namenode節點的standby節點

3.3 驗證HDFS使用

使用命令:hdfs dfs -ls / 查看HDFS中文件

使用命令:hdfs dfs -mkdir /input 在HDFS上創建目錄

使用命令:hdfs dfs -put ./test.txt /input 將本地文件上傳到HDFS指定目錄

使用命令:hdfs dfs -get /input/test.txt ./tmp 將HDFS文件複製到本地目錄

使用命令:hdfs dfs -text /input/test.txt 查看HDFS上的文本文件

web端瀏覽HDFS目錄

3.4 驗證MapReduce的wordcount案例

(1)先通過命令將帶有文本內容的test2.txt文件上傳到HDFS

(2)對HDFS上test2.txt文件執行wordcount統計,結果放回HDFS新目錄,命令:

hadoop jar /usr/local/hadoop/hadoop-3.3.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount /input/test2.txt /out

4. Spark安裝與部署

4.1安裝Scala

(1)安裝scala

上傳scala壓縮包解壓,使用命令:

scala -version 查看當前環境變數下的scala 版本

(2)拷貝scala目錄和環境變數到其他兩台機器

使用命令:

scp -r /usr/local/scala root@slave1:/usr/local/

scp /etc/profile root@slave1:/etc/profile

4.2安裝Spark

(1)上傳spark壓縮包解壓,修改配置文件

命令: vim
/usr/local/spark/spark-3.3.1/conf/spark-env.sh

(2) 新建worker目錄,寫入master機器名稱

4.3啟動Spark

(1)在master的spark安裝目錄下啟動spark

命令:

cd /usr/local/spark/spark-3.3.1/sbin

./start-all.sh

(2)在slave1同樣目錄啟動master進程

命令:./start-master.sh

(3)訪問spark管理頁面ui

4.4 驗證Spark的wordcount案例

(1)執行命令:

cd /usr/local/spark/spark-3.3.1/bin

./spark-shell --master spark://master:7077

(3)從HDFS讀取數據執行自定義wordcount代碼,結果寫入HDFS,命令:

sc.textFile("hdfs://master:9000/input/test2.txt").flatMap(.split(" ")).map(word=>(word,1)).reduceByKey(+_).map(pair=>(pair._2,pair._1)).sortByKey(false).map(pair=>(pair._2,pair._1)).saveAsTextFile("hdfs://master:9000/spark_out")

(4)輸出結果:

5. 後記

大數據技術日新月異,得益於互聯網技術加持下的商業和工業模式變革。人們日益增長的對生活生產便捷性、數字化、智能化的需求,催生了數據爆炸式的增長,推動了大數據技術推陳出新。作為新時代的程式開發者,必須掌握一定的大數據基礎知識才能適應時代的要求,本文只是一個引子,從自身實踐的角度幫助初學者認識大數據,並基於此搭建自己屬於自己的開發環境,希望大家能夠在此基礎上繼續鑽研有所建樹。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今年開年,最火的莫過於ChatGPT的相關討論,這個提供了非常強大的AI處理,並且整個平臺也提供了很多對應的API進行接入的處理,使得我們可以在各種程式上無縫接入AI的後端處理,從而實現智能AI的各種應用。ChatGPT的API可以在前端,以及一些後端進行API的接入,本篇隨筆主要介紹基於ChatG... ...
  • 一、什麼時候需要用到NuGet私有伺服器 很多公司中架構師會搭建一個統一的項目基礎架構模板,然後全部新項目都會拿這個基礎架構來開發新的項目,那架構中就會有很多的中間件,比喻公司內部的封裝好的Redis中間件,訪問資料庫的中間件,MQ中間件,小程式中間件等等。 現在很多項目都用這個模板開發了,然後其中 ...
  • 概述 使用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。 在軟體系統開發中,有時候會遇到這樣的情況:我們需要用到多個相同實例,最簡單直接的方法是通過多次調用new方法來創建相同的實例。 student s=new student(); student s1=new student() ...
  • 一 背景 在我們的工作中我們經常有一種場景就是要使用到隊列,特別是對於這樣的一種情況:就是生產的速度明顯快於消費的速度,而且在多線程的環境下消息的生產由多個線程產生消息的消費則沒有這種限制,通過使用隊列這種方式能夠很大程度上將多線程的問題通過入隊的方式變成單個線程內的消息的聚合,然後通過單獨的線程進 ...
  • 對於openfoam或其他c++程式而言,文件的讀取是尤為重要的 我們最開始學習C++時,會學到類的初始化,或者是變數定義為某個值,再對某個值進行遍歷,,, 類似如下: 點擊查看代碼 #include <iostream> // 包含頭文件。 using namespace std; // 指定預設 ...
  • 需求:查看Windows某個文件夾所有一級子文件夾大小,並按照從大到小排序 解決方案:使用Powershell腳本 腳本內容如下 function filesize () { [string]$filepath =".\" $sortedlength = @{ } $sorted = @{ } if ...
  • CM4 Media是一款基於 Raspberry Pi / 樹莓派 Compute Module 4,由EDATEC設計的多媒體電腦。 SPECIFICATIONS 分類 特點 處理器 Broadcom BCM2711 quad-core Cortex-A72 (ARM v8) 64-bit SoC ...
  • 為什麼使用資料庫 使用資料庫主要原因有兩點: 為了方便我們長久的存儲數據 可以很方便的幫我們管理,查詢資料庫中的數據! 可以存儲各種各樣的數據類型,比如:字元串、數字、文件、圖片等等 資料庫的常用概念 DB:資料庫(Database) 即存儲數據的倉庫,其本質是一個文件系統。它保存了一系列有組織的數 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...