spark 廣播變量大數據_大數據處理 | Spark集群搭建及基本使用

b6d32de918ef27ddd15d8e14d30f74fe.png

點擊藍字關注我

b6d32de918ef27ddd15d8e14d30f74fe.png

前面用了一篇文章詳細的介紹了集群HDFS文件系統的搭建,HDFS文件系統只是一個用于存儲數據的系統,它主要是用來服務于大數據計算框架,例如MapReduce、Spark,本文就接著上一篇文章來詳細介紹一下Spark集群的搭建及Spark的運行原理、運行模式。

—▼—

Spark集群環境搭建

f80c39b282969640673abdb24b046602.png

如果已經理解了前文Hadoop集群環境的搭建,那么學習Spark集群環境的搭建會容易很多,因為Hadoop和Spark不僅安裝包目錄結構非常相似,在配置方面也十分接近。均是在master節點上進行所有配置,然后打包復制到每個slave節點,然后啟動集群Spark即可,下面就來詳細介紹一下Spark集群環境的搭建。

下載安裝

bc7645a9f3d75d5602e343b99d35f65c.png

進入Spark的下載目錄,

https://spark.apache.org/downloads.html

可以看到Spark分多個版本,有基于Hadoop構建好的,有沒基于Hadoop構建的,有基于Hadoop2.6之前版本構建的,也有基于Hadoop2.7以后版本構建的,由于前面講解Hadoop集群環境搭建時采用的是Hadoop 3.2.1,因此,而且本文需要使用HDFS依賴Hadoop,因此需要下載Pre-built for Apache Hadoop 2.7 and later,

把spark-2.4.4-bin-hadoop2.7.tgz文件下載到home路徑下,然后解壓到指定目錄,

$?tar?-zxvf?~/spark-2.4.4-bin-hadoop2.7.tgz?-C?/usr/local/

然后進入目錄并像Hadoop那樣,修改Spark目錄的擁有者,

$?cd?/usr/local$?sudo?mv?./spark-2.4.4-bin-hadoop2.7?./spark$?sudo?chowm?-R?user_name?./spark

配置環境變量

修改bashrc,配置環境變量,把Spark的bin和sbin路徑加入到環境變量,

$?vim?~/.bashrcexport?SPARK_HOME=/usr/local/sparkexport?PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbinexport?PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATHexport?PYSPARK_PYTHON=python3

Master節點配置

進入Spark目錄,修改spark-env.sh文件,

$?cd?/usr/local/spark$?vim?./conf/spark-env.sh

在spark-env.sh中添加下面內容,

export?SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop?classpath)export?HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoopexport?SPARK_MASTER_IP=10.110.113.132

SPARK_MASTER_IP指定的是master節點的IP,后面啟動集群Spark時slave節點會注冊到SPARK_MASTER_IP,如果這一項不配置,Spark集群則沒有可使用資源,

修改slaves文件

配置完master節點信息之后需要配置slave節點信息,slave節點的信息配置在slaves文件里,由于Spark目錄下沒有這個文件,因此需要首先從slaves.template拷貝一下,

$?cd?/usr/local/spark/$?cp?./conf/slaves.template?./conf/slaves

然后添加如下內容,

slave0slave0slave1

需要注意的是,slaves文件里配置的是運行作業任務的節點(worker),這樣的話master的節點只作為控制節點,而不作為工作節點,如果需要把master節點的資源也充分利用起來,需要把master節點也加入到slaves文件中。

slave節點配置

首先在master節點上把配制好的目錄進行打包,拷貝到每個slave節點上,

$?cd?/usr/local$?tar?-zcf?~/spar.tar.gz?./spark$?scp?~/spark/tar.gz?slave0:~/$?scp?~/spark/tar.gz?slave1:~/$?scp?~/spark/tar.gz?slave2:~/

然后在每個slave節點上執行下方命令,把文件解壓到相應路徑下,

