暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Spark Client 配置

伦少的博客 2024-05-20
476

前言

记录Spark Client 配置,这里的 Spark Client 和 HDFS、YARN 不在一个节点,只是一个单节点的 Spark Client,需要能连接其他节点的大数据集群的 Hive 和 能提交到Yarn 。

环境信息

大数据节点(已配置好Spark):
192.168.44.154
192.168.44.155
192.168.44.156
客户端:
192.168.44.157 (新装操作系统)

1、配置Java

从154节点拷贝jdk安装目录到157
安装目录:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64

mkdir /usr/lib/jvm
scp -P 6233 -r /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64 192.168.44.157:/usr/lib/jvm/
scp -P 6233 /etc/profile.d/java.sh 192.168.44.157:/etc/profile.d/
soure /etc/profile
ln -s /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64 /usr/local/jdk

添加软连接是因为在 spark-env.sh
中配置了:export JAVA_HOME=/usr/local/jdk 。可参考:Spark Standalone 集群配置

java.sh

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

2、网络

客户端和大数据节点网络互通,如果开启了防火墙,需要添加白名单

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.44.157' accept"
firewall-cmd --reload
firewall-cmd --list-all

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.44.0/24' accept"
firewall-cmd --reload
firewall-cmd --list-all

3、配置hosts

将大数据节点的hosts配置内容拷贝到157

4、时间同步

Spark客户端要和大数据节点时间(包含时区)一致 (认证kerberos需要)

timedatectl set-timezone Asia/Shanghai
date -s "Fri May 17 10:23:00 CST 2024"

5、配置文件

hadoop

mkdir -p /etc/hadoop/conf
scp -P 6233 -r  /usr/hdp/3.1.0.0-78/hadoop/conf/* 192.168.44.157:/etc/hadoop/conf

kerberos

mkdir /etc/security/keytabs/
scp -P 6233 /etc/security/keytabs/spark.service.keytab 192.168.44.157:/etc/security/keytabs/
scp -P 6233 /etc/krb5.conf 192.168.44.157:/etc/

6、Spark 安装包

将154 上的spark打包并传到157,然后解压

cd /usr/hdp/3.1.0.0-78/
tar -zcvf spark.tar.gz spark
scp -P 6233 spark.tar.gz 192.168.44.157:/opt
tar -zxvf spark.tar.gz

spark配置文件:spark 配置文件目录为软连接,所以打包拷贝时只是软连接,并没有拷贝实际内容,需要手动拷贝一下

scp -P 6233 /etc/spark2/conf 192.168.44.157:/opt/spark

因为在154已经配置好Spark了为了保证版本一致和配置文件一致,所以选择直接从154拷贝,其中conf文件下需包含 hive-site.xml 这样才能连接 hive。如果没有已经配置好的Spark,可以下载对应版本的开源安装包,手动将hive-site.xml等文件拷贝到 conf 文件夹

7、环境变量

export HADOOP_CONF_DIR=/etc/hadoop/conf
export SPARK_HOME=/opt/spark
export PATH=$SPARK_HOME/bin:$PATH
soure /etc/profile

这里的 HADOOP_CONF_DIR 是为了 Spark 获取 hadoop配置 :hdfs-site.xml core-site.xml yarn-site.xml 等,这样Spark才能提交到远程Yarn集群、读取Hive表。HADOOP_CONF_DIR 也可以在 spark-env.sh 中配置,同样可参考:Spark Standalone 集群配置

8、验证

spark-shell

local 模式

spark-shell --keytab /etc/security/keytabs/spark.service.keytab --principal  spark/indata-192-168-44-154.indata.com@INDATA.COM --master local

yarn 模式

spark-shell --keytab /etc/security/keytabs/spark.service.keytab --principal  spark/indata-192-168-44-154.indata.com@INDATA.COM --num-executors 5  --executor-memory 4g --queue default

spark-submit jar包

spark-submit --keytab /etc/security/keytabs/spark.service.keytab --principal  spark/indata-192-168-44-154.indata.com@INDATA.COM --num-executors 5  --executor-memory 4g --queue default --class com.inspur.spark.SparkHiveDemo ~/spark-demo-1.0.jar



9、pyspark

有的项目有使用 pyspark 的需求

安装Python3

先配置连接外网环境

yum install python3

pyspark默认使用python3:

验证

pyspark --keytab /etc/security/keytabs/spark.service.keytab --principal  spark/indata-192-168-44-154.indata.com@INDATA.COM --num-executors 5  --executor-memory 4g --queue default

testpy.py

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("PythonSparkHiveDemo") \
    .enableHiveSupport() \
    .getOrCreate()

spark.sql("show tables").show()
spark.sql("select * from hive01").show()

spark.stop()

spark-submit --keytab /etc/security/keytabs/spark.service.keytab --principal  spark/indata-192-168-44-154.indata.com@INDATA.COM --num-executors 5  --executor-memory 4g --queue default testpy.py


相关阅读

🧐 分享、点赞、在看,给个3连击👇

文章转载自伦少的博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论