编辑
👨🏻🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟
🌈擅长领域:Java、大数据、运维、电子
🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏,相应的有空了我也会回访,互助!!!
🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!
解压
sudo tar -zxf ~/download/spark-2.0.2-bin-without-hadoop.tgz -C /usr/local/ cd /usr/local sudo mv ./spark-2.0.2-bin-without-hadoop/ ./spark sudo chown -R hadoop ./spark
配置环境变量
在Mster节点主机的终端中执行如下命令:
vim ~/.bash_profile
在.bash_profile添加如下配置:
export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
执行如下命令使得配置立即生效:
source ~/.bash_profile
Spark配置
在Master节点主机上进行如下操作:
- 配置slaves文件将 slaves.template 拷贝到 slaves
cd /usr/local/spark/ cp ./conf/slaves.template ./conf/slaves
slaves文件设置Worker节点。编辑slaves内容,把默认内容localhost替换成如下内容:
master slave01 slave02
- 配置spark-env.sh文件将 spark-env.sh.template 拷贝到 spark-env.sh
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
- 编辑spark-env.sh,添加如下内容:
export SCALA_HOME=/usr/local/src/scala-2.13.5 export JAVA_HOME=/usr/local/src/jdk1.8.0_144 export HADOOP_HOME=/usr/local/src/hadoop-2.6.0 export HADOOP_CONF_DIR=/usr/local/src/hadoop-2.6.0/etc/hadoop #export SPARK_MASTER_IP=master #export SPARK_WORKER_MEMORY=1g #export SPARK_EXECUTOR_MEMORY=1g #export SPARK_DRIVER_MEMORY=500m #export SPARK_WORKER_CORES=2 export SPARK_HOME=/usr/local/src/spark-2.0.1-bin-without-hadoop export SPARK_DIST_CLASSPATH=$(/usr/local/src/hadoop-2.6.0/bin/hadoop classpath) export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.retainedApplication=30 -Dspark.history.fs.logDirectory=hdfs://mycluster/directory" #下面这个决定spark是否高可用 export SPARK_DAEMON_JAVA_OPTS=" -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=Master:2181,Worker1:2181,Worker2:2181 -Dspark.deploy.zookeeper.dir=/spark"
- SPARK_MASTER_IP 指定 Spark 集群 Master 节点的 IP 地址;
修改sprak-default.conf的内容如下:
# Example:# spark.master spark://master:7077spark.eventLog.enabled truespark.eventLog.dir hdfs://mycluster/directory # spark.serializer org.apache.spark.serializer.KryoSerializer # spark.driver.memory 5g # spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
配置好之后使用scp将整个spark包发送到集群机器上,并且发送.bash_profile文件并且source.
启动Spark集群
启动Hadoop集群
启动Spark集群前,要先启动Hadoop集群。在Master节点主机上运行如下命令:
cd /usr/local/hadoop/sbin/start-all.sh
启动Spark集群
- 启动Master节点在Master节点主机上运行如下命令,ui访问8080:
cd /usr/local/spark/sbin/start-master.sh
- 在Master节点上运行jps命令,可以看到多了个Master进程:
15093 Jps 14343 SecondaryNameNode 14121 NameNode 14891 Master 14509 ResourceManager
- 启动所有Slave节点在Master节点主机上运行如下命令:
sbin/start-slaves.sh
- 分别在slave01、slave02节点上运行jps命令,可以看到多了个Worker进程
37553 DataNode 37684 NodeManager 37876 Worker 37924 Jps
- 在浏览器上查看Spark独立集群管理器的集群信息在master主机上打开浏览器,访问http://master:8080
- 如果是高可用可以在任意的机器上使用start-master.sh启动达成spark高可用,然后kill掉之前的master,过一会zookeeper更新就可以看见第二台master状态转变为Active,并且转移了task到自身。
- 如需启动spark的历史服务器如下指令,ui访问18080
start-history-server.sh
- 测试loacl模式,求派案例
**bin/spark-submit \\ --class org.apache.spark.examples.SparkPi \\ --master spark://master:7077,slave1:7077,slave2:7077 \\ --executor-memory 1G \\ --total-executor-cores 2 \\ ./examples/jars/spark-examples_2.11-2.1.1.jar \\ 100**
- 注意:提交的任务会在console上直接可视的执行,也就是client模式
- 测试cluster模式,求派案例
**bin/spark-submit \\ --class org.apache.spark.examples.SparkPi \\ --master spark://master:7077,slave1:7077,slave2:7077 \\ --deploy-mode cluster \\ --executor-memory 1G \\ --total-executor-cores 2 \\ ./examples/jars/spark-examples_2.11-2.1.1.jar \\ 100**
- 注意:提交的任务不会直接在console上可视的执行,而是直接被提交到spark节点上执行,可以查看ui观察运行成功与否。
- 如需看job页面需要预先启动spark-shell,才可以访问4040端口
- Yarn模式
- 需要先修改hadoop的yarn-site.xml
<property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
- 测试案例
bin/spark-submit \\--class org.apache.spark.examples.SparkPi \\--master yarn \\--deploy-mode client \\./examples/jars/spark-examples_2.11-2.1.1.jar \\100
关闭Spark集群
- 关闭Master节点
sbin/stop-master.sh
- 关闭Worker节点
sbin/stop-slaves.sh
- 关闭Hadoop集群
cd /usr/local/hadoop/sbin/stop-all.sh