$?sudo?rm?-rf?/usr/local/spark$?sudo?tar?-zxvf?~/spark.tar.gz?-C?/usr/local$?sudo?chown?-R?user_name?/usr/local/spark

這樣就完成了slave節點的配置。

啟動Spark集群

如果要使用HDFS的話,在啟動Spark集群前需要先啟動Hadoop集群,

$?cd?/usr/local/hadoop/$?./sbin/start-all.sh

然后進入Spark目錄,啟動Spark集群,

$?cd?/usr/local/spark$?./sbin/start-all.sh

需要說明一下,前面配置Hadoop集群是提到,需要配置ssh免密登陸,對于Spark也是同樣的道理,如果不配置ssh免密登陸的話,執行./sbin/start-all.sh會提示輸入密碼。

除了使用./sbin/start-all.sh啟動Spark集群外,還可以分開啟動,先啟動master節點,然后啟動slave節點,

$?./sbin/start-master.sh$?./sbin/start-slaves.sh

如果前面沒有完成Master節點配置指定master節點IP,那么執行./sbin/start-slaves.sh時則無法注冊master節點的IP,這樣集群計算資源則無法使用。除了配置spark-env.sh指定master節點IP外,還可以通過下面方式指定注冊的master節點IP,

$?./sbin/start-slave.sh?10.110.113.132

然后分別在master節點和slave節點執行下面命令會看到分別多出一個Master進程和Worker進程。

Spark基本使用

運行原理

如果使用過tensorflow的話,應該對Spark的使用很容易理解,Spark的計算過程和tensorflow有相似之處。

回憶一下,我們在使用tensorflow時需要首先構造一個計算圖,然后實例化一個session,然后用session.run來啟動圖運算。

其實Spark也是這樣,RDD(彈性分布式數據集)是Spark中最重要的概念之一,它提供了一個共享內存模型。Saprk的執行過程中主要包括兩個動作:轉換與行動。其中轉換操作就如同tensorflow中的構造計算圖的過程,在這個過程中Spark構造一個有向無環圖(DAG),但是不進行運算,輸入為RDD輸出則是一個不同的RDD,當執行行動操作時就如同tensorflow中的session.run,開始執行運算。

Spark中有很多轉換操作,例如,

  • groupByKey

  • reduceByKey

  • sortByKey

  • map

  • filter

  • join

  • ……

行動操作包括,

  • count

  • collect

  • first

  • foreach

  • reduce

  • take

  • ……

運行模式

Spark中通過master url來執行Spark的運行模式,Spark的運行模式包括本地運行、集群運行、yarn集群等,關于Spark master url的指定不同運行模式的含義如下,

URL值運行模式
local使用1個線程本地化運行
local[K]使用K個線程本地化運行
local[*]使用邏輯CPU個數數量的線程來本地化運行
spark://HOST:PORT指定集群模式運行Spark
yarn-cluster集群模式連接YARN集群
yarn-client客戶端模式連接YARN集群
mesos://HOST:PORT連接到指定的Mesos集群

示例

下面就以一個簡單的示例把前面Hadoop和Spark串聯在一起,講解一下HDFS+Spark的使用方法。上傳數據到HDFS新建一個hello_world.txt的本地文件,并在文件中添加3行hello world,然后上傳至HDFS,
$?cd?/usr/local/hadoop/$?./bin/hdfs?dfs?-mkdir?-p?/usr/hadoop$?touch?hello_world.txt$?echo?-e?"hello?world?\nhello?world?\nhello?world"?>>?hello_world.txt$?./bin/hdfs?dfs?-put?./hello_world.txt?/usr/hadoop
編寫Spark程序新建一個spark.py的Python文件,
$?vim?spark.py
添加如下內容,
from?pyspark?import?SparkConffrom?pyspark?import?SparkContextconf?=?SparkConf().setAppName("FirstProject").setMaster("local[*]")sc?=?SparkContext.getOrCreate(conf)rdd?=?sc.textFile("hdfs:///master:9000/usr/hadoop/hello_world.txt")rdd.map(lambda?line:?line).foreach(print)
然后運行程序,
$?python?spark.pyhello?worldhello?worldhello?world
以上就是Spark的集群配置過程和基本使用方法。

