日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实时计算框架:Spark集群搭建与入门案例

發布時間:2025/3/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实时计算框架:Spark集群搭建与入门案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Spark概述

1、Spark簡介

Spark是專為大規模數據處理而設計的,基于內存快速通用,可擴展的集群計算引擎,實現了高效的DAG執行引擎,可以通過基于內存來高效處理數據流,運算速度相比于MapReduce得到了顯著的提高。

2、運行結構

Driver

運行Spark的Applicaion中main()函數,會創建SparkContext,SparkContext負責和Cluster-Manager進行通信,并負責申請資源、任務分配和監控等。

ClusterManager

負責申請和管理在WorkerNode上運行應用所需的資源,可以高效地在一個計算節點到數千個計算節點之間伸縮計算,目前包括Spark原生的ClusterManager、ApacheMesos和HadoopYARN。

Executor

Application運行在WorkerNode上的一個進程,作為工作節點負責運行Task任務,并且負責將數據存在內存或者磁盤上,每個 Application都有各自獨立的一批Executor,任務間相互獨立。

二、環境部署

1、Scala環境

安裝包管理

[root@hop01 opt]# tar -zxvf scala-2.12.2.tgz [root@hop01 opt]# mv scala-2.12.2 scala2.12

配置變量

[root@hop01 opt]# vim /etc/profileexport SCALA_HOME=/opt/scala2.12 export PATH=$PATH:$SCALA_HOME/bin[root@hop01 opt]# source /etc/profile

版本查看

[root@hop01 opt]# scala -version

Scala環境需要部署在Spark運行的相關服務節點上。

2、Spark基礎環境

安裝包管理

[root@hop01 opt]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz [root@hop01 opt]# mv spark-2.1.1-bin-hadoop2.7 spark2.1

配置變量

[root@hop01 opt]# vim /etc/profileexport SPARK_HOME=/opt/spark2.1 export PATH=$PATH:$SPARK_HOME/bin[root@hop01 opt]# source /etc/profile

版本查看

[root@hop01 opt]# spark-shell

3、Spark集群配置

服務節點

[root@hop01 opt]# cd /opt/spark2.1/conf/ [root@hop01 conf]# cp slaves.template slaves [root@hop01 conf]# vim slaveshop01 hop02 hop03

環境配置

[root@hop01 conf]# cp spark-env.sh.template spark-env.sh [root@hop01 conf]# vim spark-env.shexport JAVA_HOME=/opt/jdk1.8 export SCALA_HOME=/opt/scala2.12 export SPARK_MASTER_IP=hop01 export SPARK_LOCAL_IP=安裝節點IP export SPARK_WORKER_MEMORY=1g export HADOOP_CONF_DIR=/opt/hadoop2.7/etc/hadoop

注意SPARK_LOCAL_IP的配置。

4、Spark啟動

依賴Hadoop相關環境,所以要先啟動。

啟動:/opt/spark2.1/sbin/start-all.sh 停止:/opt/spark2.1/sbin/stop-all.sh

這里在主節點會啟動兩個進程:Master和Worker,其他節點只啟動一個Worker進程。

5、訪問Spark集群

默認端口是:8080。

http://hop01:8080/

運行基礎案例:

[root@hop01 spark2.1]# cd /opt/spark2.1/ [root@hop01 spark2.1]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master local examples/jars/spark-examples_2.11-2.1.1.jar運行結果:Pi is roughly 3.1455357276786384

三、開發案例

1、核心依賴

依賴Spark2.1.1版本:

<dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.1.1</version> </dependency>

引入Scala編譯插件:

<plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>3.2.2</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions> </plugin>

2、案例代碼開發

讀取指定位置的文件,并輸出文件內容單詞統計結果。

@RestController public class WordWeb implements Serializable {@GetMapping("/word/web")public String getWeb (){// 1、創建Spark的配置對象SparkConf sparkConf = new SparkConf().setAppName("LocalCount").setMaster("local[*]");// 2、創建SparkContext對象JavaSparkContext sc = new JavaSparkContext(sparkConf);sc.setLogLevel("WARN");// 3、讀取測試文件JavaRDD lineRdd = sc.textFile("/var/spark/test/word.txt");// 4、行內容進行切分JavaRDD wordsRdd = lineRdd.flatMap(new FlatMapFunction() {@Overridepublic Iterator call(Object obj) throws Exception {String value = String.valueOf(obj);String[] words = value.split(",");return Arrays.asList(words).iterator();}});// 5、切分的單詞進行標注JavaPairRDD wordAndOneRdd = wordsRdd.mapToPair(new PairFunction() {@Overridepublic Tuple2 call(Object obj) throws Exception {//將單詞進行標記:return new Tuple2(String.valueOf(obj), 1);}});// 6、統計單詞出現次數JavaPairRDD wordAndCountRdd = wordAndOneRdd.reduceByKey(new Function2() {@Overridepublic Object call(Object obj1, Object obj2) throws Exception {return Integer.parseInt(obj1.toString()) + Integer.parseInt(obj2.toString());}});// 7、排序JavaPairRDD sortedRdd = wordAndCountRdd.sortByKey();List<Tuple2> finalResult = sortedRdd.collect();// 8、結果打印for (Tuple2 tuple2 : finalResult) {System.out.println(tuple2._1 + " ===> " + tuple2._2);}// 9、保存統計結果sortedRdd.saveAsTextFile("/var/spark/output");sc.stop();return "success" ;} }

打包執行結果:

查看文件輸出:

[root@hop01 output]# vim /var/spark/output/part-00000

四、源代碼地址

GitHub·地址 https://github.com/cicadasmile/big-data-parent GitEE·地址 https://gitee.com/cicadasmile/big-data-parent

閱讀標簽

【Java基礎】【設計模式】【結構與算法】【Linux系統】【數據庫】

【分布式架構】【微服務】【大數據組件】【SpringBoot進階】【Spring&Boot基礎】

【數據分析】【技術導圖】【 職場】

技術系列

OLAP引擎:Druid組件進行數據統計分析

OLAP引擎:Presto組件跨數據源分析

OLAP引擎:ClickHouse高性能列式查詢

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的实时计算框架:Spark集群搭建与入门案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。