Spark搭建日志,记录一些踩过的坑

这篇具有很好参考价值的文章主要介绍了Spark搭建日志,记录一些踩过的坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spark搭建日志


本人在Centos中使用三个虚拟机(node1,node2,node3)搭建hadoop与Spark分布式环境(具体见后记中的Hadoop安装),本文记录一些踩过的坑

错误1:运行./start-all.sh时,遇到权限不够的情况

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

解决办法:sudo chown -R 用户名 /spark(spark或者hadoop所在目录)

原理:文件的初始所有者不是用户名(如root),要把spark目录的初始所有者更换为自己的用户名

错误2:spark运行./start-all.sh时出现Permission Denied错误

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

解决办法:重新进行三个节点的ssh免密登录:【精选】大数据Hadoop(一):集群搭建–Hadoop3.3.1、CentOS8、HDFS集群、YARN集群最新保姆级教程_centos8安装yarn_彭瑞琪的博客-CSDN博客

原理:要输入密码,但是一般怎么输入都不对(我也不知道问什么,留个坑),所以要重新进行ssh免密登录才行,避免输入密码

错误3:在root用户下,每次新建终端都要source一下配置文件profile的解决办法

解决办法:在~/.bashrc文件里添加source /etc/profile命令

[学习笔记]Centos7每次启动都要执行 source /etc/profile才能找到java路径_centos source-CSDN博客

这样每次启动终端都会自动source一下profile文件

原理:普通用户下没有问题,就是在root下出现问题,应该是root用户没有在全局变量中?

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

普通用户的~/.bashrc文件

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

root用户的~/.bashrc文件

如果想设置打开终端后自动激活自己的环境,比如pyspark:只需在.bashrc里最后一行加上 conda activate pyspark即可

各个端口的含义

  1. spark://node1:7077

spark://node1:7077 是 Apache Spark 集群管理的地址。在这个地址中,node1 是 Spark 集群的主节点(也称为 Spark Master),而 7077 是 Spark Master 的默认网络监听端口。

  • spark://:这是 Spark 集群的地址协议头。
  • node1:这是 Spark Master 的主机名或 IP 地址,表示 Spark 集群的主节点。
  • 7077:这是 Spark Master 的默认网络监听端口。Spark Master 通过这个端口接收来自工作节点(Spark Worker)的连接以及管理整个 Spark 集群的资源分配和作业调度。

当你使用 Spark Standalone 集群管理模式时,你会在 Spark Master 上通过 spark://node1:7077 地址来连接到集群并提交 Spark 应用程序。这允许你将作业调度到 Spark 集群,管理资源分配以及监视应用程序的运行状态。

请注意,7077 是默认端口号,你可以在 Spark Master 的配置中更改这个端口号,但在大多数情况下,使用默认端口即可。如果你的 Spark Master 运行在其他端口上,你需要相应地更改地址。

  1. hdfs://node1:8020

hdfs://node1:8020 是 Hadoop HDFS 的默认文件系统 URL。在这个 URL 中,node1 通常是你的 Hadoop 集群的 NameNode 主机名或 IP 地址,而 8020 是 HDFS 的默认文件系统端口。

HDFS 使用 8020 作为默认文件系统端口,但你可以根据需要配置不同的端口。通常情况下,你可以通过 hdfs://<namenode-host>:8020 这样的 URL 来访问 HDFS 文件系统。这允许你连接到 Hadoop 集群并执行各种 HDFS 操作,如上传、下载、浏览和管理文件。

如果你的 Hadoop 集群使用不同的端口,你需要相应地修改 URL。端口 8020 是 HDFS 默认端口,但实际部署中可能会有不同的配置。

  1. http://node1:50070

http://node1:50070 是 Hadoop HDFS 的 Web 用户界面(NameNode Web 用户界面)的默认端口。这个 Web 用户界面提供有关 HDFS 群集的状态信息,如文件系统的用量、节点状态、名称节点(NameNode)状态等。这是一个方便的方式来监视和管理你的 HDFS 群集

通常情况下,如果你的 Hadoop HDFS 服务正在运行,并且已按默认配置设置,则你可以通过浏览器访问 http://<namenode-host>:50070 来查看 HDFS Web 用户界面,其中 <namenode-host> 是你的 NameNode 主机名或 IP 地址。在这个 Web 用户界面中,你可以查看有关 HDFS 集群的各种信息和指标。这有助于监控和管理 Hadoop 文件系统。

  1. http://node1:8080

