spark standalone集群搭建

spark standalone集群搭建

安装jdk

安装jdk1.8,到oracle下载对应系统所需的安装包。

增加环境变量JAVA_HOME, 对于mac系统,使用系统自身的安装jdk,是可以通过命令行/usr/libexec/java_home来获取。

安装spark

官网下载hadoop版本,这里选择了2.4.3

解压到指定目录,然后配置环境变量SPARK_HOME

配置ssh

由于启动spark需要依赖ssh的免密登陆达到控制集群的关系,这里通过如下命令来实现单机的免密登陆

1
2
ssh-keygen -t rsa -f ~/.ssh/id_rsa_spark
ssh-copy-id -i ~/.ssh/id_rsa_spark roger@localhost

设置后密码后,通过ssh localhost来看下是否可以实现登陆成功

注意 对于windows用户,可以需要配置sshd环境;对于mac用户,需要在设置-sharing-Remote Login中将服务打开,同时设置哪些用户可以登陆

同时配置SPARK_SSH_OPTS环境变量到/etc/profile下

1
export HADOOP_SSH_OPTS="-i /Users/roger/.ssh/id_rsa_spark -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "

指向刚生成的私钥,如果不配置密钥,可以通过环境变量设置SPARK_SSH_FOREGROUND配置ssh的密码

配置spark

设置配置文件spark-env.sh,先从spark-env.sh.template赋值过来

1
2
3
4
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
export SPARK_MASTER_HOST=localhost
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=18080

这里是这master的ip,端口跟webui的端口,按照自己情况设置,不设置的话,缺省webui是8080

同时spark-defaults.conf.template复制成spark-defaults.conf

同时slaves.template复制成slaves,修改内容如下:

1
localhost

表示使用本机作为其中一个worker

同时log4j.properties.template复制成log4j.properties

启动master

1
${SPARK_HOME}/sbin/start-master.sh

启动slave

如果配置conf/slaves,需要从这里起来

1
${SPARK_HOME}/sbin/start-slaves.sh

提交java作业

1
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://localhost:7077 examples/jars/spark-examples_2.11-2.4.3.jar

查看结果输出如下

1
2
19/08/30 13:58:43 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Pi is roughly 3.146315731578658

提交python作业

提供一个分词功能

1
bin/spark-submit --master spark://localhost:7077  examples/roger/workcount.py ./README.md

查看页面可以看到对应的作业记录,至此本地的spark standalone环境搭建完成

原创技术分享,您的支持将鼓励我继续创作