下载spark ,注意,选择直接下载似乎比较快,我开始选择镜像,结果慢的不行。
另外,手动编译需要安装sbt,这个类似maven, 很麻烦,我只是想运行下GraphX, 因此直接下载pre-built版本,可以直接运行的,无需安装sbt
设置环境变量
SPARK_HOME=/opt/spark-1.5.0-bin-hadoop1
然后修改配置文件
mv spark-env.sh.template spark-env.sh
export HADOOP_CONF_DIR=/opt/hadoop-1.2.1/conf
export SPARK_MASTER_IP=mu02
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=7078
export SPARK_WORKER_CORES=4
export SPARK_WORKER_MEMORY=4g
export SPARK_WORKER_INSTANCES=1
export SPARK_EXECUTOR_MEMORY=4g
export SPARK_WORKER_DIR=/opt/spark-1.5.0-bin-hadoop1/logs
export SPARK_LOG_DIR=/opt/spark-1.5.0-bin-hadoop1/logs
export SPARK_PID_DIR=/opt/spark-1.5.0-bin-hadoop1/tmp
进入bin目录
运行pagerank:
./run-example org.apache.spark.examples.graphx.LiveJournalPageRank /test/SmallSrc.txt --numEPart=22 --output=/output
./spark-submit --class org.apache.spark.examples.graphx.LiveJournalPageRank ../lib/spark-examples-1.5.0-hadoop1.2.1.jar /test/280w_100_cpl.txt --numEPart=5 --output=/output5
./spark-submit --class org.apache.spark.examples.JavaPageRank ../lib/spark-examples-1.5.0-hadoop1.2.1.jar /test/280w_100_cpl.txt 30
当然,以上执行的时候都是local模式,如果没有在env.sh中设置 :
export SPARK_DRIVER_MEMORY=4g
把SPARK_DRIVER_MEMORY设的大点的话,就容易出现内存不足,屏幕不动的情况, 我猜测可能是local模式下采用多线程方式运行,都执行在sparkSubmit进程的空间里,所以看不到任何executor进程以及日志。。。。 搞了好几天才知道咋么回事。。。 真是崩溃啊
一个确认的方法是看屏幕中输出localhost , 出现: Added rdd_1041_5 in memory on localhost:38685 (size: XXX) 那基本上就是local模式了...
修改后顺利运行,结果:
修改为standlone模式, 作为真正的分布式模式:
似乎只有在spark-shell里输入的时候才行,执行 ./bin/spark-shell --master spark://mu02:7077
子节点会启动 CoarseGrainedExecutorBackend 进程, 这种作为交互模式。
如果希望指定集群模式的话,需要通过master参数进行指定,
sbin/start-all.sh
./spark-submit --master spark://mu02:7077 --class org.apache.spark.examples.graphx.LiveJournalPageRank ../lib/spark-examples-1.5.0-hadoop1.2.1.jar /test/280w_100_cpl.txt --numEPart=5 --output=/output6
红色部分即为集群模式执行
spark-shell(脚本运行模式)
上面方法需要在交互窗口中一条一条的输入scala程序;将scala程序保存在test.scala文件中,可以通过以下命令一次运行该文件中的程序代码:
sudo spark-shell --executor-memory 5g --driver-memory1g --master spark://192.168.180.216:7077 < test.scala
运行后会自动进入spark-shell交互窗口并且运行test.scala中的程序,运行完成后,会自动退出spark-shell。
如果程序退出终端后,linux终端失效,可以试试:stty echo 命令