spark的standalone 分布式搭建

news2024/11/20 14:22:26

一、环境准备

集群环境hadoop11,hadoop12 ,hadoop13
安装 zookeeper 和 HDFS

1、启动zookeeper

-- 启动zookeeper(11,12,13都需要启动)
xcall.sh  zkServer.sh  start
-- 或者
zk.sh start
-- xcall.sh 和zk.sh都是自己写的脚本

在这里插入图片描述

-- 查看进程
jps 
-- 有QuorumPeerMain进程不能说明zookeeper启动成功
-- 需要查看zookeeper的状态
xcall.sh  zkServer.sh  status
-- 或者
zk.sh status


 -------查看zookeeper的状态 hadoop11 zookeeper-------
JMX enabled by default
Using config: /opt/installs/zookeeper3.4.6/bin/../conf/zoo.cfg
Mode: follower
 -------查看zookeeper的状态 hadoop12 zookeeper-------
JMX enabled by default
Using config: /opt/installs/zookeeper3.4.6/bin/../conf/zoo.cfg
Mode: leader
 -------查看zookeeper的状态 hadoop13 zookeeper-------
JMX enabled by default
Using config: /opt/installs/zookeeper3.4.6/bin/../conf/zoo.cfg
Mode: follower


-- 有leader,有follower才算启动成功

在这里插入图片描述

2、启动HDFS

[root@hadoop11 ~]# start-dfs.sh
Starting namenodes on [hadoop11 hadoop12]
上一次登录:三 816 09:13:59 CST 2023192.168.182.1pts/0 上
Starting datanodes
上一次登录:三 816 09:36:55 CST 2023pts/0 上
Starting journal nodes [hadoop13 hadoop12 hadoop11]
上一次登录:三 816 09:37:00 CST 2023pts/0 上
Starting ZK Failover Controllers on NN hosts [hadoop11 hadoop12]
上一次登录:三 816 09:37:28 CST 2023pts/0 上

jps查看进程

[root@hadoop11 ~]# xcall.sh jps
------------------------ hadoop11 ---------------------------
10017 DataNode
10689 DFSZKFailoverController
9829 NameNode
12440 Jps
9388 QuorumPeerMain
10428 JournalNode
------------------------ hadoop12 ---------------------------
1795 JournalNode
1572 NameNode
1446 QuorumPeerMain
1654 DataNode
1887 DFSZKFailoverController
1999 Jps
------------------------ hadoop13 ---------------------------
1446 QuorumPeerMain
1767 Jps
1567 DataNode
1679 JournalNode

查看HDFS高可用节点状态,出现一个active和一个standby说名HDFS启动成功(或者可以访问web端=>主机名:8020来查看状态)

[root@hadoop11 ~]# hdfs haadmin -getAllServiceState
hadoop11:8020                                      standby
hadoop12:8020                                      active

二、安装Spark

1、上传安装包到hadoop11

上传到/opt/modules目录下
我的是2.4.3版本的

在这里插入图片描述

2、解压

[root@hadoop11 modules]# tar -zxf spark-2.4.3-bin-hadoop2.7.tgz -C /opt/installs/
[root@hadoop11 modules]# cd /opt/installs/
[root@hadoop11 installs]# ll
总用量 4
drwxr-xr-x.  8 root root  198 621 10:20 flume1.9.0
drwxr-xr-x. 11 1001 1002  173 530 19:59 hadoop3.1.4
drwxr-xr-x.  8   10  143  255 329 2018 jdk1.8
drwxr-xr-x.  3 root root   18 530 20:30 journalnode
drwxr-xr-x.  8 root root  117 83 10:03 kafka3.0
drwxr-xr-x. 13 1000 1000  211 51 2019 spark-2.4.3-bin-hadoop2.7
drwxr-xr-x. 11 1000 1000 4096 530 06:32 zookeeper3.4.6

3、更名

[root@hadoop11 installs]# mv spark-2.4.3-bin-hadoop2.7/ spark
[root@hadoop11 installs]# ls
flume1.9.0  hadoop3.1.4  jdk1.8  journalnode  kafka3.0  spark  zookeeper3.4.6

