Spark集群部署方法一:
//spark安装
1 解压缩/usr/local/app2/spark目录下
tar -zxvf spark-2.3.1-bin-hadoop2.6.tgz
mv spark-2.3.1-bin-hadoop2.6 spark
2 环境变量,都需要配置
export SPARK_HOME=/usr/local/app2/spark/spark
export PATH=PATH
3 spark-env.sh配置/usr/local/app2/spark/spark/conf目录下 -> 备注spark-env.sh.template是spark的一个自带模板,SCALA没有安装所以先注释掉配置信息
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
export JAVA_HOME=/usr/software/jdk1.8.0_11 /JDK安装路径/
#export SCALA_HOME=/home/cmfchina/opt/scala/scala-2.12.2 /SCALA安装路径/
export SPARK_HOME=/usr/local/app2/spark/spark /spark安装路径/
export HADOOP_CONF_DIR=/usr/software/hadoop/etc/hadoop /指定hadoop的配置文件目录/
#export SPARK_LOG_DIR=/home/cmfchina/opt/scala/scala-2.12.2/logs /SCALA logs路径/
#export SPARK_PID_DIR=/home/cmfchina/opt/scala/scala-2.12.2/pid /SCALA pid路径/
export SPARK_MASTER_IP=192.168.0.110 /主节点的IP地址/
export SPARK_MASTER_HOST=192.168.0.110
export SPARK_LOCAL_IP=192.168.0.110 /本机的IP地址,将此项改成node1,node2和node3对应节点的IP,其他基本不变/
export SPARK_WORKER_MEMORY=2G /分配的内存大小,作业可使用的内存容量,默认格式1000M 或者 2G,注意内存设置必须是整数/
export MASTER=spark://192.168.0.110:7077 /默认端口为7077/
export JAVA_HOME=/usr/software/jdk1.8.0_11
#export SCALA_HOME=/home/cmfchina/opt/scala/scala-2.12.2
export SPARK_HOME=/usr/local/app2/spark/spark
export HADOOP_CONF_DIR=/usr/software/hadoop/etc/hadoop
#export SPARK_LOG_DIR=/home/cmfchina/opt/scala/scala-2.12.2/logs
#export SPARK_PID_DIR=/home/cmfchina/opt/scala/scala-2.12.2/pid
export SPARK_MASTER_IP=mynode
export SPARK_MASTER_HOST=mynode
export SPARK_LOCAL_IP=mynode
export SPARK_WORKER_MEMORY=2G
export MASTER=spark://mynode:7077
//克隆虚拟机
已有的虚拟机(关闭状态)下右键点击“管理”–>“克隆”
克隆虚拟机中的当前状态
创建完整克隆
虚拟机名称自定义 集群node1/集群node2/集群node3 ,位置自定义
弹出三个√代表克隆完成
//不是关闭状态或者复制已有的虚拟机会把网卡配置复制过来
//设置主从机的IP连接问题
主机/etc/hosts:
192.168.0.116 localhost
192.168.0.116 mynode
192.168.0.111 node1
192.168.0.112 node3
192.168.0.113 node2
副机1 /etc/hosts:
192.168.0.111 localhost
192.168.0.116 mynode
192.168.0.111 node1
192.168.0.112 node3
192.168.0.113 node2
副机2 /etc/hosts:
192.168.0.113 localhost
192.168.0.116 mynode
192.168.0.111 node1
192.168.0.112 node3
192.168.0.113 node2
副机3 /etc/hosts:
192.168.0.112 localhost
192.168.0.116 mynode
192.168.0.111 node1
192.168.0.112 node3
192.168.0.113 node2
//测试从Slave到Master的连接(在主机上操作)
ssh 192.168.0.111
ssh 192.168.0.112
ssh 192.168.0.113
//查看连接ip状态-可能有延迟,多敲几遍即可
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
//配置slaves文件(Master配置这个Salve文件就行,其他Slave机不需要配置)
//usr/local/app2/spark/spark/conf目录下
cp slaves.template slaves
vi slaves(因为我们配置了host,也可以直接用master和slave1,slave2进行配置,不需要IP地址,初次调试防止出错可以写上ip)
mynode
node1
node2
node3
//每台Slave机还需更改spark-env.sh配置
SPARK_LOCAL_IP改成node1,node2和node3
例:node1 spark-env.sh
export SPARK_LOCAL_IP=node1
//启动Spark集群
//进入spark sbin目录 -> 启动master,开启后使用jps指令查看spark开启结果,Worker Master出现即可
./start-all.sh
//spark bin目录 -> 看到一个spark图形即可
./spark-shell
//检测集群开启结果
使用master主机检测,我的是mynode,访问8080端口
localhost:8080
Workers可以查看start-all.sh的启动结果
Running Applications可以查看spark-shell的启动结果
Spark集群部署方法二:
//克隆虚拟机
已有的虚拟机(关闭状态)下右键点击“管理”–>“克隆”
克隆虚拟机中的当前状态
创建完整克隆
虚拟机名称自定义 集群node1/集群node2/集群node3 ,位置自定义
弹出三个√代表克隆完成
//不是关闭状态或者复制已有的虚拟机会把网卡配置复制过来
克隆完成后打开slave虚拟机分别 vi /etc/hosts 更改主机ip和主机名
192.168.0.111 localhost
192.168.0.111 node1
192.168.0.113 localhost
192.168.0.113 node2
192.168.0.112 localhost
192.168.0.112 node3
//master配置vi /etc/hosts
192.168.0.116 localhost
192.168.0.116 mynode
192.168.0.111 node1
192.168.0.112 node3
192.168.0.113 node2
//spark安装(在master机上操作)
1 解压缩/usr/local/app2/spark目录下
tar -zxvf spark-2.3.1-bin-hadoop2.6.tgz
mv spark-2.3.1-bin-hadoop2.6 spark
2 环境变量配置
export SPARK_HOME=/usr/local/app2/spark/spark
export PATH=$SPARK_HOME/sbin:$PATH
3 spark-env.sh配置/usr/local/app2/spark/spark/conf目录下 -> 备注spark-env.sh.template是spark的一个自带模板,SCALA没有安装所以先注释掉配置信息
cp spark-env.sh.template spark-env.sh
vi spark-env.sh,添加如下信息
export JSPARK_MASTER_IP=mynode //master的ip
export SSPARK_MASTER_PORT=7077 //提交任务的端口,默认是7077
export SPARK_WORKER_CORES=2 //每个worker从节点能够支配的core的个数
export SPARK_WORKER_MEMORY=3g //每个worker从节点能够支配的内存数
export JSPARK_MASTER_IP=mynode
export SSPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=3g
export JAVA_HOME=/usr/software/jdk1.8.0_11
export HADOOP_CONF_DIR=/usr/software/hadoop/etc/hadoop
//同步spark文件到其他节点上
scp -r /usr/local/app2/spark/spark root@node1:/usr/local/app2/spark/
scp -r /usr/local/app2/spark/spark root@node2:/usr/local/app2/spark/
scp -r /usr/local/app2/spark/spark root@node3:/usr/local/app2/spark/
//启动Spark集群
//进入spark sbin目录 -> 启动master,开启后使用jps指令查看spark开启结果,Worker Master出现即可
./start-all.sh
//spark bin目录 -> 看到一个spark图形即可
./spark-shell
//检测集群开启结果
使用master主机检测,我的是mynode,访问8080端口
localhost:8080
Workers可以查看start-all.sh的启动结果
Running Applications可以查看spark-shell的启动结果
总结:都可以达到集群部署效果,具体差别使用后再复议。