spark之 spark 2.2.0 Standalone安裝、wordCount演示
說明:前提安裝好hadoop叢集,可參考 http://blog.csdn.net/zhang123456456/article/details/77621487
一、 scala 安裝
1、下載 scala 安裝包 :
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、 配置環境變數
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、 其他主機配置scala環境
[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、 配置環境變數
vi /etc/profile 新增如下內容
export SPARK_HOME=/usr/local/spark-2.2.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
4、配置Spark環境
[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節點的ip地址
- SPARK_WORKER_MEMORY:每個worker節點能夠最大分配給exectors的記憶體大小
- SPARK_WORKER_CORES:每個worker節點所佔有的CPU核數目
- SPARK_WORKER_INSTANCES:每臺機器上開啟的worker節點的數目
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
因為我們只需要使用hadoop的HDFS檔案系統,所以我們並不用把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
-- 進入Spark的WebUI介面
-- 進入 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程式對該檔案進行單詞詞頻統計。
[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
詞頻統計
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))
上面只給出了程式碼,省略了執行過程中返回的結果資訊,因為返回資訊很多。
下面簡單解釋一下上面的語句。
textFile包含了多行文字內容,textFile.flatMap(line => line.split(” “))會遍歷textFile中的每行文字內容,當遍歷到其中一行文字內容時,會把文字內容賦值給變數line,並執行Lamda表示式line => line.split(” “)。line => line.split(” “)是一個Lamda表示式,左邊表示輸入引數,右邊表示函式里面執行的處理邏輯,這裡執行line.split(” “),也就是針對line中的一行文字內容,採用空格作為分隔符進行單詞切分,從一行文字切分得到很多個單詞構成的單詞集合。這樣,對於textFile中的每行文字,都會使用Lamda表示式得到一個單詞集合,最終,多行文字,就得到多個單詞集合。textFile.flatMap()操作就把這多個單詞集合“拍扁”得到一個大的單詞集合。
然後,針對這個大的單詞集合,執行map()操作,也就是map(word => (word, 1)),這個map操作會遍歷這個集合中的每個單詞,當遍歷到其中一個單詞時,就把當前這個單詞賦值給變數word,並執行Lamda表示式word => (word, 1),這個Lamda表示式的含義是,word作為函式的輸入引數,然後,執行函式處理邏輯,這裡會執行(word, 1),也就是針對輸入的word,構建得到一個tuple,形式為(word,1),key是word,value是1(表示該單詞出現1次)。
程式執行到這裡,已經得到一個RDD,這個RDD的每個元素是(key,value)形式的tuple。最後,針對這個RDD,執行reduceByKey((a, b) => a + b)操作,這個操作會把所有RDD元素按照key進行分組,然後使用給定的函式(這裡就是Lamda表示式:(a, b) => a + b),對具有相同的key的多個value進行reduce操作,返回reduce後的(key,value),比如(“hadoop”,1)和(“hadoop”,1),具有相同的key,進行reduce以後就得到(“hadoop”,2),這樣就計算得到了這個單詞的詞頻。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2151225/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- spark2.2.0 配置spark sql 操作hiveSparkSQLHive
- SPARK 安裝之scala 安裝Spark
- Spark開發-Standalone模式Spark模式
- 【Spark篇】--Spark中Standalone的兩種提交模式Spark模式
- Spark 叢集搭建從零開始之3 Spark Standalone叢集安裝、配置與測試Spark
- Spark Standalone模式 高可用部署Spark模式
- 初學Spark——關於安裝SparkSpark
- 部署spark2.2叢集(standalone模式)Spark模式
- spark 2.1.0 standalone模式配置&&打包jar包透過spark-submit提交Spark模式JARMIT
- Spark開發-WordCount詳細講解Spark
- Spark安裝與配置Spark
- Spark之spark shellSpark
- 深入理解Spark 2.1 Core (五):Standalone模式Spark模式
- Windows上搭建Standalone模式的Spark環境Windows模式Spark
- Spark Standalone模式 Master程式掛掉問題Spark模式AST
- 1.Spark學習(Python版本):Spark安裝SparkPython
- Spark開發-WordCount流程詳細講解Spark
- Apache Spark技術實戰之3 -- Spark Cassandra Connector的安裝和使用ApacheSpark
- CDH 5.13.0安裝Spark 2.2Spark
- 檢視spark程式執行狀態以及安裝sparkSpark
- Spark報錯(二):關於Spark-Streaming官方示例wordcount執行異常Spark
- Spark開發-WordCount詳細講解Java版本SparkJava
- Spark 安裝部署與快速上手Spark
- Windows 10 安裝Spark2.1WindowsSpark
- Spark程式設計環境搭建及WordCount例項Spark程式設計
- Spark 叢集搭建從零開始之2 Spark單機偽分散式安裝與配置Spark分散式
- Spark 系列(九)—— Spark SQL 之 Structured APISparkSQLStructAPI
- CentOS6.5 安裝Spark叢集CentOSSpark
- IDEA WordCount jar包上傳spark除錯及排錯IdeaJARSpark除錯
- 通過WordCount解析Spark RDD內部原始碼機制Spark原始碼
- spark學習之-----spark程式設計模型Spark程式設計模型
- Spark從入門到放棄——Spark2.4.7安裝和啟動(二)Spark
- 單個虛擬機器安裝spark虛擬機Spark
- 本地windows搭建spark環境,安裝與詳細配置(jdk安裝與配置,scala安裝與配置,hadoop安裝與配置,spark安裝與配置)WindowsSparkJDKHadoop
- Spark(十三) Spark效能調優之RDD持久化Spark持久化
- Apache Spark技術實戰之5 -- SparkR的安裝及使用ApacheSpark
- Spark之HiveSupport連線(spark-shell和IDEA)SparkHiveIdea
- spark基礎之spark streaming的checkpoint機制Spark