实践数据湖iceberg 第十七课 hadoop2.7,spark3 on yarn运行iceberg配置

8 篇文章 1 订阅

系列文章目录

实践数据湖iceberg 第一课 入门
实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式
实践数据湖iceberg 第三课 在sqlclient中,以sql方式从kafka读数据到iceberg
实践数据湖iceberg 第四课 在sqlclient中,以sql方式从kafka读数据到iceberg(升级版本到flink1.12.7)
实践数据湖iceberg 第五课 hive catalog特点
实践数据湖iceberg 第六课 从kafka写入到iceberg失败问题 解决
实践数据湖iceberg 第七课 实时写入到iceberg
实践数据湖iceberg 第八课 hive与iceberg集成
实践数据湖iceberg 第九课 合并小文件
实践数据湖iceberg 第十课 快照删除
实践数据湖iceberg 第十一课 测试分区表完整流程(造数、建表、合并、删快照)
实践数据湖iceberg 第十二课 catalog是什么
实践数据湖iceberg 第十三课 metadata比数据文件大很多倍的问题
实践数据湖iceberg 第十四课 元数据合并(解决元数据随时间增加而元数据膨胀的问题)
实践数据湖iceberg 第十五课 spark安装与集成iceberg(jersey包冲突)
实践数据湖iceberg 第十六课 通过spark3打开iceberg的认知之门
实践数据湖iceberg 第十七课 hadoop2.7,spark3 on yarn运行iceberg配置



前言

spark版本: spark-3.2.0-bin-hadoop2.7
hadoop版本: hadoop2.7.2


1. hadoop2.7 上安装 spark3.2 报错java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig

直接解压,跑spark-shell --master yarn
说明: 已经配置了HADOOP_HOME,HADOOP_CONF_DIR, 解压后,spark-shell会自动找HADOOP_HOME

[root@hadoop101 spark]# spark-shell --master yarn
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
22/02/14 21:00:06 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig
  at org.apache.hadoop.yarn.client.api.TimelineClient.createTimelineClient(TimelineClient.java:55)
  at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.createTimelineClient(YarnClientImpl.java:181)
  at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.serviceInit(YarnClientImpl.java:168)
  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
  at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:175)
  at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:62)
  at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:220)
  at org.apache.spark.SparkContext.<init>(SparkContext.scala:581)
  at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2690)
  at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$2(SparkSession.scala:949)
  at scala.Option.getOrElse(Option.scala:189)
  at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:943)
  at org.apache.spark.repl.Main$.createSparkSession(Main.scala:106)
  ... 55 elided
Caused by: java.lang.ClassNotFoundException: com.sun.jersey.api.client.config.ClientConfig
  at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  ... 68 more
<console>:14: error: not found: value spark
       import spark.implicits._
              ^
<console>:14: error: not found: value spark
       import spark.sql
              ^
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.2.0
      /_/
         
Using Scala version 2.12.15 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_212)
Type in expressions to have them evaluated.
Type :help for more information

2. 问题分析

spark3的jersey版本:

[root@hadoop103 spark-3.2.0-bin-hadoop2.7]# ls jars/jersey-*
jars/jersey-client-2.34.jar  jars/jersey-common-2.34.jar  jars/jersey-container-servlet-2.34.jar  jars/jersey-container-servlet-core-2.34.jar  jars/jersey-hk2-2.34.jar  jars/jersey-server-2.34.jar
[root@hadoop103 spark-3.2.0-bin-hadoop2.7]# 

hadoop的jersey版本:

[root@hadoop103 spark-3.2.0-bin-hadoop2.7]# ls /opt/module/hadoop/share/hadoop/yarn/lib/jersey-*
/opt/module/hadoop/share/hadoop/yarn/lib/jersey-client-1.9.jar  /opt/module/hadoop/share/hadoop/yarn/lib/jersey-guice-1.9.jar  /opt/module/hadoop/share/hadoop/yarn/lib/jersey-server-1.9.jar
/opt/module/hadoop/share/hadoop/yarn/lib/jersey-core-1.9.jar    /opt/module/hadoop/share/hadoop/yarn/lib/jersey-json-1.9.jar
[root@hadoop103 spark-3.2.0-bin-hadoop2.7]# 

网上很多建议,把 jersey-core-1.9.jar ,jersey-client-1.9.jar ,jersey-guice-1.9.jar 放到$SPARK_HOME/jars 下面。
照做,发现不可行 (spark-shell --master yarn, spark-sql --master yarn都试试, 有时有一个行,奇怪)。

1.9和2.3的包,里面的类是不会冲突。
在这里插入图片描述

3. 解决方法

yarn-site.xml中,加上如下配置,重启yarn (不重启,不生效)

<property>
            <name>yarn.timeline-service.enabled</name>
                <value>false</value>
</property> 

4.spark3 on yarn + iceberg0.13启动

[root@hadoop101 spark]#   bin/spark-sql --packages org.apache.iceberg:iceberg-spark-runtime-3.2_2.12:0.13.0    --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions     --conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog     --conf spark.sql.catalog.spark_catalog.type=hive     --conf spark.sql.catalog.local=org.apache.iceberg.spark.SparkCatalog     --conf spark.sql.catalog.local.type=hadoop     --conf spark.sql.catalog.local.warehouse=/tmp/iceberg/warehouse --master yarn

总结

至此,终于spark3 cluster模式运行iceberg环境准备完成

缺点:把yarn.timeline-service.enabled关闭了,先玩起来再说

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值