spark/shark 部署 (zz)

来源:互联网 发布:讯飞输入法皮肤知乎 编辑:程序博客网 时间:2024/06/12 01:35

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


Spark/Shark小试

最近在测试集群尝试把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.2export JAVA_HOME=/home/hdfs/java-currentexport SPARK_WORKER_MEMORY=8gexport SPARK_MASTER_IP=10.133.103.11export 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-currentexport HIVE_HOME=/home/hdfs/guojian/hive-0.9.0-binexport MASTER=spark://10.133.103.11:7077export SPARK_HOME=/home/hdfs/guojian/spark-0.6.0export SCALA_HOME=/home/hdfs/guojian/scala-2.9.2export SPARK_MEM=5gsource $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

原创粉丝点击