Spark集群配置
Spark集群配置
環(huán)境:Ubuntu10.04, Hadoop 0.20.2, JDK 1.6, Spark 0.7.2, Scala 2.9.3
前置條件:
1、三臺(tái)機(jī)器,這里通過創(chuàng)建三個(gè)VMware虛擬機(jī)來模擬三臺(tái)物理機(jī)器2、Linux系統(tǒng),例如Ubuntu、CentOS、Fedora等,這里是Ubuntu10.04
3、jdk for linux版本,這里是jdk-6u25-linux-i586.bin
4、hadoop0.20.2.tar.gz文件
5、Scala文件,這里是scala-2.9.3.tgz
6、Spark文件,我們選擇的是編譯好的一個(gè)Spark版本文件spark-0.7.2-prebuilt-hadoop1.tgz
一、安裝Linux系統(tǒng)(Ubuntu10.04 LTS)
$sudo apt-get update ?#更新系統(tǒng),需連網(wǎng)二、更改主機(jī)名,映射IP地址
1、$sudo gedit /etc/hostname ? ?#主機(jī)名master、slave1、slave2
$source /etc/hostname
2、
$ifconfig ?#查看IP地址
$sudo gedit /etc/hosts ? ? ? #IP地址與主機(jī)名的映射
192.168.117.138 master?
192.168.117.136 slave1
192.168.117.139 slave2
$source /etc/hosts ? ? ?#使文件修改生效(需要重啟生效)
三、安裝 JDK
1、將jdk-6u25-linux-i586.bin拷貝到/home/tom目錄下或用命令$cp ~/Desktop/jdk-6u25-linux-i586.bin /home/tom
2、tom@master:~/home/tom$ chmod u+x jdk-6u25-linux-i586.bin
為文件所有者增加可執(zhí)行權(quán)限
3、執(zhí)行安裝文件:
$./jdk-6u25-linux-i586.bin
4、$sudo gedit /etc/profile
在profile文件中添加如下內(nèi)容:
export JAVA_HOME=/home/tom/jdk1.6.0_25
export JRE_HOME=/home/tom/jdk1.6.0_25/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
$source /etc/profile #使修改生效
5、
$java -version
顯示java version "1.6.0_25"。。。jdk安裝成功
四、安裝配置Hadoop集群
安裝配置SSH服務(wù),在master上空口令生成RSA密鑰,將master上生成的公鑰發(fā)送到slave1和slave2上對(duì)應(yīng)的目錄下。我們這里使用的是hadoop0.20.2.tar.gz文件,Hadoop集群的詳細(xì)配置過程見上一篇日志 《Hadoop集群搭建》。
五、安裝 Scala 2.9.3
Spark 0.7.2 依賴于Scala 2.9.3, 所以我們要先安裝Scala 2.9.3.1、將scala-2.9.3.tgz文件放到/home目錄下
$ tar -zxf scala-2.9.3.tgz #解壓
$ sudo mv scala-2.9.3 /usr/lib #將scala-2.9.3移動(dòng)至/usr/lib下
2、$ sudo gedit /etc/profile
在profile文件中添加如下內(nèi)容:
export SCALA_HOME=/usr/lib/scala-2.9.3
export PATH=$PATH:$SCALA_HOME/bin
保存并關(guān)閉profile文件
3、$source /etc/profile #使文件修改生效
4、$ scala -version
顯示出Scala的版本號(hào),Scala安裝成功
六、Spark standalone模式
1、解壓$ tar -zxf spark-0.7.2-prebuilt-hadoop1.tgz
2、配置SPARK_EXAMPLES_JAR 環(huán)境變量
$sudo gedit /etc/profile
在profile文件中添加如下內(nèi)容:
export SPARK_EXAMPLES_JAR=$HOME/spark-0.7.2/examples/target/scala-2.9.3/spark-examples_2.9.3-0.7.2.jar
保存并關(guān)閉文件
3、$ source /etc/profile #使修改生效
4、設(shè)置 SPARK_HOME環(huán)境變量
$ sudo gedit /etc/profile
在profile文件中添加如下內(nèi)容:
export SPARK_HOME=$HOME/spark-0.7.2
export PATH=$PATH:$SPARK_HOME/bin
保存并關(guān)閉文件
$ source /etc/profile #使修改生效
5、測(cè)試Spark自帶實(shí)例SparkPi
$ cd ~/spark-0.7.2
$ ./run spark.examples.SparkPi local #本地模式運(yùn)行
程序結(jié)果為圓周率π的近似值
七、Spark集群模式
在master上安裝并配置Spark1、將spark-0.7.2-prebuilt-hadoop1.tgz文件放到/home/tom目錄下
$ tar -zxf spark-0.7.2-prebuilt-hadoop1.tgz ?#解壓
2、設(shè)置SPARK_EXAMPLES_JAR 環(huán)境變量
$ sudo gedit ~/.bash_profile
在profile文件中添加如下內(nèi)容:
export SPARK_EXAMPLES_JAR=$HOME/spark-0.7.2/examples/target/scala-2.9.3/spark-examples_2.9.3-0.7.2.jar
保存并關(guān)閉文件
$ source /etc/profile #使修改生效
3、$ cd ~/spark-0.7.2/conf
$ mv spark-env.sh.template spark-env.sh #重命名
文件①spark-env.sh
$sudo gedit spark-env.sh
在conf/spark-env.sh 中設(shè)置SCALA_HOME
在spark-env.sh文件中添加如下內(nèi)容:
export SCALA_HOME=/usr/lib/scala-2.9.3
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.19.x86_64
保存并關(guān)閉文件
$source spark-env.sh
文件②slaves
在conf/slaves, 添加從節(jié)點(diǎn)主機(jī)名, 一行一個(gè)
$ sudo gedit slaves
slave1
slave2
$source slaves
4、設(shè)置 SPARK_HOME環(huán)境變量
$ sudo gedit ~/profile
在profile文件中添加如下內(nèi)容:
export SPARK_HOME=$HOME/spark-0.7.2
export PATH=$PATH:$SPARK_HOME/bin
保存并關(guān)閉
$ source /etc/profile #生修改生效
5、在所有worker上安裝并配置Spark
將master上配置好的spark-0.7.2文件夾,拷貝到所有的worker。注意,三臺(tái)機(jī)器spark所在目錄必須一致,因?yàn)閙aster會(huì)登陸到worker上執(zhí)行命令,master認(rèn)為worker的spark路徑與自己一樣。
$ cd ?#進(jìn)入用戶目錄~下
$ scp -r spark-0.7.2 tom@slave1:~
$ scp -r spark-0.7.2 tom@slave2:~
6、啟動(dòng) Spark 集群
master上
$ cd ~/spark-0.7.2
$ bin/start-all.sh
查看守護(hù)進(jìn)程
$ jps
Jps
SecondaryNameNode
NameNode
DataNode
JobTracker
TaskTracker
Master
Worker
7、瀏覽master的web UI(默認(rèn)http://localhost:8080),這時(shí)可以看到所有的word節(jié)點(diǎn),以及他們的CPU個(gè)數(shù)和內(nèi)存等信息。?
八、Spark實(shí)例測(cè)試
1、運(yùn)行SparkPi例子$ cd ~/spark-0.7.2
$ ./run spark.examples.SparkPi spark://master:7077
2、運(yùn)行Spark自帶的其他例子,SparkLR 和 SparkKMeans.
#Logistic Regression(邏輯回歸)
$./run spark.examples.SparkLR spark://master:7077
#KMeans
$ ./run spark.examples.SparkKMeans spark://master:7077 ./kmeans_data.txt 2 1
3、從HDFS讀取文件并運(yùn)行WordCount
$ cd ~/spark-0.7.2
$ hadoop fs -put README.md .
$ MASTER=spark://master:7077 ./spark-shell
scala> val file = sc.textFile("hdfs://master:9000/user/dev/README.md")
scala> val count = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_+_)
scala> count.collect()
4、停止 Spark 集群
$ cd ~/spark-0.7.2
$ bin/stop-all.sh
OVER!
總結(jié)
- 上一篇: 【VC++】Visual Studio编
- 下一篇: 各类排序算法总结(作者:__Boost)