环境
- 宿主机:Windows 10 64_bit
- 虚拟机:VMware 15 pro
- CentOS 7.5 64_bit(3台:1个master、2个slave)
- Hadoop-2.6.5
- MySQL 5.7.26
- scala-2.11.4
- spark-2.0.2
- ssh工具:SecureCRT 7.3
目录
----1.2 从主节点master复制【spark和scala包】到从节点slave1和slave2
正文
主节点master、从节点slave1和slave2都需要安装spark和scala。
0、准备工作
第一步:下载安装文件(压缩包)
第二步:将下载的文件上传到Linux,下方利用的是SecureCRT的SFTP会话窗口
sftp> pwd
/opt/bigdata
sftp> put E:\share\scala-2.11.4.tgz
Uploading scala-2.11.4.tgz to /opt/bigdata/scala-2.11.4.tgz
100% 25888KB 25888KB/s 00:00:00
E:/share/scala-2.11.4.tgz: 26509669 bytes transferred in 0 seconds (25888 KB/s)
sftp> put E:\share\spark-2.0.2-bin-hadoop2.6.tgz
Uploading spark-2.0.2-bin-hadoop2.6.tgz to /opt/bigdata/spark-2.0.2-bin-hadoop2.6.tgz
100% 180703KB 8604KB/s 00:00:21
E:/share/spark-2.0.2-bin-hadoop2.6.tgz: 185040619 bytes transferred in 21 seconds (8604 KB/s)
sftp>
第三步:解压
[root@master bigdata]# tar zxvf spark-2.0.2-bin-hadoop2.6.tgz
...
[root@master bigdata]# tar zxvf scala-2.11.4.tgz
...
1、配置
1.0 配置spark-env.sh
文件
[root@master bigdata]# cd spark-2.0.2-bin-hadoop2.6/conf
[root@master conf]# pwd
/opt/bigdata/spark-2.0.2-bin-hadoop2.6/conf
[root@master conf]# cp spark-env.sh.template spark-env.sh
[root@master conf]# vi spark-env.sh
尾部增加下方几句:
export SCALA_HOME=/opt/bigdata/scala-2.11.4
export JAVA_HOME=/opt/bigdata/jdk1.8.0_211
export HADOOP_HOME=/opt/bigdata/hadoop-2.6.5
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/opt/bigdata/spark-2.0.2-bin-hadoop2.6
SPARK_DRIVER_MEMORY=1G
1.1 在slaves
文件中添加从节点主机名
[root@master conf]# pwd
/opt/bigdata/spark-2.0.2-bin-hadoop2.6/conf
[root@master conf]# cp slaves.template slaves
[root@master conf]# vi slaves
将localhost注释掉,添加slave1和slave2
#localhost
slave1
slave2
1.2 从主节点master复制【spark和scala包】到从节点slave1和slave2
[root@master spark-2.0.2-bin-hadoop2.6]# scp -r /opt/bigdata/spark-2.0.2-bin-hadoop2.6 root@slave1:/opt/bigdata/spark-2.0.2-bin-hadoop2.6
[root@master spark-2.0.2-bin-hadoop2.6]# scp -r /opt/bigdata/spark-2.0.2-bin-hadoop2.6 root@slave2:/opt/bigdata/spark-2.0.2-bin-hadoop2.6
[root@master spark-2.0.2-bin-hadoop2.6]# scp -r /opt/bigdata/scala-2.11.4 root@slave1:/opt/bigdata/scala-2.11.4
[root@master spark-2.0.2-bin-hadoop2.6]# scp -r /opt/bigdata/scala-2.11.4 root@slave2:/opt/bigdata/scala-2.11.4
1.3 配置环境变量/etc/profile
文件
[root@master conf]# vi /etc/profile
尾部增加下方:
SPARK_HOME=/opt/bigdata/spark-2.0.2-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin
并在从节点slave1和slave2添加上述两行:
[root@slave1 slave1]# vi /etc/profile
SPARK_HOME=/opt/bigdata/spark-2.0.2-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin
[root@slave2 slave2]# vi /etc/profile
SPARK_HOME=/opt/bigdata/spark-2.0.2-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin
1.4 主从节点都重新加载环境变量
3个节点都重新加载环境变量
[root@master conf]# source /etc/profile
2、启动、关闭集群
启动
[root@master spark-2.0.2-bin-hadoop2.6]# /opt/bigdata/spark-2.0.2-bin-hadoop2.6/sbin/start-all.sh
查看服务进程
master,显示Master
进程即可
[root@master spark-2.0.2-bin-hadoop2.6]# jps
32423 Master
32551 Jps
28808 SecondaryNameNode
28667 NameNode
28955 ResourceManager
30398 QuorumPeerMain
slave1和slave2,都显示worker
即可
[root@slave1 slave1]# jps
10144 NodeManager
11728 Worker
10514 QuorumPeerMain
11779 Jps
10072 DataNode
浏览器访问:http://master:8080/
关闭
[root@master spark-2.0.2-bin-hadoop2.6]# /opt/bigdata/spark-2.0.2-bin-hadoop2.6/sbin/stop-all.sh
slave1: stopping org.apache.spark.deploy.worker.Worker
slave2: stopping org.apache.spark.deploy.worker.Worker
stopping org.apache.spark.deploy.master.Master
访问WEB:
- namenode在master节点:
http://master:50070/
- resourcemanager在slave1节点:
http://slave1:8088
- 每个节点都有nodemanager:
http://master:8042
3、认识目录结构
[root@master spark-2.0.2-bin-hadoop2.6]# tree -L 1
.
├── bin --可执行文件(运行脚本)
├── conf --配置文件
├── data --例子里用到的一些数据
├── examples --自带的例子一些源代码
├── jars --jar包
├── LICENSE
├── licenses --license协议声明文件
├── logs --存放master、worker、history server运行日志
├── metastore_db
├── NOTICE
├── python --使用python开发程序
├── R --R开发程序
├── README.md --包含一些入门的spark说明
├── RELEASE
├── sbin --集群启停,因为spark有自带的集群环境
├── work
└── yarn
16 directories, 6 files
其中,/work
目录:用以存放从HttpFileServer下载下来的第三方依赖、及Executor运行时生成的日志信息。
为了解决Executor启动时依赖的Jar问题,Driver在启动时要启动HttpFileServer存储第三方jar包;然后由worker从HttpFileServer来获取。为此HttpFileServer需要创建相应的目录,HttpFileServer创建目录的过程详见于SparkEnv.scala
中create
函数,而worker也需要创建相应的目录,即/work
。