CentOS7 安装spark集群

时间:2024-01-11 18:01:08

Spark版本 1.6.0

Scala版本 2.11.7

Zookeeper版本 3.4.7

CentOS7 安装spark集群

配置虚拟机


3台虚拟机,sm,sd1,sd2

CentOS7 安装spark集群

1. 关闭防火墙

systemctl stop firewalld

systemctl stop firewalld

如果不关闭防火墙,需要为防火墙添加进站出站规则,否则无法访问spark的管理页面

2. 修改机器名

hostnamectl set-hostname sm

其他2台机器同上

3. 修改host

vim /etc/hosts

CentOS7 安装spark集群

4. 配置ssh免密码登陆

在sm机器

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub peter@sd1

ssh-copy-id -i ~/.ssh/id_rsa.pub peter@sd2

ssh-copy-id -i ~/.ssh/id_rsa.pub peter@sm

如果不配置本机的ssh免密码登陆,在后面启动spark集群的时候,会发现本机的worker无法启动

4. 安装Java

安装Zookeeper


复制zookeeper的gz文件至sm机器

1. 解压

tar zxf zookeeper-3.4.7.tar.gz

2. 配置

cd conf

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

CentOS7 安装spark集群

3. 设置serverid

进入data文件夹

cd /home/peter/App/Spark/zookeeper-3.4.7/data

sm机器

echo "1">myid

4. Copy至其他机器

scp -r /home/peter/App/Spark/zookeeper-3.4.7  peter@sd2:/home/peter/App/Spark/zookeeper-3.4.7

5. 修改另外台机器的serverid

重复第3步,分别将id设置为配置文件中对应的id

cd /home/peter/App/Spark/zookeeper-3.4.7/data

sd1

echo "2">myid

sd2

echo "3">myid

安装Spark


在sm机器

1. 拷贝安装文件并解压

scala-2.11.7.tgz

spark-1.6.0-bin-hadoop2.6.tgz

hadoop-2.6.0.tar.gz

分别解压

CentOS7 安装spark集群

2. 设置环境变量

vim ~/.bash_profile

export JAVA_HOME=/home/peter/App/jdk1..0_66
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export SCALA_HOME=/home/peter/App/Spark/scala-2.11. export SPARK_HOME=/home/peter/App/Spark/spark-1.6.-bin-hadoop2. export HADOOP_HOME=/home/peter/App/Spark/hadoop-2.6.
export HADOOP_CONF_DIR=/home/peter/App/Spark/hadoop-2.6./etc/hadoop export PATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source ~/.bash_profile

3. 设置Spark

cd /home/peter/App/Spark/spark-1.6.0-bin-hadoop2.6/conf

cp spark-env.sh.template spark-env.sh

export SCALA_HOME=/home/peter/App/Spark/scala-2.11.
export SPARK_WORKER_MEMORY=1G
export JAVA_HOME=/home/peter/App/jdk1..0_66
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=sm:2181,sd1:2181,sd2:2181 -Dspark.deploy.zookeeper.dir=/spark"

配置slaves

cp slaves.template slaves

vim slaves

CentOS7 安装spark集群

4. 拷贝安装文件以及配置文件至其他机器

Java安装文件及配置文件

Hadoop

Spark

Scala

5. 启动Spark集群

每台机器启动ZK

/home/peter/App/Spark/zookeeper-3.4.7/bin/zkServer.sh start

在SM机器启动Spark集群

cd /home/peter/App/Spark/spark-1.6.0-bin-hadoop2.6

./sbin/start-all.sh

选中一台机器作为Standby Master,启动Master进程

./sbin/start-master.sh

启动后,可访问Spark Alive Master的管理页面以及Standby Master的管理页面

CentOS7 安装spark集群

CentOS7 安装spark集群

如果将Alive Master节点关闭或者Kill掉ZK以及Master进程,Spark会自动切换到Standby Master

提交任务至Spark


参考Spark QuickStart中的例子

提交一个Jar包进行测试

POM配置

    <dependencies>
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.6.0</version>
</dependency>
</dependencies>
public class Entry {
public static void main(String[] args)
{
System.out.println("Step 1");
String logFile = "/home/peter/App/Spark/spark-1.6.0-bin-hadoop2.6/README.md"; // Should be some file on your system
SparkConf conf = new SparkConf().setAppName("Test Application")
.setMaster("spark://192.168.1.90:7077")
//.set("spark.driver.host", "192.168.1.111")
// .set("SPARK_WORKER_IP","192.168.1.111")
//.setJars(new String[]{"/home/peter/App/Spark/work/homework.jar"})
; System.out.println("Step 2."); JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> logData = sc.textFile(logFile).cache(); long numAs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) { return s.contains("a"); }
}).count(); long numBs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) { return s.contains("b"); }
}).count(); System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs); }
}

生成Jar包

可能哪里的配置有些问题,Jar包开始无法正确运行,查找了一些资料后,是一些引用版本比较混乱引起的。

在Jar包的META-INF文件夹中删除下面的文件

CentOS7 安装spark集群

MANIFEST.MF文件中也必须有Main-Class

Manifest-Version: 1.0
Main-Class: Entry

拷贝jar包至sm机器上,并运行

CentOS7 安装spark集群