【FusionInsight 问题】FusionInsight HD 6.5.1 集群中遇到的问题(01)

news2025/1/18 4:46:36

FusionInsight HD 6.5.1 集群中遇到的问题(01)

  • FusionInsight HD 6.5.1 集群中遇到的问题(01)
    • Spark-on-HBase认证问题
      • Failed to find any Kerberos tgt
        • 服务端配置修改
        • 客户端配置修改
    • Spark-on-HBase依赖包问题
      • phoenix-core-4.13.1-HBase-1.3.jar
        • 数据读取问题
        • 数据写入问题

FusionInsight HD 6.5.1 集群中遇到的问题(01)

Spark-on-HBase认证问题

Failed to find any Kerberos tgt

在Spark应用程序中,如果操作了HBase或者Phoenix,那么在提交程序到集群运行的时候可能会遇到认证失败的问题。

org.apache.hadoop.hbase.DoNotRetryIOException: GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)

image-20230714102223766

这个问题的主要原因是:在安全模式下,如果需要通过Spark操作HBase,即Spark-on-HBase,则需要启动HBase的验证功能,该配置默认是false的,需要将其修改为true。

服务端配置修改

在Spark2x服务下,找到配置,找到配置项spark.yarn.security.credentials.hbase.enabled将其值设置为true

  • ”基础配置“选项卡下的对应界面

image-20230713170457820

  • ”全部配置“选项卡下的对应界面

image-20230713165029694

设置完成之后,需要点击”保存“按钮,将配置信息进行保存。

在弹出的”保存配置“对话框中,确认修改的信息后,点击”确定“按钮进行保存。

image-20230713165134025

等待保存进度结束。

image-20230713165219052

修改完配置后,集群中Spark2x服务的配置状态会变成”配置过期“。此时,需要重启服务才能让配置生效。通过【更多】->【重启】菜单重启Spark2x服务。

image-20230713165317542

在弹出的”验证身份“对话框中输入密码,身份验证通过后FusionInsight才会重启Spark2x服务。

image-20230713165353260

在弹出的”重启服务“对话框中,点击”确定“按钮,以对重启Spark2x服务进行确认。

尽量确保在没有Spark作业运行的情况下再去重启服务,因为服务重启过程中Spark2x服务将不可用。

image-20230713165414092

确认重启后,等待服务重启完成。

image-20230713165822851

客户端配置修改

修改完服务端的配置后,重新提交Spark作业,可能还是会遇到同样的认证问题。这是因为我们仅修改了服务端的配置,但是客户端的配置还未修改。

还记得下载客户端的时候的”仅配置文件“选项吗?

我们的客户端已经安装完成,但是后来又修改了服务端的配置!

此时,就需要将服务端的配置同步到客户端。

可以重新安装客户端,选择”仅配置文件“,然后将配置文件覆盖到客户端。

另外,由于我们仅修改了一个配置项,比较简单,也可以直接手工修改客户端本地的配置文件即可。

修改客户端的/opt/hadoopclient/Spark2x/spark/conf/spark-defaults.conf配置文件。

目前该配置文件中的配置项还是false

image-20230714105007364

将该配置项修改为true

image-20230714105141645

修改完成客户端的配置后,再次提交Spark作业到集群运行,就不会遇到这个问题了。

但是,你有可能还会遇到其他问题~~~

Spark-on-HBase依赖包问题

phoenix-core-4.13.1-HBase-1.3.jar

数据读取问题

在Spark应用程序中,如果操读取了HBase或者Phoenix的数据,那么在提交程序到集群运行的时候可能会遇到JDBC驱动包缺失的问题。

java.lang.NoClassDefFoundError: org/apache/phoenix/jdbc/PhoenixDriver

image-20230714110311520

这是由于:Spark读取HBase的数据的时候,通过Phoenix使用JDBC的方式进行读取,需要添加依赖包phoenix-core-4.13.1-HBase-1.3.jar,这里面提供了JDBC驱动程序。

该包在客户端安装目录中有官方提供的版本,直接复制到自己的Spark应用程序的依赖软件包中即可,然后spark-submit的时候,使用--jars包含该jar包即可。

cp /opt/hadoopclient/HBase/hbase/lib/phoenix-core-4.13.1-HBase-1.3.jar ~/spark_job/lib/

数据写入问题

复制了jar包之后,再次提交Spark作业运行,数据读取问题会得到解决,但是数据写入还是会有问题。

java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.phoenix.mapreduce.PhoenixOutputFormat not found

image-20230714111610081

这是一个非常神奇的问题!

这是一个非常神奇的问题,神奇在哪里呢?

在读取数据的时候,我们遇到了org.apache.phoenix.jdbc.PhoenixDriver类不存在的问题,我们添加了依赖包phoenix-core-4.13.1-HBase-1.3.jar。

在写入数据的时候,我们遇到了org.apache.phoenix.mapreduce.PhoenixOutputFormat类不存在的问题。

