Spark集群搭建

Spark集群搭建

安装环境监测

搭建之前确认对应的java版本为8版本

在这里插入图片描述

搭建之前确认对应的 scala 版本为2.12.x版本

  [root@node01 ~]# rpm -ivh scala-2.12.11.rpm
  
  [root@node01 ~]# whereis scala
  
  [root@node01 ~]# vim /etc/profile
  export SCALA_HOME=/usr/share/scala
  export PATH=$SCALA_HOME/bin:$PATH
  
  [root@node01 ~]# source /etc/profile
  • 三台计算机Node01 Node02 Node03都需要安装Scala
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xKZBDIDP-1629537545310)(image/image-20210821164343273.png)]

standalone(Single)

## [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vbi4I33A-1629537545311)(image/image-20210821164437606.png)]

  • 下载上传解压删除安装包
  [root@node01 ~]# tar -zxvf spark-2.4.6-bin-without-hadoop-scala-2.12.tgz
  
  [root@node01 ~]# rm -rf spark-2.4.6-bin-without-hadoop-scala-2.12.tgz
  
  [root@node01 ~]# mv spark-2.4.6-bin-without-hadoop-scala-2.12 spark-2.4.6
  
  [root@node01 ~]# tar -zxvf spark-2.4.6-bin-without-hadoop-scala-2.12.tgz
  
  [root@node01 ~]# rm -rf spark-2.4.6-bin-without-hadoop-scala-2.12.tgz
  
  [root@node01 ~]# mv spark-2.4.6-bin-without-hadoop-scala-2.12 spark-2.4.6
  • 修改Spark工作节点
  [root@node01 conf]# mv slaves.template slaves
  [root@node01 conf]# vim slaves
  
  node01
  node02
  node03
  • 修改Spark环境

    • JAVA_HOME : 配置 java_home 路径
      SPARK_MASTER_HOST : master 节点的 ip
      SPARK_MASTER_PORT : 提交任务的端口,默认是 7077
      SPARK_WORKER_CORES :每个 worker 从节点能够支配的 core 核的个数
      SPARK_WORKER_MEMORY :每个 worker 从节点能够支配的内存数
[root@node01 conf]# mv spark-env.sh.template spark-env.sh
[root@node01 conf]# vim spark-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64
export SPARK_MASTER_HOST=node01
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=2g
export HADOOP_HOME=/opt/yjx/hadoop-3.1.2
export HADOOP_CONF_DIR=/opt/yjx/hadoop-3.1.2/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/opt/yjx/hadoop-3.1.2/bin/hadoopclasspath)
  • 同步到其他节点
  [root@node01 ~]# scp -r /opt/yjx/spark-2.4.6 root@node02:/opt/yjx/
  [root@node01 ~]# scp -r /opt/yjx/spark-2.4.6 root@node03:/opt/yjx/
  
  • 配置环境变量
  [root@node01 ~]# vim /etc/profile
  
  export SPARK_HOME=/opt/yjx/spark-2.4.6
  export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
  
  [root@node01 ~]# scp /etc/profile root@node02:/etc/profile
  [root@node01 ~]# scp /etc/profile root@node03:/etc/profile
  【123】source /etc/profile
  • 启动集群
  [root@node01 ~]# cd /opt/yjx/spark-2.4.6/sbin/
  [root@node01 sbin]# ./start-all.sh
  • 访问 http://192.168.88.101:8080/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBtRfEGq-1629537545313)(image/image-20210821165054745.png)]

  • tips:

    • 8080 是 Spark WEBUI 界面的端口, 7077 是 Spark 任务提交的端口。

    • 如需修改 master 的 WEBUI 端口:

    • 修改 $SPARK_HOME/sbin/start-master.sh 即可。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uSgZyIVv-1629537545314)(image/image-20210821165209941.png)]

  • 运行案例

  spark-submit --master spark://node01:7077 --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/sparkexamples_2.12-2.4.6.jar 10

standalone(HA)

高可用原理

  • Standalone集群只有一个Master,如果Master挂了就无法提交应用程序,需要给Master进行高可 用配置
  • Master的高可用可以使用fileSystem(文件系统)和zookeeper(分布式协调服务)
    • fileSystem只有存储功能,可以存储Master的元数据信息,用fileSystem搭建的Master高可 用,在Master失败时,需要我们手动启动另外的备用Master,这种方式不推荐使用。
    • zookeeper有选举和存储功能,可以存储Master的元数据信息,使用zookeeper搭建的 Master高可用,当Master挂掉时,备用的Master会自动切换,推荐使用这种方式搭建 Master的HA。

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aD7He4M5-1629537545315)(image/image-20210821165853131.png)]

.环境搭建

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cx8MO9A4-1629537545316)(image/image-20210821165915009.png)]