END

dbb1fd1e0a7f10847423e8bbde4e04b3.png9b2379221a87ba817904f3b6251b0b6d.png有趣的靈魂在等你

長按掃碼可關注?

相關文章效率工具 | 推薦一款提高Python編程效率的神器實用工具 | 推薦5款值得安裝的Windows工具學習資源 | 推薦2份Github熱門校招面試匯總資料文章好看就點這里3779be1dc1c800d6d1a909908c753498.gif

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

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

相關文章

如何將本地項目上傳到gitee

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 如果以上內容對你覺得有用,并想獲取更多的賺錢方式和免費的技術教程 請關注微信公眾號:HB荷包 一個能讓你學習技術和賺錢方法的公眾號,持續更…

oracle dg 備庫未設置convert參數導致ORA-01111,ORA-01110

2019獨角獸企業重金招聘Python工程師標準>>> 查看trace 文件: MRP0: Background Managed Standby Recovery process started (amls) started logmerger process Sun Jan 20 07:55:53 2019 Managed Standby Recovery starting Real Time Apply MRP0: Back…

git回退歷史版本無法上傳_Git系列教程(二):版本庫中添加文件、版本回退

Git系列教程(一):簡介、安裝、配置我們學習了分布式和版本控制系統的概念、Git具有的8個功能以及如何在Windows上安裝Git、進行相關配置并創建版本庫。Git版本庫中添加文件Git 的工作就是創建和保存你的項目的快照及與之后的快照進行對比。我們編寫一個readme.txt文…

nginx反向代理配置如何去除前綴

