溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行spark 2.2.0 Standalone安裝及wordCount演示

發(fā)布時(shí)間:2021-12-17 12:00:11 來源:億速云 閱讀:144 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何進(jìn)行spark 2.2.0 Standalone安裝及wordCount演示,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。


前提:安裝好hadoop集群,

一、 scala 安裝

1、下載 scala 安裝包 :https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz

2、上傳 scala 安裝包 
[root@hadp-master local]# pwd
/usr/local
[root@hadp-master local]# ll scala-2.11.7.tgz 
-rw-r--r--. 1 root root 28460530 Feb 25 03:53 scala-2.11.7.tgz

3、 解壓并刪除安裝包
[root@hadp-master local]# tar -zxvf scala-2.11.7.tgz
[root@hadp-master local]# rm -rf scala-2.11.7.tgz

4、 配置環(huán)境變量
vi /etc/profile 添加如下

export SCALA_HOME=/usr/local/scala-2.11.7
export PATH=$PATH:$SCALA_HOME/bin

5、 生效,查看scala版本
[root@hadp-master local]# scala -version
Scala code runner version 2.11.7 -- Copyright 2002-2013, LAMP/EPFL

6、 其他主機(jī)配置scala環(huán)境

[root@hadp-master local]# scp -r /usr/local/scala-2.11.7/ hadp-node1:/usr/local/
[root@hadp-master local]# scp -r /usr/local/scala-2.11.7/ hadp-node2:/usr/local/
[root@hadp-master local]# scp -r /etc/profile hadp-node1:/etc/profile
profile 100% 2414 2.4KB/s 00:00 
[root@hadp-master local]# scp -r /etc/profile hadp-node2:/etc/profile
profile 100% 2414 2.4KB/s 00:00

二、 spark 安裝

1、 下載 spark 安裝包,上傳
[root@hadp-master local]# pwd
/usr/local
[root@hadp-master local]# ll spark-2.2.0-bin-hadoop2.7.tgz 
-rw-r--r--. 1 root root 203728858 Feb 25 04:20 spark-2.2.0-bin-hadoop2.7.tgz

2、 解壓
[root@hadp-master local]# tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz

3、 配置環(huán)境變量
vi /etc/profile 添加如下內(nèi)容
export SPARK_HOME=/usr/local/spark-2.2.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin

4、配置Spark環(huán)境
[root@hadp-master local]# cd spark-2.2.0-bin-hadoop2.7/conf/
[root@hadp-master conf]# ll
total 32
-rw-r--r--. 1 500 500 996 Jul 1 2017 docker.properties.template
-rw-r--r--. 1 500 500 1105 Jul 1 2017 fairscheduler.xml.template
-rw-r--r--. 1 500 500 2025 Jul 1 2017 log4j.properties.template
-rw-r--r--. 1 500 500 7313 Jul 1 2017 metrics.properties.template
-rw-r--r--. 1 500 500 865 Jul 1 2017 slaves.template
-rw-r--r--. 1 500 500 1292 Jul 1 2017 spark-defaults.conf.template
-rwxr-xr-x. 1 500 500 3699 Jul 1 2017 spark-env.sh.template

4.1
[root@hadp-master conf]# cp spark-env.sh.template spark-env.sh
[root@hadp-master conf]# vi spark-env.sh 末尾添加如下:

export JAVA_HOME=/usr/local/jdk1.8.0_131

export SCALA_HOME=/usr/local/scala-2.11.7

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.4/

export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.7.4/etc/hadoop

export SPARK_MASTER_IP=hadp-master

export SPARK_WORKER_MEMORY=1g

export SPARK_WORKER_CORES=2

export SPARK_WORKER_INSTANCES=1

變量說明 
- JAVA_HOME:Java安裝目錄 
- SCALA_HOME:Scala安裝目錄 
- HADOOP_HOME:hadoop安裝目錄 
- HADOOP_CONF_DIR:hadoop集群的配置文件的目錄 
- SPARK_MASTER_IP:spark集群的Master節(jié)點(diǎn)的ip地址 
- SPARK_WORKER_MEMORY:每個worker節(jié)點(diǎn)能夠最大分配給exectors的內(nèi)存大小 
- SPARK_WORKER_CORES:每個worker節(jié)點(diǎn)所占有的CPU核數(shù)目 
- SPARK_WORKER_INSTANCES:每臺機(jī)器上開啟的worker節(jié)點(diǎn)的數(shù)目

4.2 
[root@hadp-master conf]# cp slaves.template slaves
[root@hadp-master conf]# vi slaves 添加如下
# A Spark Worker will be started on each of the machines listed below.
hadp-node1
hadp-node2

4.3 
[root@hadp-master local]# scp -r spark-2.2.0-bin-hadoop2.7/ hadp-node1:/usr/local
[root@hadp-master local]# scp -r spark-2.2.0-bin-hadoop2.7/ hadp-node2:/usr/local
[root@hadp-master local]# scp /etc/profile hadp-node1:/etc/
profile 100% 2492 2.4KB/s 00:00 
[root@hadp-master local]# scp /etc/profile hadp-node2:/etc/
profile 100% 2492 2.4KB/s 00:00