HA环境基于Single环境

  • 在 Spark Master 节点上配置spark-env.sh
  [root@node01 ~]# cd /opt/yjx/spark-2.4.6/conf/
  [root@node01 conf]# cp spark-env.sh.template spark-env.sh
  [root@node01 conf]# vim spark-env.sh
  
  export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPERD spark.deploy.zookeeper.url=node03:2181,node02:2181,node01:2181 -
  Dspark.deploy.zookeeper.dir=/sparkmasterHA"
  • 拷贝其他 worker 节点上
[root@node01 conf]# scp spark-env.sh root@node02:/opt/yjx/spark-2.4.6/conf/
[root@node01 conf]# scp spark-env.sh root@node03:/opt/yjx/spark-2.4.6/conf/
  • 在 Spark standby Master 节点上配置spark-env.sh
  [root@node02 ~]# vim /opt/yjx/spark-2.4.6/conf/spark-env.sh
  
  ## 修改 node01-->node02
  export SPARK_MASTER_HOST=node02
  • 启动集群
  Zookeeper :123】zkServer.sh start
  主节点:
  		[root@node01 ~]# cd /opt/yjx/spark-2.4.6/sbin/
  		[root@node01 sbin]# ./start-all.sh
  备用节点
  		[root@node02 ~]# cd /opt/yjx/spark-2.4.6/sbin/
  		[root@node02 sbin]# ./start-master.sh	

- 查看结果[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YcmvMYIr-1629537545316)(image/image-20210821170342949.png)]

  • 提交 SparkPi 程序, kill 主 Master 观察现象。
  spark-submit --master spark://node01:7077,node02:7077 --class
  org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.12-2.4.6.jar 10 10000
  • 注意点

    • 主备切换过程中不能提交 Application 。
    • 主备切换过程中不影响已经在集群中运行的 Application 。因为 Spark 是粗粒度资源调度。

standalone(UI)

UI环境基于Single或者HA环境

  • 修改spark默认配置
  [root@node01 ~]# cd /opt/yjx/spark-2.4.6/conf/
  
  [root@node01 conf]# cp spark-defaults.conf.template spark-defaults.conf
  
  [root@node01 conf]# vim spark-defaults.conf
  
  #开启记录事件日志的功能
  spark.eventLog.enabled true
  #设置事件日志存储的目录--注意点:配置的hdfs路径要存在。
  spark.eventLog.dir hdfs://hdfs-yjx/spark-logs/
  spark.history.fs.logDirectory hdfs://hdfs-yjx/spark-logs
  #日志优化选项,压缩日志
  spark.eventLog.compress true
  • 启动集群
  启动Hadoop集群
  [root@node01 ~]# start-all.sh
  [root@node01 ~]# hdfs dfs -mkdir -p /spark-logs
  启动日志服务
  [root@node01 sbin]# ./start-history-server.sh
  • 提交任务
  spark-submit \
  --master spark://node01:7077 \
  --class org.apache.spark.examples.SparkPi \
  $SPARK_HOME/examples/jars/spark-examples_2.12-2.4.6.jar 10

查看服务 http://192.168.88.101:18080/

SparkShell

  • 概念: SparkShell 是 Spark 自带的一个快速原型开发工具,也可以说是 Spark 的 scala

  • REPL(Read-Eval-Print-Loop) ,即交互式 shell 。支持使用 scala 语言来进行 Spark 的交互 式编程。

  • 使用:

    • 启动 Standalone 集群, ./start-all.sh
    • 在客户端上启动 spark-shell : spark-shell --master spark://node1:7077
  • 启动 hdfs ,创建目录 spark/test ,上传文件 wc.txt

    • 第一步:全面启动hadoop集群start-all.sh
    • 第二步:hdfs命令创建目录hdfs dfs -mkdir -p /spark/test
    • 第三步:上传文件至指定目录wc.txt hdfs dfs -put /wc.txt /spark/test/wc.txt
  • 运行 wordcount

sc.textFile("hdfs://node1:9000/spark/test/wc.txt").flatMap(.split(" ")).map((,1)).reduceByKey(+).foreach(println)

yarn模式

  • 借助于Hadoop的Yarn进行集群的资源管理,启动集群前配置和Standalone相同

  • spark-env.sh 文件追加如下内容

  ##前面的配置文件中已经设置过了
  export HADOOP_HOME=/opt/yjx/hadoop-3.1.2
  export HADOOP_CONF_DIR=/opt/yjx/hadoop-3.1.2/etc/hadoop
  • 启动集群
  ```apl
  启动Zookeeper:
  【123】zkServer.sh start
  启动Hadoop :
  [root@node01 ~]# start-all.sh
  启动Spark:
  [root@node01 ~]# cd /opt/yjx/spark-2.4.6/sbin/
  [root@node01 sbin]# ./start-all.sh
  • 访问 spark: http://192.168.88.101:8080/

    • hdfs: http://192.168.88.101:9870/
    • yarn: http://192.168.88.101:8088
  • 提交任务

  spark-submit --master yarn --class org.apache.spark.examples.SparkPi
  $SPARK_HOME/examples/jars/spark-examples_2.12-2.4.6.jar 10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值