神奇之处在于:

  • phoenix-core-4.13.1-HBase-1.3.jar是客户端安装后的HBase下的包,属于华为官方提供的jar包。
  • 打开phoenix-core-4.13.1-HBase-1.3.jar包,可以看到这个包中同时包含了org.apache.phoenix.jdbc.PhoenixDriver类和org.apache.phoenix.mapreduce.PhoenixOutputFormat类。
  • 既然该jar包中同时包含了这两个类,并且读取数据正常,说明该jar包已正常加载,并读取到了org.apache.phoenix.jdbc.PhoenixDriver类。既然都已经正常加载了该jar包,那么为什么在写数据的时候还无法找到org.apache.phoenix.mapreduce.PhoenixOutputFormat类呢?

既然通过--jars提交phoenix-core-4.13.1-HBase-1.3.jar无法解决数据写入时的依赖问题,那么就只有将该jar包上传到Spark集群节点的classpath下了。

通过HDFS Web UI,找到文件hdfs://user/spark2x/jars/6.5.1.7/spark-archive-2x.zip文件,下载该文件,并将phoenix-core-4.13.1-HBase-1.3.jar添加到该压缩文件中,重新上传覆盖原文件。

image-20230714112528870

由于压缩包比较大312MB,所以直接在服务器上进行操作。

 hdfs dfs -get /user/spark2x/jars/6.5.1.7/spark-archive-2x.zip
unzip spark-archive-2x.zip

image-20230714113115440

解压完成后,将phoenix-core-4.13.1-HBase-1.3.jar添加到目录中再进行压缩。

cp /opt/hadoopclient/HBase/hbase/lib/phoenix-core-4.13.1-HBase-1.3.jar ./
zip spark-archive-2x.zip *.jar

image-20230714113902105

添加完成后,备份原始压缩文件,将新的压缩文件上传到相同路径,并修改文件所属用户、组、权限,以确保文件跟原文件的权限保持一致。

hdfs dfs -mv /user/spark2x/jars/6.5.1.7/spark-archive-2x.zip /user/spark2x/jars/6.5.1.7/spark-archive-2x.zip.bak
hdfs dfs -put spark-archive-2x.zip /user/spark2x/jars/6.5.1.7/spark-archive-2x.zip
hdfs dfs -chown spark2x:hadoop /user/spark2x/jars/6.5.1.7/spark-archive-2x.zip
hdfs dfs -chmod 744 /user/spark2x/jars/6.5.1.7/spark-archive-2x.zip

image-20230714114928304

确保文件具有相同路径、相同用户、组、权限等。

image-20230714115009983

再次提交Spark作业运行,运行成功。

image-20230714115500321

至此,依赖问题解决。

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

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

相关文章

2023年CRM系统排行榜

很多企业想要选择一款CRM系统来进行管理,提高效率。那么,2023年国内有哪些优秀的CRM系统呢?这里有一份2023最新国内crm系统排名,希望可以帮助到正在选型的您。 1、Zoho CRM Zoho CRM是一款知名的SaaS云端CRM系统,拥有…

使用 OpenTelemetry 构建可观测性 02 - 埋点

这是讲解 OpenTelemetry 系列博客的第二篇。在上一篇博客中,我们介绍了 OpenTelemetry 是什么以及由什么组成。现在我们将讨论如何使用 OTel 准确收集遥测数据和链路追踪数据。 手动埋点 我们这里谈论“埋点”(代码插桩),是指通过技术手段采集链路追踪…

网络协议详解之BGP

目录 BGP(边界网关路由协议) 一、基础知识囊括: 1.1 IGP协议追求: 1.2 EGP协议的追求: 二、BGP特点: 2.1 BGP数据包 2.2 BGP的工作过程 2.3 结构突变** 2.4 名词解析 2.5 BGP的路由黑洞问题 2.6 …

Plecs电力电子仿真专业教程-第一季 第四节 C语言脚本模块介绍

Plecs电力电子仿真专业教程-第一季 目录 第一章 Plecs是什么 第二节 Plecs 的功能介绍 第三节 Plecs界面介绍 补充课程 Plecs的安装教程与软件下载 第四节 Plecs C语言脚本模块介绍 鉴于很多学习的小伙伴私信我要安装软件,特此添加如下链接: Plecs4.6…

我记不住的Linux那些时间及区别

背景:总是搞不明白Linux系统中这些相关的时间及区别,通过查看网上的资料发现很多都是人云亦云,没有任何新意,所以这里根据自己的试验及资料,再次总结一下,在这里记录一下。 一、介绍 标准的POSIX文件有三…

spring如何进行依赖注入,通过set方法把Dao注入到serves

1、选择Generate右键鼠标 你在service层后面方法的这些: 2、UserService配置文件的写法是怎样的: 3、我们在UserController中执行一下具体写法: 最后我们执行一下 : 4、这里可能出现空指针,因为你当前web层,因为你new这个对象根…