使用nginx做反向代理的時候,可以簡單的直接把請求原封不動的轉發給下一個服務。設置proxy_pass請求只會替換域名,如果要根據不同的url后綴來訪問不同的服務,則需要通過如下方法: 方法一:加"/"** server {l…

「作文素材詳解」寫作必知篇:語言優美不是作文第一要求

語言優美不是作文第一要求“教孩子寫作文,老師家長應該先提升自己。”“語言優美不是作文的第一要求。”“如果教孩子寫漂亮的違心話,會害了他一輩子。”日前,著名作家肖復興來到體育東路小學,與廣州的一線語文教師交流&#xff0…

華為安裝gsm框架_華為nova5怎么下載安裝谷歌服務助手,安裝GMS框架教程

看到不少的華為nova5用戶喜歡這個谷歌服務助手,也就是想安裝這個GMS框架,可是一直不知道如何下載安裝,這個谷歌服務框架是可以在系統軟件里面可以刪除的一個APK程序,但現在有很多的軟件和游戲需要谷歌服務的支持,那咱們…

VMware安裝虛擬機并使用NAT模式連接網絡

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 如果以上內容對你覺得有用,并想獲取更多的賺錢方式和免費的技術教程 請關注微信公眾號:HB荷包 一個能讓你學習技術和賺錢方法的公眾號,持續更…

PHPStudy下Apache SSL證書安裝教程

一、安裝SSL證書的環境 Apache安裝目錄:E:phpStudyPHPTutorialApache 以上為windows下測試SSL證書安裝的目錄,具體目錄請根據自己的實際環境! 二、獲取SSL證書 成功在沃通申請SSL證書后,會得到一個壓縮包文件,解壓后得到四個文件&…

laravel 集成采集_新版2020 Laravel采集網站程序

環境:php5.6數據庫:mysql5.5集成環境軟件:護衛神apache這套程序是520.ag 的網站很早的程序了是去年還是前年 應該是前年免費采集網站 但是經常掛 其實他網站掛和服務器沒有多大關系 是程序沒有作好優化這套程序可以大家做起來 自己用就可以了 放出去免費采集的話 網站容易死程…

詳解模板方法設計模式

分享一波:程序員賺外快-必看的巔峰干貨 概念 定義一個操作中的算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的重復代碼全部在父類里面,不同業務的,使用抽象方法,抽取給子類進…

怎么從已有文件中挑選需要的文字重新生成新文件_CAD問題全面解答(幾乎涵蓋了CAD使用的全部問題)...

1.【CTrlN無效時之解決辦法】眾所周知CTRLN是新建命令但有時候CTRLN則出現選擇面板這時只需到OP選項里調下設置操作:OP(選項)------系統-------右側有一個啟動(A顯示啟動對話框B不顯示啟動對話框)選擇A則新建命令有效,反則無效2.【Ctrl鍵無效之解決辦法】…

中國官方要求進一步加強中資商業銀行境外機構合規管理

中新社北京1月22日電 (記者 王恩博)為推動在境外設有經營性機構的中資商業銀行進一步優化集團合規管理體系,健全跨境合規管理機制,提高跨境合規管理有效性,實現境外機構安全穩健運行,中國銀保監會22日發布《關于加強中資商業銀行境…

詳解:設計模式之-代理設計

分享一波:程序員賺外快-必看的巔峰干貨 概念 通過代理控制對象的訪問,可以詳細訪問某個對象的方法,在這個方法調用處理,或調用后處理(類似于AOP)。 代理設計模式應用場景:AOP、權限控制、事務 常見代理的分類有&am…

【實時+排重】擺脫渠道統計刷量作弊行為

如今的渠道統計不僅要看精準度,更要看數據的真實性。 對App的推廣業務而言,渠道監測和統計是必不可少的環節,不論以什么形式開展推廣,終究都要具體落實到App的安裝量、激活量等指標上。但在如今數據刷量和作假行為橫行的背景下&am…

python清空idle的內容_Python IDLE清空窗口的實例

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技術人對外發布原創技術內容的最大平臺&…

詳解:設計模式之-單例設計模式

分享一波:程序員賺外快-必看的巔峰干貨 前言 近期預計1-2周左右會更新設計模式專題文章。 單例設計模式:保證在一個JVM中,只能存在一個實例。 應用場景:Servlet,Spring IOC,線程池,連接池,S…

rabbitmq可靠性投遞_阿里Java研發二面:了解RabbitMQ?說說RabbitMQ可靠性投遞

上期寫到高并發下RabbitMq消息中間件你應該介么玩今天給小伙伴說說!有自己看法的也可以在評論區留言探討,也可以轉發關注下我以后會長期分享!目錄:確保消息發送到RabbitMQ服務器確保消息被正確的路由確保消息在隊列正確地存儲確保…

IBM發布Open Liberty 18.0.0.4,支持MicroProfile 2.1和反應性擴展框架

IBM在2018年第四季度發布的Open Liberty 18.0.0.4提供了對MicroProfile 2.1、反應性擴展框架和連接池指標的全面支持。根據發布說明:Open Liberty現在對JAX-RS 2.1進行了反應性擴展,這樣你就可以使用來自Apache CXF和Jersey的提供程序。在ops方面&#x…

b700a怎么連藍牙_233621藍牙2.1無線音箱B700A小測

隨著藍牙技術的發展,使用藍牙的相關產品也越來越多,各種藍牙耳機、藍牙鍵盤、藍牙鼠標都讓我們的外設擺脫了線材的束縛。小編之前也介紹過一款便攜藍牙音箱,也評測過一款藍牙耳機,而今天拿到的是一款采用藍牙2.1技術,造…

詳解:設計模式之-適配器模式

分享一波:程序員賺外快-必看的巔峰干貨 簡介 在設計模式中,適配器模式有時候也稱包裝樣式或者包裝。將一個類的接口轉接成用戶所期待的。一個適配使得因接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已存在的類中。 分類 …