通常情况下,http://node1:8080 是用于访问 Apache Spark 的 Web UI 的端口。在这个 URL 中,node1 通常是你 Spark 集群的主节点(Master)的主机名或 IP 地址,而 8080 是 Spark 的默认 Web UI 端口。

Spark Web UI 提供了有关 Spark 应用程序、作业、阶段、任务等的详细信息,以及有关 Spark 集群状态的信息。你可以在这个 Web 用户界面上监视和调试你的 Spark 应用程序。

请注意,8080 是 Spark 默认的 Web UI 端口,但你可以在 Spark 配置中更改此端口,以适应特定的需求。如果你的集群管理员或 Spark 部署使用了不同的端口,你需要使用相应的端口来访问 Spark Web UI。

  1. http://node1:9864

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

错误4:无法连接到master:7077(配置文件出错)

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

解决方案:

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

最后发现,我的spark-defaults.conf文件出错了,端口配错了

第一个错误:SparkUI的端口尝试了4040和4041,发现4040端口被占用了,4041端口空余,所以我在spark-defaults.conf文件中,将port改为4041

第二个错误:最致命的错误,我把spark和hadoop的web端口配错了,导致无法解析地址

将spark.master对应的web端口改为spark://node1:7077

将spark.hadoop.fs.defaultFS对应的web端口改为hdfs://node1:8020(要与hadoop配置文件中的一致)

加上这几个就可以了:

spark.master spark://node1:7077
spark.ui.port 4041
spark.hadoop.fs.defaultFS hdfs://node1:8020
spark.eventLog.enabled true

## 设置 Spark 主机名和端口
spark.master           spark://your-spark-master:7077

# 设置默认的执行内存和CPU核心数
spark.executor.memory  2g
spark.executor.cores   2

# 设置 Spark UI 的端口
spark.ui.port          4040

# 设置 Spark 日志级别
spark.logConf          true
spark.driver.memory    1g

# 设置默认文件系统
spark.hadoop.fs.defaultFS hdfs://namenode:8020

# 配置 HDFS 的 NameNode 节点
spark.hadoop.fs.hdfs.impl org.apache.hadoop.hdfs.DistributedFileSystem
spark.hadoop.fs.hdfs.serverName namenode

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

spark.hadoop.fs.defaultFS的作用:指向HDFS的NameNode地址

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

这个其实出了好多错,配置文件出错了,后面的spark使用的python路径也不对(不是anaconda的,而是spark自身自带的)

错误5:初始化SparkContext时报错:file:/tmp/spark-events does not exist

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

错误原因: Spark 无法找到目录 file:/tmp/spark-events,因此无法初始化 SparkContext。这个目录通常用于存储 Spark 应用程序事件日志,包括应用程序的执行历史记录

解决方案:

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

错误6:pyspark启动时,报错:MouduleNotFound(在conda中安装的包找不到)

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

错误原因:spark中的pyspark使用的是自带的python解释器,而非conda环境下的python,所以要在设置文件/etc/profile中,将$SPARK_PYTHON设置为conda虚拟环境中使用的python路径(which python查看)

解决方案:

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

我的/etc/profile配置文件

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

export JAVA_HOME=/jdk1.8.0_381
export PATH=$PATH:$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export SPARK_HOME=/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export ANACONDA_HOME=/opt/anaconda3
export PATH=$PATH:$ANACONDA_HOME/bin:$PATH
export PYSPARK_PYTHON=/opt/anaconda3/envs/pyspark/bin/python

在启动pyspark时,就发现python版本不是我在conda环境下设置的3.8,而是3.11,这也能说明pyspark用的不是我的conda环境下的python

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

HDFS操作

1.在HDFS上创建文件目录

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

  • 报错:不允许在根目录下(与/user和/myc_centos同级)创建文件目录

/user是root用户的根目录

/myc_centos是普通用户的根目录

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

2.将文件上传到HDFS上

要将文件上传到Hadoop分布式文件系统(HDFS),可以使用Hadoop提供的hadoop fs命令,或者使用Hadoop的Java API或Hadoop库的其他API来执行文件上传操作。

  • 使用 hadoop fs 命令:

打开终端并执行以下命令,其中 localfile 是本地文件的路径,hdfsdir 是HDFS目标目录的路径:

hadoop fs -copyFromLocal localfile hdfsdir

例如,如果要将本地文件 /path/to/localfile.txt 上传到HDFS目录 /user/yourusername/hdfspath/,可以运行:

hadoop fs -copyFromLocal /path/to/localfile.txt /user/yourusername/hdfspath/

请注意,您需要在Hadoop集群上具有适当的权限才能执行HDFS文件上传操作。

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

例如我要上传本地的/file.txt到HDFS上的/user/worcount中,在创建好/user/wordcount后,输入命令:

hadoop fs -copyFromLocal /file.txt /user/wordcount

3.给文件增加权限

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

4.wordcount.py代码实现

在Spark集群中完成

from pyspark import SparkConf, SparkContext

# 创建 Spark 配置
conf = SparkConf().setAppName("WordCount")

# 初始化 SparkContext
sc = SparkContext(conf=conf)

# 从 HDFS 读取文件
text_file = sc.textFile("hdfs://namenode:8020/user/wordcount/file.txt")  # 将 "namenode" 替换为 HDFS 主节点的主机名或IP

# 对文件进行单词拆分和计数
word_counts = text_file.flatMap(lambda line: line.split(" ")) \
    .map(lambda word: (word, 1)) \
    .reduceByKey(lambda a, b: a + b)

# 保存结果到 HDFS
word_counts.saveAsTextFile("hdfs://namenode:8020/user/wordcount/output")  # 替换 "namenode" 和路径

# 关闭 SparkContext
sc.stop()

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

5.standalone模式下提交并运行wordcount.py

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

  • 报错:output文件没有内容

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

错误原因:我创建了output目录,程序发现我已经创建好了这个目录,认为该目录已经存在,不能自己新建一个储存数据的目录,所以就终止运行了

可能出现的问题:

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

我的问题:

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

  • 运行代码时报错:

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

问题原因:node2、3上找不到conda环境,但是还要使用这个环境

解决思路:

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

我在Spark集群中都安装了anaconda,分别创造了pyspark虚拟环境,同时保证了配置文件和地址的正确性

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

具体,查看:

(超详细) Spark环境搭建(Local模式、 StandAlone模式、Spark On Yarn模式)-CSDN博客

清华源换源:

anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

终于,运行成功了

6.将结果传回到本地

通过http://node1:50070管理HDFS文件系统,我看到output中有三个文件:

success

part-00000

part-00001

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

最后,我使用这个命令将结果传回到本地的/output.txt文件

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

后记:

Hadoop安装(重要)

【精选】大数据Hadoop(一):集群搭建–Hadoop3.3.1、CentOS8、HDFS集群、YARN集群最新保姆级教程_centos8安装yarn_彭瑞琪的博客-CSDN博客

虚拟机扩容centos8

Centos8 硬盘扩容_FDUshiyan的博客-CSDN博客

在普通用户下激活conda环境

【Conda】root用户安装的anaconda如何给普通用户使用_conda命令只能root使用 怎么办-CSDN博客

配置jupyter notebook

centos8 部署 jupyter notebook-CSDN博客

报错:无法初始化SparkContext

Spark 报错解决–Error initializing SparkContext_51CTO博客_spark启动报错

centos8-stream更换yum软件源(我换的是阿里云)

centos8 yum失败完美解决-CSDN博客

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

hadoop基本文件操作也可以看看这个:

如何往hdfs上上传文件?_将文件上传到hdfs-CSDN博客

最好使用root用户进行上面所有的操作

root用户与普通用户配置文件差别

root用户使用的配置文件在/root下,普通用户使用的配置文件在/home/myc_centos下

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

root用户的家目录地址:

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

普通用户的家目录地址:

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

~/.bashrc文件

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

我的.bashrc文件

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

source /etc/profile
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/opt/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/opt/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
conda activate pyspark

spark配置文件内容

spark-env.sh

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

export JAVA_HOME=/jdk1.8.0_381
export HADOOP_CONF_DIR=/hadoop/etc/hadoop
export SPARK_MASTER_IP=192.168.35.10
export SPARK_MASTER_HOST=node1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=4g
export SPARK_WORKER_CORES=3
export SPARK_WORKER_INSTANCES=1
export SPARK_EXECUTOR_MEMORY=4g
export SPARK_EXECUTOR_CORES=3

