1. 安装
1.1. 下载 spark 安装包
下载地址 spark 官网: http://spark.apache.org/downloads.html
这里我们使用 spark-1.6.2-bin-hadoop2.6 版本.
1.2. 规划安装目录
/opt/bigdata
1.3. 解压安装包
tar -zxvf spark-1.6.2-bin-hadoop2.6.tgz
1.4. 重命名目录
mv spark-1.6.2-bin-hadoop2.6 spark
1.5. 修改配置文件
配置文件目录在 /opt/bigdata/spark/conf
vi spark-env.sh 修改文件 (先把 spark-env.sh.template 重命名为 spark-env.sh)
- # 配置 java 环境变量
- export JAVA_HOME=/opt/bigdata/jdk1.7.0_67
- # 指定 spark 老大 Master 的 IP
- export SPARK_MASTER_IP=node1
- # 指定 spark 老大 Master 的端口
- export SPARK_MASTER_PORT=7077
vi slaves 修改文件 (先把 slaves.template 重命名为 slaves)
node2
node3
1.6. 拷贝配置到其他主机
通过 scp 命令将 spark 的安装目录拷贝到其他机器上
scp -r spark-2.0.2-bin-hadoop2.7/ root@node2:$PWD -- 拷贝到当前目录
- scp -r /opt/bigdata/spark hdp-node-02:/opt/bigdata
- scp -r /opt/bigdata/spark hdp-node-03:/opt/bigdata
1.7. 配置 spark 环境变量
将 spark 添加到环境变量, 添加以下内容到 /etc/profile
- export SPARK_HOME=/opt/bigdata/spark
- export PATH=$PATH:$SPARK_HOME/bin
注意最后 source /etc/profile 刷新配置
3.7 启动 spark
- # 在主节点上启动 spark
- /opt/bigdata/spark/sbin/start-all.sh
3.8 停止 spark
- # 在主节点上停止 spark 集群
- /opt/bigdata/spark/sbin/stop-all.sh
3.9 spark 的 web 界面
正常启动 spark 集群后, 可以通过访问 http://hdp-node-01:8080, 查看 spark 的 web 界面, 查看相关信息
2. Spark HA 高可用部署
2.1. 高可用部署说明
Spark Standalone 集群是 Master-Slaves 架构的集群模式, 和大部分的 Master-Slaves 结构集群一样, 存在着 Master 单点故障的问题如何解决这个单点故障的问题, Spark 提供了两种方案:
基于文件系统的单点恢复 (Single-Node Recovery with Local File System)
主要用于开发或测试环境当 spark 提供目录保存 spark Application 和 worker 的注册信息, 并将他们的恢复状态写入该目录中, 这时, 一旦 Master 发生故障, 就可以通过重新启动 Master 进程 (sbin/start-master.sh), 恢复已运行的 spark Application 和 worker 的注册信息
(2) 基于 zookeeper 的 Standby Masters(Standby Masters with ZooKeeper)
用于生产模式其基本原理是通过 zookeeper 来选举一个 Master, 其他的 Master 处于 Standby 状态将 Standalone 集群连接到同一个 ZooKeeper 实例并启动多个 Master, 利用 zookeeper 提供的选举和状态保存功能, 可以使一个 Master 被选举, 而其他 Master 处于 Standby 状态如果现任 Master 死去, 另一个 Master 会通过选举产生, 并恢复到旧的 Master 状态, 然后恢复调度整个恢复过程可能要 1-2 分钟
2.2. 基于 zookeeper 的 Spark HA 高可用集群配置 (机器都改成一样的)
该 HA 方案使用起来很简单, 首先启动一个 ZooKeeper 集群, 然后在不同节点上启动 Master, 注意这些节点需要具有相同的 zookeeper 配置
配置:
(1)vim spark-env.sh
注释掉 export SPARK_MASTER_IP=node1
(2) 在 spark-env.sh 添加 SPARK_DAEMON_JAVA_OPTS, 内容如下:
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url= node 1:2181, node 2:2181, node 3:2181 -Dspark.deploy.zookeeper.dir=/spark" |
参数说明
spark.deploy.recoveryMode: 恢复模式 (Master 重新启动的模式)
有三种:(1)ZooKeeper (2) FileSystem (3)NONE
spark.deploy.zookeeper.url:ZooKeeper 的 Server 地址
spark.deploy.zookeeper.dir: 保存集群元数据信息的文件目录
包括 Worker,Driver 和 Application
注意:
在普通模式下启动 spark 集群, 只需要在主机上面执行 start-all.sh 就可以了
在高可用模式下启动 spark 集群, 先需要在任意一台主节点上启动 start-all.sh 命令然后在另外一台主节点上单独启动 master 命令 sbin/start-master.sh
查看 zk 注册 命令 - zkCli.sh ls / -- 查看注册的服务
3. Spark 启动方式
3.1. spark 提交任务方式
- 3.1.1. spark on yarn:
- $ ./bin/spark-submit--class org.apache.spark.examples.SparkPi \
- --master yarn-cluster \
- --num-executors 3 \
- --driver-memory 4g \
- --executor-memory 2g \
- --executor-cores 1 \
- --queue thequeue \
- lib/spark-examples*.jar \
- 10
2)spark on yarn 提交任务时: 在 yarn-cluster 的集群模式, 驱动程序运行在不同的机器比客户端, 所以 sparkcontext.addjar 不会解决的是客户端的本地文件盒在可 sparkcontext.addjar 客户端文件, 包括他们的 jars 选项在启动命令
- $ ./bin/spark-submit--class my.main.Class \
- --master yarn-cluster \
- --jarsmy-other-jar.jar,my-other-other-jar.jar
- my-main-jar.jar
- app_arg1 app_arg2
- 3.1.2.
测试 spark 自带的 Pi 程序,
- ./bin/spark-submit--class org.apache.spark.examples.SparkPi \
- --master yarn-cluster\
- --num-executors 1 \
- --driver-memory 1g \
- --executor-memory 1g \
- --executor-cores 1 \
- lib/spark-examples*.jar\
- 3.1.3. spark-submit:
spark-submit 测试 PI:
Spark 的 bin 子目录中的 spark-submit 脚本是用于提交程序到集群中运行的工具, 我们使用此工具做一个关于 pi 的计算命令如下:
- ./bin/spark-submit --master spark://spark113:7077 \
- --class org.apache.spark.examples.SparkPi \ --name Spark-Pi --executor-memory 400M \ --driver-memory 512M \
- /home/hadoop/spark-1.0.0/examples/target/scala-2.10/spark-examples-1.0.0-hadoop2.0.0-cdh4.5.0.jar
spark-submit 测试:
- /home/hadoop/spark/spark-1.3.0-bin-hadoop2.4/bin/spark-submit\
- --classorg.apache.spark.examples.SparkPi \
- --masterspark://192.168.6.71:7077 \
- --executor-memory100m \
- --executor-cores 1 \
- 1000
3.2. 以集群的模式启动 spark-shell:
./spark-shell --master spark://hadoop1:7077 --executor-memory 500m
3.3. Spark 启动方式:
3.3.1. 本地模式启动
spark:./spark-shell --master local[2] 注意: 可以指定多个线程
3.3.2. 集群模式启动 spark:
[hadoop@hadoop1 spark-1.3.0-bin-hadoop2.4]$ ./bin/spark-shell --masterspark://hadoop1:7077 --executor-memory500m
注意: 此启动方式指定了 spark-shell 运行时暂用的每个机器上 executor 的内存为 500m
- spark-shell --masteryarn-client --driver-memory 10g --num-executors 20 --executor-memory 20g--executor-cores 3 --queue spark
- 3.3.3.
在 Python 解释器中启动 spark:
- bin/pyspark--master local[3]
- 3.3.4.
在 R 语言的解释器中启动 spark:
bin/sparkR --master local[2]
3.3.5. yarn 的方式启动 spark:
yarn 集群启动 spark:$ ./bin/spark-shell --master yarn-cluster
yarn 客户端启动 spark:$ ./bin/spark-shell --masteryarn-client
- spark-sql --masteryarn-client --driver-memory 10g --num-executors 20 --executor-memory 20g--executor-cores 3 --queue spark
- spark-sql --masterspark://master:7077 --driver-memory 10g --executor-memory 20g --driver-cores 3
来源: http://www.bubuko.com/infodetail-2512924.html