小編給大家分享一下Spark如何安裝、配置及基礎(chǔ)使用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
我們提供的服務(wù)有:網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、犍為ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的犍為網(wǎng)站制作公司
此主題介紹Spark的安裝、配置及基礎(chǔ)使用。
Spark基本信息
官網(wǎng):http://spark.apache.org/ 官方教程:http://spark.apache.org/docs/latest/programming-guide.html
# 切換到工作空間 cd /opt/workspaces # 創(chuàng)建Spark數(shù)據(jù)目錄 mkdir data/spark # 創(chuàng)建Spark日志目錄 mkdir logs/spark
官方教程 http://spark.apache.org/docs/latest/spark-standalone.html |
wget http://mirrors.hust.edu.cn/apache/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz tar -zxf spark-1.6.1-bin-hadoop2.6.tgz rm -rf spark-1.6.1-bin-hadoop2.6.tgz mv spark-1.6.1-bin-hadoop2.6 ./frameworks/spark
vi ./frameworks/spark/conf/spark-env.sh
export SPARK_MASTER_IP=bd export SPARK_MASTER_PORT=7077 export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT} # 指定Spark數(shù)據(jù)目錄 export SPARK_LOCAL_DIRS=/opt/workspaces/data/spark/ # 指定Spark日志目錄 export SPARK_LOG_DIR=/opt/workspaces/logs/spark/ # 指定JDK目錄 export JAVA_HOME=/opt/env/java # 指定Scala目錄 export SCALA_HOME=/opt/env/scala
./frameworks/spark/sbin/start-all.sh
# 執(zhí)行圓周率計算示例 ./frameworks/spark/bin/run-example org.apache.spark.examples.SparkPi ./frameworks/spark/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://bd:6066\ --deploy-mode cluster \ --driver-memory 512M \ --executor-memory 256M \ #如果運行出錯請改大些 ./frameworks/spark/lib/spark-examples-1.6.1-hadoop2.6.0.jar \ 1000
http://spark.apache.org/docs/latest/quick-start.html |
Word Count
./frameworks/spark/bin/spark-shell // 基礎(chǔ)版 val textFile = sc.textFile("./frameworks/spark/README.md") val words = textFile.flatMap(line => line.split(" ")) val exchangeVal = words.map(word => (word,1)) val count = exchangeVal.reduceByKey((a,b) => a + b) count.collect // 優(yōu)化版 sc.textFile("./frameworks/spark/README.md").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).collect // 帶排序 sc.textFile("./frameworks/spark/README.md").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).map(_.swap).sortByKey(false).map(_.swap).collect // 最終版 val wordR="""\w+""".r sc.textFile("./frameworks/spark/README.md").flatMap(_.split(" ")).filter(wordR.pattern.matcher(_).matches).map((_,1)).reduceByKey(_ + _).map(_.swap).sortByKey(false).map(_.swap).saveAsTextFile("hdfs://bd:9000/wordcount")
可以訪問 http:// |
在哪配置:
Spark properties (Spark屬性)在應(yīng)用程序中通過SparkConf
對象設(shè)置,或通過Java系統(tǒng)屬性設(shè)置。
Environment variables (環(huán)境變量)指定各節(jié)點的設(shè)置,如IP地址、端口,配置文件在conf/spark-env.sh中。
Logging (日志)可以通過log4j.properties配置日志。
Spark properties
在代碼中指定配置
val conf = new SparkConf() // 指定使用2個本地線程來運行,本地模式下,我們可以使用n個線程(n >= 1),但在像Spark Streaming這樣的場景下,我們可能需要多個線程 .setMaster("local[2]") .setAppName("CountingSheep") val sc = new SparkContext(conf)
在腳本中指定配置
./bin/spark-submit --name "My app" --master local[4] --conf spark.eventLog.enabled=false --conf "spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps" myApp.jar
Table 1. 常用配置
屬性名稱 | 默認(rèn)值 | 說明 |
---|---|---|
spark.app.name | Spark應(yīng)用的名字 | |
spark.driver.cores | 1 | 在cluster模式下運行driver進程的核數(shù) |
spark.driver.memory | 1g | driver進程可以用的內(nèi)存總量(如:1g,2g),client模式下無效果,必須要在命令行里用 –driver-memory 或者在默認(rèn)屬性配置文件里設(shè)置 |
spark.executor.memory | 1g | 單個executor使用的內(nèi)存總量(如,2g,8g) |
spark.master | 集群管理器URL |
Environment variables
環(huán)境變量在${SPARK_HOME}/conf/spark-env.sh腳本中設(shè)置
Table 2. 常用配置
模式 | 屬性名稱 | 默認(rèn)值 | 說明 |
---|---|---|---|
JAVA_HOME | Java安裝目錄 | ||
SCALA_HOME | Scala安裝目錄 | ||
SPARK_LOCAL_IP | 本地綁定的IP | ||
SPARK_LOG_DIR | ${SPARK_HOME}/logs | 日志目錄 | |
standalone | SPARK_MASTER_IP | (當(dāng)前IP) | Master IP |
standalone | SPARK_MASTER_PORT | 7077(6066) | Master 端口 |
standalone | MASTER | 默認(rèn)Master URL | |
standalone | SPARK_WORKER_CORES | 所有 | 每個節(jié)點使用的CPU core上限 |
standalone | SPARK_WORKER_MEMORY | 本節(jié)點所有內(nèi)存減去1GB | 每個節(jié)點使用的內(nèi)存上限 |
standalone | SPARK_WORKER_INSTANCES | 1 | 每個節(jié)點啟動的worker實例個數(shù) |
standalone | SPARK_WORKER_PORT | 隨機 | Worker綁定的端口 |
如果你的slave節(jié)點性能非常強勁,可以把SPARK_WORKER_INSTANCES 設(shè)為大于1;相應(yīng)的,需要設(shè)置SPARK_WORKER_CORES參數(shù)限制每個worker實例使用的CPU個數(shù),否則每個worker實例都會使用所有的CPU。 |
Logging
日志在${SPARK_HOME}/conf/log4j.properties中設(shè)置
Hadoop集群配置
使用HDFS時需要從Hadoop中復(fù)制hdfs-site.xml、 core-site.xml
到Spark的classpath中
http://spark.apache.org/docs/latest/configuration.html |
standalone目前只支持簡單的先進先出(FIFO)調(diào)度器。這個調(diào)度器可以支持多用戶,你可以控制每個應(yīng)用所使用的最大資源。默認(rèn)情況下,Spark應(yīng)用會申請集群中所有的CPU。
在代碼中限制資源
val conf = new SparkConf() .setMaster(...) .setAppName(...) .set("spark.cores.max", "10") val sc = new SparkContext(conf)
在配置文件 spark-env.sh
中限制資源
export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores="
http://spark.apache.org/docs/latest/tuning.html |
每個節(jié)點:
* 4-8塊磁盤
* 8G以上內(nèi)存
* 千兆網(wǎng)卡
* 8-16核CPU
至少3個節(jié)點
http://spark.apache.org/docs/latest/hardware-provisioning.html |
在spark-env.sh
中添加配置項
# Hive目錄 export HIVE_HOME=$HIVE_HOME
SPARK_CLASSPATH 有些教程中說要添加 |
復(fù)制Hive的幾個配置文件
cp ./frameworks/hive/conf/hive-site.xml ./frameworks/spark/conf cp ./frameworks/hive/conf/hive-log4j.properties ./frameworks/spark/conf
啟動thriftserver,用于對外提供JDBC服務(wù)
./frameworks/spark/sbin/start-thriftserver.sh
測試連接
./frameworks/spark/bin/beeline !connect jdbc:hive2://bd:10000 show tables;
以上是“Spark如何安裝、配置及基礎(chǔ)使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!