4、配置环境变量

 vim /etc/profile
-- 添加
export SPARK_HOME=/opt/installs/spark
export PATH=$PATH:$SPARK_HOME/bin
-- 重新加载环境变量
source /etc/profile

5、修改配置文件

(1)conf目录下的 slaves 和 spark-env.sh

cd /opt/installs/spark/conf/
-- 给文件更名
mv slaves.template slaves
mv spark-env.sh.template spark-env.sh

#配置Spark集群节点主机名,在该主机上启动worker进程
[root@hadoop11 conf]# vim slaves
[root@hadoop11 conf]# tail -3 slaves
hadoop11
hadoop12
hadoop13

#声明Spark集群中Master的主机名和端口号
[root@hadoop11 conf]# vim spark-env.sh
[root@hadoop11 conf]# tail -3 spark-env.sh
SPARK_MASTER_HOST=hadoop11
SPARK_MASTER_PORT=7077

在这里插入图片描述

(2)sbin 目录下的 spark-config.sh

vim spark-config.sh
#在最后增加 JAVA_HOME 配置
export JAVA_HOME=/opt/installs/jdk1.8

在这里插入图片描述

6、配置JobHistoryServer

(1)修改配置文件

[root@hadoop11 sbin]# hdfs dfs -mkdir /spark-logs
[root@hadoop11 sbin]# cd ../conf/
[root@hadoop11 conf]# mv spark-defaults.conf.template spark-defaults.conf
[root@hadoop11 conf]# vim spark-defaults.conf

在这里插入图片描述

[root@hadoop11 conf]# vim spark-env.sh
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://hdfs-cluster/spark-logs"

这里使用hdfs-cluster的原因:
在scala中写hdfs-cluster而不写具体的主机名,需要将hadoop中的两个配置文件拷贝到resources目录下,原因和这里的一样(需要动态寻找可用的hadoop节点,以便读写数据)
在这里插入图片描述

(2)复制hadoop的配置文件到spark的conf目录下

[root@hadoop11 conf]# cp /opt/installs/hadoop3.1.4/etc/hadoop/core-site.xml ./
[root@hadoop11 conf]# cp /opt/installs/hadoop3.1.4/etc/hadoop/hdfs-site.xml ./
[root@hadoop11 conf]# ll
总用量 44
-rw-r--r--. 1 root root 1289 816 11:10 core-site.xml
-rw-r--r--. 1 1000 1000  996 51 2019 docker.properties.template
-rw-r--r--. 1 1000 1000 1105 51 2019 fairscheduler.xml.template
-rw-r--r--. 1 root root 3136 816 11:10 hdfs-site.xml
-rw-r--r--. 1 1000 1000 2025 51 2019 log4j.properties.template
-rw-r--r--. 1 1000 1000 7801 51 2019 metrics.properties.template
-rw-r--r--. 1 1000 1000  883 816 10:47 slaves
-rw-r--r--. 1 1000 1000 1396 816 11:03 spark-defaults.conf
-rwxr-xr-x. 1 1000 1000 4357 816 11:05 spark-env.sh

7、集群分发

分发到hadoop12 hadoop13 上

myscp.sh ./spark/ /opt/installs/

-- myscp.sh是脚本
[root@hadoop11 installs]# cat /usr/local/sbin/myscp.sh
#!/bin/bash

# 使用pcount记录传入脚本参数个数

pcount=$#
if ((pcount == 0))
then
   echo no args;
   exit;
fi
pname=$1
#根据给定的路径pname获取真实的文件名fname
fname=`basename $pname`
echo "$fname"
#根据给定的路径pname,获取路径中的绝对路径,如果是软链接,则通过cd -P 获取到真实路径
pdir=`cd -P $(dirname $pname);pwd`
#获取当前登录用户名
user=`whoami`
for((host=12;host<=13;host++))
do
  echo"scp -r $pdir/$fname $user@hadoop$host:$pdir"
  scp -r $pdir/$fname $user@hadoop$host:$pdir
done

查看hadoop12 和hadoop13 上是否有spark

hadoop12

[root@hadoop12 ~]# cd /opt/installs/
[root@hadoop12 installs]# ll
总用量 4
drwxr-xr-x. 11 root root  173 5月  30 19:59 hadoop3.1.4
drwxr-xr-x.  8   10  143  255 3月  29 2018 jdk1.8
drwxr-xr-x.  3 root root   18 5月  30 20:30 journalnode
drwxr-xr-x.  8 root root  117 8月   3 10:06 kafka3.0
drwxr-xr-x. 13 root root  211 8月  16 11:13 spark
drwxr-xr-x. 11 root root 4096 5月  30 06:39 zookeeper3.4.6

hadoop13

[root@hadoop13 ~]# cd /opt/installs/
[root@hadoop13 installs]# ll
总用量 4
drwxr-xr-x. 11 root root  173 5月  30 19:59 hadoop3.1.4
drwxr-xr-x.  8   10  143  255 3月  29 2018 jdk1.8
drwxr-xr-x.  3 root root   18 5月  30 20:30 journalnode
drwxr-xr-x.  8 root root  117 8月   3 10:06 kafka3.0
drwxr-xr-x. 13 root root  211 8月  16 11:13 spark
drwxr-xr-x. 11 root root 4096 5月  30 06:39 zookeeper3.4.6

三、启动spark

在Master所在的机器上启动

[root@hadoop11 installs]# cd spark/sbin/
# 开启standalone分布式集群
[root@hadoop11 sbin]# ./start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-hadoop11.out
hadoop13: starting org.apache.spark.deploy.worker.Worker, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop13.out
hadoop12: starting org.apache.spark.deploy.worker.Worker, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop12.out
hadoop11: starting org.apache.spark.deploy.worker.Worker, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop11.out
#开启JobHistoryServer
[root@hadoop11 sbin]# ./start-history-server.sh
starting org.apache.spark.deploy.history.HistoryServer, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.history.HistoryServer-1-hadoop11.out

在这里插入图片描述

查看 web UI

查看spark的web端

访问8080端口:
在这里插入图片描述

查看历史服务

访问18080端口:
在这里插入图片描述

四、初次使用

1、使用IDEA开发部署一个spark程序

(1)pom.xml

<dependencies>
        <!-- spark依赖-->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.4.3</version>
        </dependency>
    </dependencies>

    <build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>2.8</version>
            </extension>
        </extensions>
        <plugins>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>wagon-maven-plugin</artifactId>
                <version>1.0</version>
                <configuration>
                    <!--上传的本地jar的位置-->
                    <fromFile>target/${project.build.finalName}.jar</fromFile>
                    <!--远程拷贝的地址-->
                    <url>scp://root:root@hadoop11:/opt/jars</url>
                </configuration>
            </plugin>
            <!-- maven项目对scala编译打包 -->
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>4.0.1</version>
                <executions>
                    <execution>
                        <id>scala-compile-first</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

(2)sparkWordCount.scala

object sparkWordCount {
  def main(args: Array[String]): Unit = {
    //1.建立sparkContext对象
    val conf = new SparkConf().setMaster("spark://hadoop11:7077").setAppName("sparkWordCount")
    val sc = new SparkContext(conf)
    //2.对文件进行操作
    
    sc.textFile("hdfs://hadoop11:8020/spark/a.txt")
      .flatMap(v=>v.split(" "))
      .map(v=>(v,1))
      .groupBy(v=>v._1)
      .map(v=>(v._1,v._2.size))
      .saveAsTextFile("hdfs://hadoop11:8020/spark/out1")
      /* 
   //把hdfs-site.xml和core-site.xml拷贝到resources目录下,这里的主机名可以写成hdfs-cluster
    sc.textFile("hdfs://hdfs-cluster/spark/a.txt")
      .flatMap(v=>v.split(" "))
      .map(v=>(v,1))
      .groupBy(v=>v._1)
      .map(v=>(v._1,v._2.size))
      .saveAsTextFile("hdfs://hdfs-cluster/spark/out1")
      */
    //3.关闭资源
    sc.stop()
    }

(3)打包,上传

要现在hadoop11的 /opt下面新建一个jars文件夹

[root@hadoop11 hadoop]# cd /opt/
[root@hadoop11 opt]# mkdir jars
[root@hadoop11 opt]# ll
总用量 0
drwxr-xr-x. 9 root root 127 816 10:39 installs
drwxr-xr-x. 2 root root   6 816 14:05 jars
drwxr-xr-x. 3 root root 179 816 10:33 modules
[root@hadoop11 opt]# cd jars/

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(4)运行这个jar包

spark-submit --master spark://hadoop11:7077 --class day1.sparkWordCount /opt/jars/spark-test-1.0-SNAPSHOT.jar

看一下8080端口:
在这里插入图片描述

看一下18080端口:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/885777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CTF-web】备份是个好习惯(查找备份文件、双写绕过、md5加密绕过)

题目链接&#xff1a;https://ctf.bugku.com/challenges/detail/id/83.html 经过扫描可以找到index.php.bak备份文件&#xff0c;下载下来后打开发现是index.php的原代码&#xff0c;如下图所示。 由代码可知我们要绕过md5加密&#xff0c;两数如果满足科学计数法的形式的话&a…

centos7离线安装gdal3.6.3

本文档以纯离线环境为基础&#xff0c;所有的安装包都是提前下载好的。以gdal3.6.3为例&#xff08;其他版本安装步骤或方式可能不同&#xff09;&#xff0c;在centos7系统离线安装&#xff0c;并运行java项目&#xff0c;实现在java服务中调用gdal库解析地理数据。以下任意组…

python的 __all__ 用法

一、介绍 在Python中&#xff0c;__all__通常用于定义模块的公开接口。在使用from module import *语句时&#xff0c;此时被导入模块若定义了__all__属性&#xff0c;则只有__all__内指定的属性、方法、类可被导入&#xff1b;若没定义&#xff0c;则导入模块内的所有公有属性…

华为公开“倒装芯片封装”创新技术,改善散热性能,火龙秒变冰龙

根据华为技术有限公司公开的专利申请&#xff0c;他们提出了一项名为“具有改进的热性能的倒装芯片封装”的创新技术。这项技术旨在改善各种专利应用设备的散热性能&#xff0c;涉及的芯片类型包括CPU、GPU、FPGA和ASIC等。 这些设备可以是智能手机、平板电脑、可穿戴移动设备、…

CUDA计算超时(TDR)和阻塞界面问题的处理参考方法

本文提供一种解决单个英伟达独立显卡(终端用户常见的情形)上计算密集导致程序崩溃和电脑界面卡死的问题参考方法,采取降低效率和花费更多时间的思路来解决崩溃和卡顿的问题,即让CPU占有率不是一直100%,也不会因为被TDR机制打断。 如上图,在GPU-Z软件中看到“GPU Load”没…

实施统一待办:如何将“人找事变成事找人”

当企业信息化发展到一定程度&#xff0c;往往会呈现一种局面&#xff1a;专业的咖&#xff0c;管专业的事。如HRM管企业的人事信息、SRM管企业与供应商之间的合作关系、CRM管企业与客户之间的互动和沟通等。 然而当这些系统叠加在一起时&#xff0c;奇妙的化学反应产生了&#…

C#工程建立后修改工程文件名与命名空间

使用之前的项目做二次开发&#xff0c;项目快结束的时候&#xff0c;需要把主项目的名称修改成我们想要的。 之前从来没有这么干过&#xff0c;记录一下。 步骤如下&#xff1a; 1&#xff1a;打开vs2010项目解决方案&#xff0c;重命名&#xff0c;如下图所示&#xff1a; …

stack 、 queue的语法使用及底层实现以及deque的介绍【C++】

文章目录 stack的使用queue的使用适配器queue的模拟实现stack的模拟实现deque stack的使用 stack是一种容器适配器&#xff0c;具有后进先出&#xff0c;只能从容器的一端进行元素的插入与提取操作 #include <iostream> #include <vector> #include <stack&g…

猿人学刷题系列(第一届比赛)——第三题

题目&#xff1a;抓取下列5页商标的数据&#xff0c;并将出现频率最高的申请号填入答案中 地址&#xff1a;https://match.yuanrenxue.cn/match/3 本题主要考察请求逻辑&#xff0c;可以借助fiddler或Charles等抓包工具进行分析。首先通过浏览器来简单进行请求逻辑分析。 从抓…

Linux系统下消息中间件RocketMQ下载、安装、搭建、配置、控制台rocketmq-dashboard的安装保姆级教程 rocketmq ui

这里给出我使用的 RocketMQ 版本&#xff08;5.1.3&#xff09;、RocketMQ-Dashboard 版本的百度网盘链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1HaKBBDGWZ0WKLGgVwIG9pw 提取码&#xff1a;1234 文章目录 一. 官网下载安装二、启动NameServer三、启动Broker四…

Linux学习之初识Linux

目录 一.Linux的发展历史及概念 1.什么是Linux UNIX发展的历史&#xff1a; Linux发展历史&#xff1a; 2. 开源 商业化发行版本 二. 如何搭建Linux环境 Linux 环境的搭建方式主要有三种&#xff1a; 1. 直接安装在物理机上 2. 使用虚拟机软件 3. 使用云服务器 三. …

4.SpringCloud

1.SpringCloud概述 Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具&#xff08;例如配置管理&#xff0c;服务发现&#xff0c;断路器&#xff0c;智能路由&#xff0c;微代理&#xff0c;控制总线&#xff0c;一次性令牌&#xff0c;全局锁&#xff0c;…

【游戏评测】河洛群侠传一周目玩后感

总游戏时长接近100小时&#xff0c;刚好一个月。 这两天费了点劲做了些成就&#xff0c;刷了等级&#xff0c;把最终决战做了。 总体感觉还是不错的。游戏是开放世界3D游戏&#xff0c;Unity引擎&#xff0c;瑕疵很多&#xff0c;但胜在剧情扎实&#xff0c;天赋系统、秘籍功法…

读书笔记 |【项目思维与管理】➾ 成功的项目需要有效的管理

读书笔记 |【项目思维与管理】➾ 成功的项目需要有效的管理 一、项目:一项难以完成的使命二、要管理项目先要理解"管理"三、项目管理成功的标准四、使项目利益相关者满意 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 如果你没有…

Activity启动模式中的生命周期

彻底明白Activity启动模式中的生命周期&#xff0c;从此不再成为面试难点。 参考&#xff1a; https://www.zhihu.com/tardis/zm/art/429845377?source_id1003 https://developer.aliyun.com/article/951609 https://cloud.tencent.com/developer/article/1763205 Activity…

2020年9月全国计算机等级考试真题(C语言二级)

2020年9月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 有下列程序&#xff1a; #include<stdio.h> main() { FILE*fp;int k,n,a[6]{1,2,3,4,5,6}; fpfopen("d2.dat","w"); fprintf(fp,"%d%d%d\n",a[0],…

代码随想录章节目录—力扣算法题系列:数组.Java版(可点击文中超链接跳转到想看的题目)

版本说明 当前版本号[20230816]。 版本修改说明20230816初版 目录 文章目录 版本说明目录数组总结篇数组理论基础数组的经典题目二分法双指针法滑动窗口模拟行为 总结 数组总结篇 数组理论基础 数组是非常基础的数据结构&#xff0c;在面试中&#xff0c;考察数组的题目一…

B-树和B+树的区别

B-树和B树的区别 一、B-tree数据存储 在下图中 P 代表的是指针&#xff0c;指向的是下一个磁盘块。在第一个节点中的 16、24 就是代表我们的 key 值是什么。date 就是这个 key 值对应的这一行记录是什么。 假设寻找 key 为 33 的这条记录&#xff0c;33 在 16 和 34 中间&am…

Kubernetes入门 五、深入Pod:探针和生命周期

目录 探针探针类型LivenessProbeReadinessProbeStartupProbe&#xff1a; 探测方式ExecActionTCPSocketActionHTTPGetAction 参数配置操作示例 生命周期钩子函数生命周期 探针 所谓的探针就是容器内应用的监测机制&#xff0c;为了确保容器在部署后确实处在正常运行状态。 比…

系统驱动-点亮LED灯

实现LED点亮 demo.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include <linux/device.h> #include "head.h" int major; char kbuf[12…