spark/shark 部署 (zz)

轉自: http://in.sdo.com/?p=325


最近在測試集羣嘗試把Spark以及Shark搭建起來,體驗了一下。

Spark是一個高效的分佈式計算系統,相比Hadoop,它在性能上比Hadoop號稱要高 100倍。Spark提供比Hadoop更 上層的API,同樣的算法在Spark中實現往往只有Hadoop的1/10或者1/100的長度。Shark類似“SQL on Spark”,是一個在Spark上數據倉庫的實現,在兼容Hive的情況下,性能最高可以達到Hive的一百倍。

Spark

下載Spark

$ wget https://github.com/downloads/mesos/spark/spark-0.6.0-prebuilt.tar.gz
$ tar xvfz spark-0.6.0-prebuilt*.tgz

編輯spark-0.6.0/conf/slaves,添加每個slave節點的hostname,每行一個。

編輯spark-0.6.0/conf/spark-env.sh,設置 SCALA_HOME and SPARK_WORKER_MEMORY

export SCALA_HOME=/home/hdfs/guojian/scala-2.9.2
export JAVA_HOME=/home/hdfs/java-current
export SPARK_WORKER_MEMORY=8g
export SPARK_MASTER_IP=10.133.103.11
export SPARK_MASTER_PORT=7077

SPARK_WORKER_MEMORY是Spark中每個節點可用的最大內存。這個值設置的越大,就會有更多的數據被cache到內存中。

另外,Spark除了依賴上述Scala、Java,還需要一個HDFS集羣。

如果系統中沒有安裝Scala,可以通過如下方法下載:

$ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.2.tgz 
$ tar xvfz scala-2.9.2.tgz

進入到spark-0.6.0/bin目錄,執行start-all.sh腳本以啓動Spark集羣。

啓動後可以通過http://10.133.103.11:8080/查看spark的狀態,如下圖:

Shark

$ wget https://github.com/downloads/amplab/shark/shark-0.2.1-bin.tgz
$ tar xvfz shark-0.2.1-bin.tgz

編輯shark-0.2.1/conf/shark-env.sh,設置HIVE_HOME, SCALA_HOME以及MASTER等:

export HADOOP_HOME=/home/hdfs/hadoop-current
export HIVE_HOME=/home/hdfs/guojian/hive-0.9.0-bin
export MASTER=spark://10.133.103.11:7077
export SPARK_HOME=/home/hdfs/guojian/spark-0.6.0
export SCALA_HOME=/home/hdfs/guojian/scala-2.9.2
export SPARK_MEM=5g

source $SPARK_HOME/conf/spark-env.sh

值得說明的是SPARK_MEM的值不能比前面SPARK_WORKER_MEMORY的值大。

複製Spark和Shark目標到每個slave節點。可以使用如下方法:

$ while read slave_host; 
do $ rsync -Pav spark-0.6.0 shark-0.2.1 $slave_host 
$ done < /path/to/spark/conf/slaves

現在可以啓動Shark了。

$ ./bin/shark-withinfo

可以用sql測試Shark是否可用。

CREATE TABLE src(key INT, value STRING); 
LOAD DATA LOCAL INPATH '${env:HIVE_HOME}/examples/files/kv1.txt' INTO TABLE src; 
SELECT COUNT(1) FROM src; 
CREATE TABLE src_cached AS SELECT * FROM SRC; 
SELECT COUNT(1) FROM src_cached;

測試結果如下:

簡單的對比,在MR中,一個最簡單的count操作,至少需要20-30秒的時間,使用spark/shark,這裏只需要1秒。由於spark/shark更多的是內存操作,大大降低了IO開銷,提升計算效率。當然,不同的計算操作,效率提升也不盡相同,後續有時間針對不同的計算操作再做更進一步的測試。

 

參考資料:

  1. http://www.csdn.net/article/2013-04-26/2815057-Spark-Reynold
  2. Spark項目主頁:http://spark-project.org/
  3. Shark項目主頁:https://github.com/amplab/shark/wiki
  4. 資源下載:https://github.com/amplab/shark/downloads

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章