2.Spark运行模式

2023-11-13

1.Spark运行模式概述

  1. Local
    多用于本地测试,如在IDEA、PyCharm、Visual StudioCode中写程序测试等。
  2. Standalone
    Standalone是Spark自带的一个资源调度框架,它支持完全分布式。
  3. Yarn
    Hadoop生态圈里面的一个资源调度框架,Spark也是可以基于Yarn来计算的。
  4. Windows模式
  5. 云服务模式(运行在云平台上)
  6. Kubernetes(K8S)容器模式
    Spark中的各个角色运行在Kubernetes的容器内部,并组成Spark集群环境。容器化部署是目前业界很流行的一项技术,基于Docker镜像运行能够让用户更加方便地对应用进行管理和运维。容器管理工具中最为流行的就是(K8S),而Spark也在新版本中支持了k8s部署模式。感兴趣可以扩展:https://spark.apache.org/docs/latest/running-on-kubernetes.html
  7. Mesos
    Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核,在Twitter得到广泛使用,管理着Twitter超过30,0000台服务器上的应用部署,但是在国内,依然使用着传统的Hadoop大数据框架,所以国内使用Mesos框架的并不多

2.在Linux上安装Anaconda

  1. 上传安装包Anaconda3-Linux-x86_64.sh到node1的/opt/apps
  2. 安装Anaconda3:
[root@node1 ~]# cd /opt/apps
[root@node1 apps]# ls
hadoop-3.1.3.tar.gz                             mysql-community-common-5.7.28-1.el7.x86_64.rpm  mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-client-5.7.28-1.el7.x86_64.rpm  mysql-community-libs-5.7.28-1.el7.x86_64.rpm    mysql-community-server-5.7.28-1.el7.x86_64.rpm
[root@node1 apps]# yum install lrzsz -y # 安装完之后直接拖拽上来即可
[root@node1 apps]# rz -E
rz waiting to receive.
[root@node1 apps]# ls
Anaconda3-Linux-x86_64.sh                       mysql-community-common-5.7.28-1.el7.x86_64.rpm       mysql-community-server-5.7.28-1.el7.x86_64.rpm
hadoop-3.1.3.tar.gz                             mysql-community-libs-5.7.28-1.el7.x86_64.rpm
mysql-community-client-5.7.28-1.el7.x86_64.rpm  mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
# 分发到其他虚拟机上
[root@node1 apps]# scp Anaconda3-Linux-x86_64.sh node2:`pwd`
Anaconda3-Linux-x86_64.sh                                                                                                                  100%  544MB  60.5MB/s   00:09    
[root@node1 apps]# scp Anaconda3-Linux-x86_64.sh node3:`pwd`
Anaconda3-Linux-x86_64.sh                                                                                                                  100%  544MB  63.0MB/s   00:08    
[root@node1 apps]# scp Anaconda3-Linux-x86_64.sh node4:`pwd`
Anaconda3-Linux-x86_64.sh                                                                                                                  100%  544MB  63.3MB/s   00:08  

# 安装依赖 (四台虚拟机一样操作)
[root@node1 apps]# sh ./Anaconda3-Linuxx86_64.sh
......
Please, press ENTER to continue
>>>  #按 Enter键
===================================
End User License Agreement - Anaconda
Individual Edition
===================================
......
Anaconda reserves all rights not expressly
granted to you in this Agreement.
--More--  # 按8次空格
......
Do you accept the license terms? [yes|no]
[no] >>> yes   #是否接受许可 输入yes 按下
Enter
Anaconda3 will now be installed into this
location:
/root/anaconda3
  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below
#输入anaconda3的安装路径 推荐 /opt/anaconda3
[/root/anaconda3] >>> /opt/anaconda3
PREFIX=/opt/anaconda3
Unpacking payload ...
Preparing transaction: done
Executing transaction: done
installation finished.
Do you wish the installer to initialize
Anaconda3
by running conda init? [yes|no]#是否要初始化 
yes 按下Enter键
[no] >>> yes
Thank you for installing Anaconda3!
==========================================
=================
......
[root@node1 apps]#

关闭XShell连接,重新连接。
(base) [root@node1 ~]#
看到这个Base开头表明安装好了,base是默认的虚拟环境。

  1. 修改Anaconda3的连接源,改为国内的清华大学的源,否则以后安装会很慢,修改/root/.condarc:
channels:
  - defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

node2、node3、node4执行同样的操作

3. 在Linux上安装PySpark

创建 pyspark_env 虚拟环境 以及安装虚拟环境所需要的包 pyspark jieba pyhive
node1-4一样操作

[root@node1 ~]# conda create -n pyspark_env python=3.8
输入y
#
# To activate this environment, use
#
#     $ conda activate pyspark_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

安装pyspark在虚拟环境中
(base) [root@node1 ~]# conda activate pyspark_env # 进入虚拟环境
(pyspark_env) [root@node1 ~]# conda install pyspark

安装jieba分词在虚拟环境中
(pyspark_env) [root@node1 ~]#  pip install pyhive jieba -i https://pypi.tuna.tsinghua.edu.cn/simple

测试
(pyspark_env) [root@node1 ~]# conda info -e
# conda environments:
#
base                     /opt/anaconda3
pyspark_env           *  /opt/anaconda3/envs/pyspark_env

(pyspark_env) [root@node1 ~]# python
Python 3.8.16 (default, Mar  2 2023, 03:21:46) 
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyspark

删除虚拟环境命令

conda remove -n pyspark_env --all

4.在Linux上安装搭建Local

官方下载地址:https://dlcdn.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz

  • PYTHON 推荐3.8
  • JDK 1.8 如(我安装的是1.8.0_221,即8u221)自 Spark 3.2.0 起,Java 8 对 8u201 版本的支
    持已被弃用。

node1上做如下操作
将spark-3.2.1-bin-hadoop3.2.tgz上传到/opt/apps目录下
解压spark-3.2.1-bin-hadoop3.2.tgz文件到/opt目录下

- JAVA_HOME: 告知Spark JDK在哪里(已配过)
- HADOOP_HOME: 告知Spark Hadoop在哪里(已配过)
- HADOOP_CONF_DIR: 告知Spark Hadoop的配置文件在哪
里
- SPARK_HOME: 表示Spark安装路径在哪里
- PYSPARK_PYTHON: 表示Spark想运行Python程序, 那么去哪里找python执行器这5个环境变量 都需要配置在: `/etc/profile`中(尾部追加):
(base) [root@node1 apps]# tar -zxvf spark-3.2.1-bin-hadoop3.2.tgz -C /opt/
修改名称
(base) [root@node1 apps]# cd ../
(base) [root@node1 opt]# mv spark-3.2.1-bin-hadoop3.2/ spark-3.2.1
到尾部追加
(pyspark_env) [root@node1 ~]# vim /etc/profile
# Spark环境变量配置
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/opt/spark-3.2.1
export
PYSPARK_PYTHON=/opt/anaconda3/envs/pyspark_env/
bin/python
export
PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

刷新配置环境,使得环境变量生效
(pyspark_env) [root@node1 ~]# source /etc/profile

(pyspark_env) [root@node1 conf]# pwd
/opt/spark-3.2.1/conf
(pyspark_env) [root@node1 conf]# cp log4j.properties.template log4j.properties

完整配置文件

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}


if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    USER="`/usr/bin/id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
fi

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then 
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

unset i
unset -f pathmunge
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# Spark环境变量配置
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/opt/spark-3.2.1
export PYSPARK_PYTHON=/opt/anaconda3/envs/pyspark_env/bin/python
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

pyspark程序, 可以提供一个 交互式 的 Python解释器环境, 在这里面可以写普通python代码

任何位置直接输入都可以使用
(pyspark_env) [root@node1 conf]# pyspark
>>> sc.parallelize([1,2,3]).map(lambda x:x*2).collect()
[2, 4, 6]   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.Spark运行模式 的相关文章

  • 华为防火墙默认密码是什么?

    华为默认密码是什么 分享至 小王邀请您加入牛B的IT关键业务推动者社区 点击领取12G的软考 PMP资料包 特训营名额 gt gt 售前工程师系列 教你写解决方案 gt gt ld11235813 荣誉会员 Rank 12Rank 12Ra
  • 华为动态pnat配置

  • 微软宣布IE9正式版发布日期

    微软上月曾透露会在3月14日于美国德克萨斯州奥斯汀市SXSW音乐电影节上举办一个庆祝派对 从那时起就有很多猜想 我们才曾猜测微软届时会正式发布IE9 今天 微软终于不再卖关子 3月14日 也就是下周一 微软将正式发布IE9 微软证实 美国太
  • TensorFlow之双隐含层多层感知器(MLP)

    程序改自上一篇博客 使用了双隐含层 第二层隐含层初始w需要和第一层类似 否则程序正确率一直在0 1左右 修改后的程序正确率也在98 左右 coding utf 8 from tensorflow examples tutorials mni
  • 整理一些windows的bat命令及语法

    ver 在DOS窗口下显示版本信息 winver 弹出一个窗口显示版本信息 内存大小 系统版本 补丁版本 计算机名 format 盘符 FS 类型 格式化磁盘 类型 FAT FAT32 NTFS 例 Format D FS NTFS md

随机推荐

  • python基础系列之元组

    元组应用场景 储存多个数据 但是这些数据不可修改 我们知道列表可以储存多个数据 但是数据可增加 修改 删除 这也是元组和列表不一样的地方 如何定义一个元组 多个数据元组 t1 10 20 30 单个数据元组 t2 10 注意在定义单个数据的
  • 常量表达式函数

    我们可以在函数返回类型前加入关键字constexpr来使其成为常量表达式函数 但并非所有的函数都有资格成为常量表达式函数 事实上 常量表达式函数的要求非常严格 总结如下 函数体只有单一的return返回语句 函数必须返回值 不能是void函
  • 合并排序-递归分治

    按我的想法 简单地说 合并排序的思路就是 先递归 后排序 include
  • Java中的运算符

    1 算术运算符 基本四则运算符 1 规则比较简单 需要注意的是除法 int int 的结果还是 int 要想结果中有小数需要使用 double 类型 0 不能用来做除数 2 在Java中 表示取余 不仅可以对 int 求模 也可以对 dou
  • Tomcat Server处理一个http请求的过程

    Tomcat Server处理一个http请求的过程 假设来自客户的请求为 http localhost 8080 wsota wsota index jsp 1 请求被发送到本机端口8080 被在那里侦听的Coyote HTTP 1 1
  • 爬虫逆向实战(13)-某课网登录

    一 数据接口分析 主页地址 某课网 1 抓包 通过抓包可以发现登录接口是user login 2 判断是否有加密参数 请求参数是否加密 通过查看 载荷 模块可以发现有一个password加密参数 还有一个browser key这个可以写死不
  • C++ Pat甲级1013 Battle Over Cities (25 分)(求图的连通分量dfs)

    1013 Battle Over Cities 25 分 It is vitally important to have all the cities connected by highways in a war If a city is
  • 数字SOC设计之低功耗设计入门(六)——门级电路低功耗设计优化

    三 门级电路低功耗设计优化 1 门级电路的功耗优化综述 门级电路的功耗优化 Gate Level Power Optimization 简称GLPO 是从已经映射的门级网表开始 对设计进行功耗的优化以满足功耗的约束 同时设计保持其性能 即满
  • 【STM32篇】驱动MXL90614红外测温模块

    本次实验使用的测温模块型号GY 906 DCC模块 测距为10cm左右 一 简介 MLX90614 是一款红外非接触温度计 TO 39 金属封装里同时集成了红外感应热电堆探测器芯片和信处理专用集成芯片 由于集成了低噪声放大器 17 位模数转
  • 文件读/写操作 import pickle

    文件写 开 文件变量 open 文件路径文件名 web 存 pickle dump 待写入的变量 文件变量 关 文件变量 close 文件读 开 文件变量 open 文件路径文件名 rb 取 放内容的变量 pickle load 文件变量
  • 小程序 -- 分包

    来源 1 什么是分包 分包指的是把一个完整的小程序项目 按照需求划分为不同的子包 在构建时打包成不同的分包 用户在使用时按需进行加载 2 分包的好处 对小程序进行分包的好处主要有以下两点 可以优化小程序首次启动的下载时间 在多团队共同开发时
  • 二叉树之层次遍历(js)

    二叉树之层次遍历 输入一棵二叉树 你的任务是从上到下 从左到右的顺序输出各个结点的值 每个结点都是按照从根节点到它移动序列给出 L表示左 R表示右 在输入中 每个结点的左右括号之间没有空格 相邻节点之间用一个空格隔开 输入 11 LL 7
  • GameFi 大爆发?五款令人期待的链游

    大家好 我是晴天defi 在今年 有许多游戏公司陆续推出自家的IP大作 像是任天堂出的宝可梦 阿尔宙斯 Sony 的地平线 西域禁地 Techland 的垂死之光 2 就连那位喜欢虐待玩家的宫崎英高 也跟着推出他的全新虐待新作 艾二登 法环
  • Qt使用QGraphicsView实现滑动窗体效果 .

    源码已上传至CSDN http download csdn net source 2808505 QGraphicsView用来显示一个滚动视图区的QGraphicsScene内容 QGraphicsScene提供了QGraphicsIte
  • 深入理解mongodb和hbase区别

    最近公司想要做数据分析 之前我们公司用的是免费的growing IO 他们分析仅限于界面跳转的转化率 不能详细地分析业务数据 我研究了一个需要埋点的产品 搞明白他们是在每个接口的调用埋点 将用户对接口的调用行为记录下来 进行分析 由于接口众
  •  Linux下读写文件操作

    Linux下读写文件操作 include
  • Error: Could not create the Java Virtual Machine. Error: A fatal exception h.....

    我处理的问题的方法 换成8解决的
  • Python地理数据处理 十七:植被物候提取和分析(Savitzky-Golay)

    Savitzky Golay滤波 1 引子 2 Savitzky Golay滤波提取物候信息 1 引子 import numpy as np import matplotlib pyplot as plt from scipy signal
  • LeetCode0752-打开转盘锁

    LeetCode0752 打开转盘锁 题目 你有一个带有四个圆形拨轮的转盘锁 每个拨轮都有10个数字 0 1 2 3 4 5 6 7 8 9 每个拨轮可以自由旋转 例如把 9 变为 0 0 变为 9 每次旋转都只能旋转一个拨轮的一位数字 锁
  • 2.Spark运行模式

    1 Spark运行模式概述 Local 多用于本地测试 如在IDEA PyCharm Visual StudioCode中写程序测试等 Standalone Standalone是Spark自带的一个资源调度框架 它支持完全分布式 Yarn