计算机竞赛 医学大数据分析 - 心血管疾病分析

文章目录 1 前言1 课题背景2 数据处理3 数据可视化4 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于大数据的心血管疾病分析 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! &#x1f9…

神经网络为什么可以学习

本资料转载于B站up主:大模型成长之路,仅用于学习和讨论,如有侵权请联系 动画解析神经网络为什么可以学习_哔哩哔哩_bilibilis 1、一个神经网络是由很多神经元形成的 1.1 也可以是一层,也可以是多层 2 层和层之间的连接就跟一张网一样 2.1 每…

AutoCompany模型的概念设计,涵盖了AI智能公司的各个角色

AutoCompany模型的概念设计,涵盖了AI智能公司的各个角色 自动化企业概念设计与设想,文本将介绍AutoCompany模型的概念设计,涵盖了AI智能公司的各个角色,并结合了GPT-4接口来实现各个角色的功能,设置中央控制器&#xf…

【Redis】Redis哨兵模式

【Redis】Redis哨兵模式 Redis主从模式当主服务器宕机后,需要手动把一台从服务器切换为主服务器,需要人工干预费事费力,为了解决这个问题出现了哨兵模式。 哨兵模式是是一个管理多个 Redis 实例的工具,它可以实现对 Redis 的监控…

动力电池系统介绍(十三)——高压互锁(HVIL)

动力电池系统介绍(十三) 一、高压互锁梗概1.1 高压互锁原理1.1 高压互锁内部结构1.2 高压互锁分类1.3 高压互锁原则 二、高压互锁常见故障2.1 高压互锁开关失效2.2 端子退针导致开路2.3 互锁端子对地短路2.4 动力电池内部故障 三、高压互锁故障排查 一、…

孟德尔随机化:Steiger Test避免反向因果关系

Steiger Test避免反向因果关系 以下steiger test方法是一个新的方法学,增加后提升提取工具变量的稳健性,没有的话也不影响文章内容。 看自己的需要。跑分析过程中,如果是GWAS数据没有samplesize,自己又需要这个内容,…

musl libc ldso 动态加载研究笔记:01

前言 musl 是一个轻量级的标准C库,建立在系统调用之上,可以认为是【用户态】的C 库,与 glibc 或者 uClibc 属于同一类。 基于 musl 的 gcc 工具链包括交叉编译工具链,可以用于编译 Linux 或者其他的操作系统,如当前 L…

kubesphere 集成 sonar

文章目录 安装 helm通过 helm 安装 sonar配置 SonarQube 服务器创建 SonarQube 管理员令牌SonarQube 配置添加到 ks-installer创建 Webhook 服务器将 SonarQube 服务器添加至 Jenkins将 sonarqubeURL 添加到 KubeSphere 控制台重启服务 为新项目创建 SonarQube Token 官方文档&…

蓝蓝设计-ui设计公司-界面设计案例作品

泛亚高科-光伏电站控制系统界面设计 html前端 | 交互设计 | 视觉设计 | 图标设计 泛亚高科(北京)科技有限公司(以下简称“泛亚高科”),一个以实时监控、高精度数值计算为基础的科技公司, 自成立以来,组成了以博士、硕…

同样都是找工作,为什么你的简历没人看?

上次的文章分享了自己软件测试面试时的一些经历,今天我想分享一下自己当时写简历以及投简历方面的经历,本文内容纯粹是个人简单分享,如果有写得不好的地方还请读者包涵与指正。 我是去年的九月初开始投递简历的,貌似各行各业的人…

μCOS-Ⅲ_简介

μCOS-Ⅲ简介 文章目录 μCOS-Ⅲ简介前言一、什么是 C/OS-III?二、C/OS-III的特点三、C/OS-III的版本和参考资料1、C/OS-III版本2、C/OS-III源码获取3、C/OS-III参考资料 四、C/OS-III源码简介总结 前言 μcos-III是一个可以基于ROM运行的、可裁剪的、抢占式、实时…

第五章.编辑资料

5.1.添加编辑页面 <template><div class="users-show"><div class="col-md-3 main-col"><div class="box"><div class="padding-md"><div class="list-group text-center"><rou…

k8s v1.27.4 部署metrics-serverv:0.6.4,kube-prometheus

只有一个问题&#xff0c;原来的httpGet存活、就绪检测一直不通过&#xff0c;于是改为tcpSocket后pod正常。 wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml修改后的yaml文件&#xff0c;镜像修改为阿里云 apiVersion: …

9.处理this和防抖、节流

9.1 this指向-普通函数 普通函数的调用方式决定了this的值&#xff0c;即【谁调用this的值 指向谁】 普通函数没有明确调用者时this值为window&#xff0c;严格模式下没有调用者时this的值为undefined 9.2 this指向-箭头函数 箭头函数中的this与普通函数完全不同&#xff0…