看视频学习安装Spark,前提是已经配置好各个虚拟机的网络等等
https://www.bilibili.com/video/BV1vb41137Yv?p=5
1、spark官网下载
2、解压压缩包
cd /usr/src/spark
tar -zxvf spark-2.4.6-bin-hadoop2.7.tgz -C /root/src/
3、文件重命名
cd /root/src/spark-2.4.6-bin-hadoop2.7
cd conf
mv spark-env.sh.template spark-env.sh
mv slaves.template slaves
4、配置环境变量
vi spark-env.sh
export JAVA_HOME=/root/src/jdk1.8.0_171
export SPARK_MASTER_HOST=master
export SPARK_WORKER_PORT=7077
5、配置节点名称
vi slaves
slave1
slave2
6、拷贝设置到其它节点
for i in {1..2}; do scp -r /root/src/spark-2.4.6-bin-hadoop2.7/ slave$i:/root/src/;done
7、启动spark
cd /root/src/spark-2.4.6-bin-hadoop2.7
sbin/start-all.sh
sbin/stop-all.sh
8、查看管理节点
http://192.168.10.168:8080/
高可用集群安装
1、下载zookeeper
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
2、解压安装
cd /usr/src/zookper
tar -zxvf zookeeper.tar.gz -C /root/src/
3、配置文件(需要启动几个机器就配置几个机器的文件)
cd /root/src/zookeeper/conf
#cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
dataDir=/root/src/zookeeper/data
server.1=master:2888:3888
server.2=master2:2888:3888
server.3=master3:2888:3888
4、在dataDir的目录下创建myid文件,里面写上server.后面的文本
比如server.1就写1
比如server.2就写2
运行
systemctl stop firewalld
service iptables status
chkconfig iptables off
cd /root/src/zookeeper/bin
./zkServer.sh start
./zkServer.sh restart
./zkServer.sh stop
检查运行状态(显示正常需要启动所有配置好的机器)
./zkServer.sh status
jps
查看进程
netstat -nltp | grep 2181
杀死进程
kill -9 7018
作用:选举、保存活跃Master的信息、保存所有worker的资源信息和资源使用情况(为了故障切换)
1、配置环境变量
cd /root/src/spark-2.4.6-bin-hadoop2.7/conf
vi spark-env.sh
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark2"
export SPARK_WORKER_CORES=4
export SPARK_WORKER_MEMORY=6g
2、拷贝设置到其它节点
for i in {1..2}; do scp -r /root/src/spark-2.4.6-bin-hadoop2.7/conf/spark-env.sh slave$i:$PWD; done
for i in {2..3}; do scp -r /root/src/spark-2.4.6-bin-hadoop2.7/conf/spark-env.sh master$i:$PWD; done
3、启动集群
启动ZK集群
启动spark集群,但是只会启动一个Master,另外一个Master手动启动
永久关闭防火墙
systemctl disable firewalld.service
提交第-个spark应用到集群中运行
cd /root/src/spark-2.4.6-bin-hadoop2.7
bin/spark-submit --master spark://master:7077,master2:7077 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.4.6.jar 100
cd /root/src/spark-2.4.6-bin-hadoop2.7
bin/spark-submit --master spark://master:7077,master2:7077 --class org.apache.spark.examples.SparkPi --executor-memory 2g --total-executor-cores 8 examples/jars/spark-examples_2.11-2.4.6.jar 10000
-executor--memory每个executor使用的内存大小
--total-executor-cores整个app使用的核数
提交-个spark程序到spark集群,会产生哪些进程?
Spa rkSubmint(Driver)提交任务
Executor执行真正的计算任务的
提交任务可以指定多个master地址,目的是为了提交任务高可用
Spark Shell(是-一个交互式的命令行,里面可以写spark程序,方便学习和测试,他也是一个客户端,用于提交spark应用程序)
cd /root/src/spark-2.4.6-bin-hadoop2.7
bin/spark-shell
bin/spark-shell上面的方式没有指定master的地址,即用的是spark的local模式运行的
bin/spark-shell --master spark://master:7077,master2:7077
上面是指定了master的地址, 那么就会将任务提交到集群,开始时sparksubmit (客户端)要连接Master,并申请计算资源(内存和核数)
,Master进行资源调度(就是让那些worker启动Executor),在准备工作时,这些进程都已经创建好了
sc.textFile("/root/src/file/file1.txt").flatMap(_. split(" ")). map((_,1)). reduceByKey(_+_).collect
使用Hadoop上面hdfs的内容
先启动hdfs
sbin/start-dfs.sh
查看在/hdfsinput 下面有txt文件
sc.textFile("hdfs://master:9000/hdfsinput/file1.txt").flatMap(_. split(" ")). map((_,1)). reduceByKey(_+_).collect
更改权限
cd /root/src/zookeeper/data/version-2
chmod 777 acceptedEpoch
chmod 777 currentEpoch
chmod 777 snapshot.200000000
chmod 777 snapshot.500000000
Mast
er2
master
启动spark
Master2
Slave1
Slave2
第二个master启动
查看管理节点
http://192.168.10.168:8080/
备份管理节点
执行第一个spark程序(已有jar程序)
执行第一个spark程序(自己写的scala程序)
使用本地文件
进入spark-shell
bin/spark-shell
sc.textFile("/root/src/file/file1.txt").flatMap(. split(" ")). map((,1)). reduceByKey(+).collect
运行结果
使用Hadoop的hdfs文件
sc.textFile(“hdfs://master:9000/hdfsinput/file1.txt”).flatMap(. split(" ")). map((,1)). reduceByKey(+).collect
按照单词个数从多到少排序
sc.textFile(“hdfs://master:9000/hdfsinput/file1.txt”).flatMap(. split(" ")). map((,1)). reduceByKey(+).sortBy(_._2,false). collect
运行java打包的jar中的wordcount
cd /root/src/spark-2.4.6-bin-hadoop2.7
bin/spark-submit \
--master spark://master:7077,master2:7077 \
--class cn.edu360.spark.JavaWordCount \
--executor-memory 2g \
--total-executor-cores 8 \
/root/src/spark-2.4.6-bin-hadoop2.7/examples/jars/SparkTest-1.0-SNAPSHOT.jar \
hdfs://master:9000/hdfsinput/file1.txt \
hdfs://master:9000/output_dir
#删除hdfs目录
hadoop fs -rm -r hdfs://master:9000/output_dir