spark-defaults.conf

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

park.master                     spark://node1:7077
spark.ui.port                    4041
spark.hadoop.fs.defaultFS hdfs://node1:8020
spark.eventLog.enabled           true

这个要和自己的Hadoop配置对应

workers

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop

lo4j2.properties

spark报错 permission denied file not found,大数据开发,spark,大数据,分布式,hadoop文章来源地址https://www.toymoban.com/news/detail-839753.html

到了这里,关于Spark搭建日志,记录一些踩过的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MongoDB踩过的坑

    目录 ‘mongodump‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件 备份数据库 启动MongoDB服务 可视化工具:MongoDB Compass 由于目标计算机积极拒绝,无法连接  BSONObj size: xxxx is invalid. Size must be between 0 and 16793600 (16MB) mongodb默认时没有mogodump.exe工具和mongorestore.exe工具

    2024年02月16日
    浏览(45)
  • 安装whisper模块踩过的坑

    如果你和我一样,通过以下命令安装whisper 但却出现了 fatal: unable to access \\\'https://github.com/openai/whisper.git/\\\': OpenSSL SSL_read: Connection was reset, errno 10054 那么只需要 在运行 pip install 之前在运行以下的命令,再次重新 pip install ... 即可 原因: 安装whisper需要先安装rust环境依赖。 官方在

    2024年02月15日
    浏览(48)
  • docker+selenium+firefox | 我踩过的坑

    为了实现SSPUBot不在我电脑上部署,我只能将其制成Docker。 要知道SSPUBot在开发的时候用了selenium+Firefox的想法开发,所以Docker里面必须要有Firefox,结果这就让见识到了最顽固的错误 selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status 255 我们还是省略我找的

    2024年01月22日
    浏览(56)
  • 关于python的mediapipe库踩过的坑

      大家好,我是csdn的博主: lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主 lqj_本人擅长微信小程序,前端,vue,等方面的知识 https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343 哔哩哔哩欢迎关注: 小淼前端 小淼前端的个人空间_哔哩哔哩_bilibil

    2024年01月17日
    浏览(39)
  • 一卡通水控电控开发踩过的坑

    最近在做一个项目,是对接一卡通设备的。我一开始只拿到设备和3个文档开局。不知道从哪下手。一步一步踩坑过来。踩了很多没有必要的坑,写出来给有用的人吧。 有个读卡器,一开始什么软件也不提供。我都不知道是干嘛用的。后来问客服才知道有一个测试软件。我真

    2024年01月23日
    浏览(62)
  • hql(hive sql)中的join及踩过的坑

    1 几种join方式 join join 对应于 inner join 内连接。 当多张表进行 join 的时候,所有表中与 on 条件中匹配的数据才会显示。 hql (即 hive sql )的 on 子句中只支持 and ,不支持 or ,也不支持 null 的对比。 left outer join 左外连接,也称为左连接。 以左表为基准,如果右表有条件匹配

    2024年01月21日
    浏览(44)
  • 「AntV」X6开发实践:踩过的坑与解决方案

    长期更新版文档请移步语雀(「AntV」X6开发实践:踩过的坑与解决方案 (yuque.com)) --Recent update:2024-01-05 相信你们在开发中更多的需求是需要自定义拖拽源,毕竟自定义的功能扩展性高一些,而且可以根据你的业务需求灵活设置。自定义拖拽的优点就是:万物皆可成为拖拽源,

    2024年02月08日
    浏览(105)
  • 嵌入式-stm32重要基础知识(及踩过的坑)

    1、固件库: 固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道, 向上提供用户函数调用的接口(API)。 2、CMSIS标准与固件库的关系 就是对固件库函数的要求。 ARM 公司为了能让不同的芯片公司生产的 Cortex-M3 芯片能在软件上基本兼容,和芯片生产商

    2024年02月04日
    浏览(61)
  • 微信小程序哪些wifi+tcp+udp踩过的坑

    1、wx.startWifi 开启wifi模块 2、如果需要展示wifi列表则调用 wx.getWifiList(Object object) 注意: 请求获取 Wi-Fi 列表。wifiList 数据会在 onGetWifiList 注册的回调中返回。 Android 调用前需要 用户授权 scope.userLocation。 iOS 上将跳转到系统设置中的微信设置页,需要用户手动进入「无线局域网

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包