5、啟動Spark集群
5.1
因?yàn)槲覀冎恍枰褂胔adoop的HDFS文件系統(tǒng),所以我們并不用把hadoop全部功能都啟動。
[root@hadp-master sbin]# pwd
/usr/local/hadoop/hadoop-2.7.4/sbin
[root@hadp-master sbin]# ./start-dfs.sh 
Starting namenodes on [hadp-master]
hadp-master: starting namenode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-root-namenode-hadp-master.out
hadp-node2: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-root-datanode-hadp-node2.out
hadp-node1: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-root-datanode-hadp-node1.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/hadoop-2.7.4/logs/hadoop-root-secondarynamenode-hadp-master.out
[root@hadp-master sbin]# jps
4914 NameNode
5235 Jps
5082 SecondaryNameNode

5.2
[root@hadp-master sbin]# pwd
/usr/local/spark-2.2.0-bin-hadoop2.7/sbin
[root@hadp-master sbin]# ./start-all.sh 
starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark-2.2.0-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-hadp-master.out
hadp-node1: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark-2.2.0-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadp-node1.out
hadp-node2: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark-2.2.0-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadp-node2.out
[root@hadp-master sbin]# jps
4914 NameNode
5301 Master
5369 Jps
5082 SecondaryNameNode

[root@hadp-node1 scala-2.11.7]# jps
4305 DataNode
4451 Worker
4500 Jps

[root@hadp-node2 ~]# jps
4444 Worker
4301 DataNode
4494 Jps

-- 進(jìn)入Spark的WebUI界面
http://10.100.25.30:8080/

-- 進(jìn)入 Spark-shell
[root@hadp-master sbin]# spark-shell
Welcome to version 2.2.0


Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131)
Type in expressions to have them evaluated.
Type :help for more information.

scala>

文本文件中隨意輸入一些單詞,用空格隔開,我們會編寫Spark程序?qū)υ撐募M(jìn)行單詞詞頻統(tǒng)計(jì)。
[root@hadp-master ~]# cat workCount.txt 
andy leaf
andy taozi
andy leaf
andy hello

[root@hadp-master ~]# hadoop fs -put workCount.txt /tmp
[root@hadp-master ~]# hadoop fs -ls /tmp
Found 3 items
drwx------ - root supergroup 0 2018-02-01 05:48 /tmp/hadoop-yarn
drwx-wx-wx - root supergroup 0 2018-02-25 05:08 /tmp/hive
-rw-r--r-- 1 root supergroup 42 2018-02-25 06:05 /tmp/workCount.txt
[root@hadp-master ~]# hadoop fs -cat /tmp/workCount.txt
andy leaf
andy taozi
andy leaf
andy hello

詞頻統(tǒng)計(jì)

scala> val textFile = sc.textFile("hdfs://hadp-master:9000/tmp/workCount.txt")
scala> val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
scala> wordCount.collect()
res0: Array[(String, Int)] = Array((leaf,2), (andy,4), (hello,1), (taozi,1))

上面只給出了代碼,省略了執(zhí)行過程中返回的結(jié)果信息,因?yàn)榉祷匦畔⒑芏唷?br/>下面簡單解釋一下上面的語句。
textFile包含了多行文本內(nèi)容,textFile.flatMap(line => line.split(” “))會遍歷textFile中的每行文本內(nèi)容,當(dāng)遍歷到其中一行文本內(nèi)容時(shí),會把文本內(nèi)容賦值給變量line,并執(zhí)行Lamda表達(dá)式line => line.split(” “)。line => line.split(” “)是一個Lamda表達(dá)式,左邊表示輸入?yún)?shù),右邊表示函數(shù)里面執(zhí)行的處理邏輯,這里執(zhí)行l(wèi)ine.split(” “),也就是針對line中的一行文本內(nèi)容,采用空格作為分隔符進(jìn)行單詞切分,從一行文本切分得到很多個單詞構(gòu)成的單詞集合。這樣,對于textFile中的每行文本,都會使用Lamda表達(dá)式得到一個單詞集合,最終,多行文本,就得到多個單詞集合。textFile.flatMap()操作就把這多個單詞集合“拍扁”得到一個大的單詞集合。

然后,針對這個大的單詞集合,執(zhí)行map()操作,也就是map(word => (word, 1)),這個map操作會遍歷這個集合中的每個單詞,當(dāng)遍歷到其中一個單詞時(shí),就把當(dāng)前這個單詞賦值給變量word,并執(zhí)行Lamda表達(dá)式word => (word, 1),這個Lamda表達(dá)式的含義是,word作為函數(shù)的輸入?yún)?shù),然后,執(zhí)行函數(shù)處理邏輯,這里會執(zhí)行(word, 1),也就是針對輸入的word,構(gòu)建得到一個tuple,形式為(word,1),key是word,value是1(表示該單詞出現(xiàn)1次)。
程序執(zhí)行到這里,已經(jīng)得到一個RDD,這個RDD的每個元素是(key,value)形式的tuple。最后,針對這個RDD,執(zhí)行reduceByKey((a, b) => a + b)操作,這個操作會把所有RDD元素按照key進(jìn)行分組,然后使用給定的函數(shù)(這里就是Lamda表達(dá)式:(a, b) => a + b),對具有相同的key的多個value進(jìn)行reduce操作,返回reduce后的(key,value),比如(“hadoop”,1)和(“hadoop”,1),具有相同的key,進(jìn)行reduce以后就得到(“hadoop”,2),這樣就計(jì)算得到了這個單詞的詞頻。

上述內(nèi)容就是如何進(jìn)行spark 2.2.0 Standalone安裝及wordCount演示,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI