码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 已有yarn集群部署spark


    已有yarn集群的情况下,部署spark只需要部署客户端。

    一、前提条件

    1. 已部署yarn集群,部署方式参考:https://blog.csdn.net/weixin_39750084/article/details/136750613?spm=1001.2014.3001.5502,我部署的hadoop版本是3.3.6
    2. 已安装jdk1.8,如果没安装或版本不对,可参考:https://blog.csdn.net/weixin_39750084/article/details/138674399?spm=1001.2014.3001.5502中的第六部分,客户端部署中jdk的安装。

    二、部署spark客户端

    下载链接:
    https://mirrors.aliyun.com/apache/spark/spark-3.4.3/spark-3.4.3-bin-hadoop3.tgz

    mkdir spark
    cd spark
    wget https://mirrors.aliyun.com/apache/spark/spark-3.4.3/spark-3.4.3-bin-hadoop3.tgz
    tar -zxvf spark-3.4.3-bin-hadoop3.tgz
    vi /etc/profile
    
    #添加以下几行
    export HIVE_HOME=/mnt/admin/apache-hive-3.1.3-bin
    export HADOOP_HOME=/mnt/admin/hadoop-3.3.6
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
    export HADOOP_CONF_DIR=/mnt/admin/hadoop-3.3.6/etc/hadoop
    export YARN_CONF_DIR=/mnt/admin/hadoop-3.3.6/etc/hadoop
    export SPARK_HOME=/mnt/admin/spark/spark-3.4.3-bin-hadoop3
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native
    export PATH=$PATH:$HIVE_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$SPARK_HOME/bin
    
    #让环境变量生效
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    yarn-site.xml需要配置为以下内容:

    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop-hadoop-yarn-rm-0.hadoop-hadoop-yarn-rm.default</value>
        </property>
        <property>
            <name>yarn.resourcemanager.address</name>
            <value>hadoop-hadoop-yarn-rm-0.hadoop-hadoop-yarn-rm.default:8032</value>
        </property>
            <property>
            <name>yarn.resourcemanager.scheduler.address</name>
            <value>hadoop-hadoop-yarn-rm-0.hadoop-hadoop-yarn-rm.default:8030</value>
        </property>
        <property>
            <name>yarn.nodemanager.env-whitelist</name>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
        </property>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    这个yarn中不仅要配置address,还需要配置hostname,之前配置好之后,使用pyspark时,只要master用local就可以,用yarn就不行,就是因为yarn没有设置hostname。

    根据自己的需要,还可以配置spark-defaults.conf文件,配置以下内容:

    spark.driver.port                  10022
    spark.blockManager.port            10023
    spark.driver.bindAddress           0.0.0.0
    spark.driver.host                  192.168.3.100
    
    • 1
    • 2
    • 3
    • 4

    10022可以在终端通过echo $PORT1查看,10023可以通过echo $PORT2查看。

    三、测试客户端

    bin/spark-sql,看能不能正确执行sql语句,能够正常在hdfs中写入等。
    在这里插入图片描述
    在jupyter中测试是否能正确使用

    四、使用pyspark

    我是用的cube studio平台的notebook,自带了pyspark,所以我没有额外装了,需要的可以看这篇文章来装pyspark:https://blog.csdn.net/weixin_46560589/article/details/132857521

    在jupyter notebook中测试是否能正确使用pyspark,可以使用以下示例代码,前提是已经在hive中创建了表,写入了数据:

    import os
    from pyspark import SparkContext, SparkConf
    from pyspark.conf import SparkConf
    from pyspark.sql import SparkSession, HiveContext
    """
    SparkSession ss = SparkSession
    .builder()
    .appName(" Hive example")
    .config("hive.metastore.uris", "thrift://localhost:9083")
    .enableHiveSupport()
    .getOrCreate();
    """
    # os.environ['HADOOP_CONF_DIR'] = '/mnt/admin/hadoop-3.3.6/etc/hadoop'
    # os.environ['YARN_CONF_DIR'] = '/mnt/admin/hadoop-3.3.6/etc/hadoop'
    
    spark = (SparkSession
                    .builder
                    .master("yarn")
                    .appName('example-pyspark-read-and-write-from-hive')
                    .config("hive.metastore.uris", "thrift://hive-service.default:9083", conf=SparkConf())
                    .enableHiveSupport()
                    .getOrCreate()
            )
    
    
    df_load = spark.sql('select * from demo limit 2')
    df_load.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    参考链接:
    https://blog.csdn.net/weixin_46560589/article/details/132898417
    https://blog.csdn.net/weixin_46560589/article/details/132857521

  • 相关阅读:
    nginx学习(4)Nginx 负载均衡
    Linux 怎样通过win 远程桌面连接链接Linux后台服务器的可视化图形界面
    Leetcode129. 求根到叶子节点数字之和
    【GIT版本控制】--子模块
    Softing连接解决方案——将FANUC数控机床数据集成到西门子工业边缘
    【算法笔记】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
    【Flyway 介绍】
    图像处理之图像的几何变换
    Apache APISIX 2.12.0 版本发布, 新功能更适配新一年
    TwoModalBERT进行角色分类
  • 原文地址:https://blog.csdn.net/weixin_39750084/article/details/139028486
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号