spark 查看yarn日志_解锁spark各种部署方式

解锁spark各种部署方式

?号外,号外!坏蛋哥又更新文章了,时隔几天,终于有空写分享文章了,前段时间因为阅读spark相关论文,没能及时更新,首先给小伙伴们说声抱歉。话不多说,开始今天的分享,今天坏蛋哥分享的是spark的部署方式,相信你跟着坏蛋哥的脚步来,即使是小白也能搭建成功。

画重点了-->spark有三种启动方式,分别对应的是:

  1. local  本机启动方式,根据设置线程数来决定executor(后面会介绍这个角色)的个数    2. stonealone 即用spark自带的分布式运算框架    3. yarn  基于yarn的运行框架

1 spark单机搭建

如果是单机,因为spark本生就有资源管理的功能,所以将spark包解压就可以直接运行spark-shell 来运行spark的scala脚本。(如果需要坏蛋哥搭建所用的spark安装包,后台回复【spark安装】即可获得哦)

注:如果是不同的安装包,将命令中的版本号换成你所对应的即可。

1.解压

#创建指定的文件夹mkdir /usr/spark#解压tar -zxvf tar -zxvf spark-2.4.5-bin-hadoop2.6.tgz  -C /usr/spark#更名mv spark-2.4.5-bin-hadoop2.6 spark
  1. 测试

#用spark自带的环境测试bin/spark-submit  \--class org.apache.spark.examples.SparkPi  \--executor-memory  1G  \--total-executor-cores  2   \./examples/jars/spark-examples_2.11-2.4.5.jar \  #注:上面需要根据自己的版本号进行更换100
  1. shell脚本启动单机环境

shell脚本启动是启动的scala和python的交互脚本,所以要玩spark的小伙伴最好要学习一下scala,记得有这样一个比喻,说:spark的处理能力就像孙悟空一样强大,那么scala就是孙悟空手中的金箍棒。可见scala对于spark的重要性。

#如果配置了环境变量,那么直接就可以运行,如果没有配,那么需要将spark的安装路径配置到环境变量中。spark-sheel local[*]#  local[ ]代表在本地环境下启动的线程数,可以理解每个线程充当一个slave。#  local[1] 代表启动一个线程,local[2]代表启动两个线程。#  local[*]代表以机器的内核数作为启动线程数,如果你的cpu是四核,那么就是启动四个线程。

2.  spark集群搭建

spark一般是使用基于yarn的方式进行部署,yarn部署方式难度也更大,如果能部署到yarn上,那部署stonealone就是小菜一碟的事情了(stonealone部署就是不配置zookeeper集群)。本例是基于zookeeper的高可用yarn集群的搭建。解释一下高可用(HIGH AVAILABLE),就是当管理机宕机后仍然能重新选举,然后让集群正常使用。废话少说,咱们直接开始。

yarn的安装可以参考坏蛋哥之前写的hadoop环境(hadoop自带yarn)搭建进行部署。hadoop环境搭建(详解)

2.1  zookeeper集群搭建
#解压缩文件mkdir /usr/zookeepertar -zvxf zookeeper-3.4.14.tar.gz -C /usr/zookeepermv zookeeper-3.4.14 zookeeper#配置zookeeper环境变量export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper/export PATH=$PATH:/$ZOOKEEPER_HOME/bin/#配置参数cp zoo_sample.cfg  zoo.cfg#具体参数# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial# synchronization phase can takeinitLimit=10# The number of ticks that can pass between# sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just# example sakes.dataDir=/usr/zookeeper/datadataLogDir=/usr/zookeeper/log# the port at which the clients will connectclientPort=2181# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60## Be sure to read the maintenance section of the# administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1# server.1 这个1是服务器的标识,可以是任意有效数字,标识这是第几个服务器节点,这个标识要写到dataDir目录下面myid文件里# 指名集群间通讯端口和选举端口server.1=hadoop001:2287:3387  #hadoop001,002,003换成对应ip地址server.2=hadoop002:2287:3387server.3=hadoop003:2287:3387

配置参数说明:

  • tickTime:用于计算的基础时间单元。比如 session 超时:N*tickTime;

  • initLimit:用于集群,允许从节点连接并同步到 master 节点的初始化连接时间,以 tickTime 的倍数来表示;

  • syncLimit:用于集群, master 主节点与从节点之间发送消息,请求和应答时间长度(心跳机制);

  • dataDir:数据存储位置;

  • dataLogDir:日志目录;

  • clientPort:用于客户端连接的端口,默认 2181

给zookeeper每个主机添加唯一ID:

#用scp分发配置,并分别在三台主机的 dataDir 目录下新建 myid 文件,并写入对应的节点标识。Zookeeper 集群通过 myid 文件识别集群节点,并通过上文配置的节点通信端口和选举端口来进行节点通信,选举出 Leader 节点。# 三台主机均执行该命令mkdir -vp  /usr/zookeeper/data/创建并写入节点标识到 myid 文件:# hadoopmater主机echo "1" > /usr/zookeeper/data/myid# hadoop1主机echo "2" > /usr/zookeeper/data/myid# hadoop2主机echo "3" > /usr/zookeeper/data/myid

启动集群并验证:

#分别在三台主机上,执行如下命令启动服务:zkServer.sh start#验证zkServer.sh status #查看集群各个节点状态

2.2  spark集群部署

解压和环境变量配置

#首先是解压包和配置环境 tar -zxvf  spark-2.2.3-bin-hadoop2.6.tgz -C /urs/spark #配环境 vim /etc/profile export SPARK_HOME=/usr/usr/spark-2.2.3-bin-hadoop2.6export  PATH=${SPARK_HOME}/bin:$PATHsource /etc/profile#配置相关配置文件#1.spark-env.sh     在spark的安装目录下的conf目录中 cp spark-env.sh.template spark-env.sh# 配置JDK安装位置JAVA_HOME=/usr/java/jdk1.8# 配置hadoop配置文件的位置HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.6.0-cdh5.15.2/etc/hadoop# 配置zookeeper地址,如果不是基于yarn那么下面的注释可以注释掉SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop001:2181,hadoop002:2181,hadoop003:2181

配置slaves(即配置所有的worker)

cp slaves.template slaves#添加hadoop002hadoop003#分发包scp -r /usr/spark/spark-2.4.0-bin-hadoop2.6/   hadoop1:usr/spark/scp -r /usr/spark/spark-2.4.0-bin-hadoop2.6/   hadoop2:usr/spark/

启动集群,首先启动zookeeper,然后启动hadoop,最后启动spark

#每台主机都需要执行下面的语句启动zookeeperzkServer.sh start#启动hadoop,在master中启动脚本# 启动dfs服务start-dfs.sh# 启动yarn服务start-yarn.sh#启动spark#进入 hadoop001 的 ${SPARK_HOME}/sbin 目录下,执行下面命令启动集群。执行命令后,会在 hadoop001 上启动 Maser 服务,会在 slaves 配置文件中配置的所有节点上启动 Worker 服务。start-all.sh#分别在 hadoop002 和 hadoop003 上执行下面的命令,启动备用的 Master 服务:# ${SPARK_HOME}/sbin 下执行start-master.sh

查看服务是否打开成功:

查看 Spark 的 Web-UI 页面,端口为 8080。此时可以看到 hadoop001 上的 Master 节点处于 ALIVE 状态,并有 3 个可用的 Worker 节点。

a64799b391a53a1f9caefad17165e087.png

而 hadoop002 和 hadoop003 上的 Master 节点均处于 STANDBY 状态,没有可用的 Worker 节点。

4f9d4705bfb2a25d854ff1e2a8164171.png

731b1355496302d9464c36dcd97dd6ef.png

验证高可用性:

此时可以使用 kill 命令杀死 hadoop001 上的 Master 进程,此时备用 Master 会中会有一个再次成为 主 Master,我这里是 hadoop002,可以看到 hadoop2 上的 Master 经过 RECOVERING 后成为了新的主 Master,并且获得了全部可以用的 Workers

c7d77e53eda2cfadd7870c10fa6fa77e.png

Hadoop002 上的 Master 成为主 Master,并获得了全部可以用的 Workers

此时如果你再在 hadoop001 上使用 start-master.sh 启动 Master 服务,那么其会作为备用 Master 存在。

在集群中跑测试代码:

#和单机环境下的提交到 Yarn 上的命令完全一致,这里以 Spark 内置的计算 Pi 的样例程序为例,提交命令如下:spark-submit \--class org.apache.spark.examples.SparkPi \--master yarn \--deploy-mode client \--executor-memory 1G \--num-executors 10 \/usr/app/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar \100

精彩文章推荐

  • 一个三本生考研心得

  •  动态规划(二)之打家劫舍

  •  大数据组件-Flume

  •  hadoop环境搭建(详解)

  •  Hadoop实践学习(一)

  •  hadoop实战(二)

  • 读大学了吗,怎么读才有意义

    ........

如果你也喜欢坏蛋哥的内容记得点赞加关注哦!自满和自卑是学习最大的阻碍,咱们下期见。

cd856a27f62b40a28eac47d53fa5bf02.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值