前提:hadoop2.6集群,zookeeper集群
机器:
master 192.168.0.110
slave1 192.168.0.111
slave2 192.168.0.112
node1 192.168.0.113
1.下载spark
到官网下载spark包,我下载的是spark-2.1.0-bin-hadoop2.6.tgz。传到/usr/local解压,重命名为spark。
2. spark几种模式:
2.1 local:测试用的,不用配置,解压后就可以用了。
[hadoop@master spark]$ bin/run-example SparkPi 100 2>&1 |grep "Pi is"
Pi is roughly 3.1417459141745914
2.2 standalone:可以配置集群,相当于独立的spark集群
到spark安装目录的conf文件夹下:
cp slaves.template slaves
cp spark-env.sh.template spark-env.sh
slaves:写worker节点的名字
slave1
slave2
node1
spark-env.sh:
export JAVA_HOME=/usr/local/java
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=4g
export SPARK_WORKER_INSTANCES=1
把spark文件夹传到各个节点。这样集群就创建好了。sbin里有命令启动,start-all.sh start-master.sh start-slaves.sh spark-daemon.sh等等命令,spark主从为master和worker。
测试:
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077
--deploy-mode cluster examples/jars/spark-examples_2.11-2.1.0.jar 10000
然后可以到master:8080页面查看任务运行情况。
利用zookeeper配置ha:在spark-env.sh中添加
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181"
然后把spark-env.sh传到其他节点。然后把需要成为master的节点的spark-env.sh中SPARK_MASTER_IP改为自己节点的名称,然后用start-master.sh启动节点。用host:8080看可以看到一个ALIVE,其他STANDBY。STANDBY转为ALIVE需要1到2分钟。
让spark在yarn上运行:在spark-env.sh中添加:
export HADOOP_CONF_DIR=/usr/hadoop/etc/hadoop
export YARN_CONF_DIR=/usr/hadoop/etc/hadoop
spark在yarn上运行就不需要启动standalone的master和worker了。只需要hadoop集群启动就行了。
测试:
bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn
--deploy-mode cluster examples/jars/spark-examples_2.11-2.1.0.jar 10000