spark-kafka流代码对livy不起作用

svdrlsy4  于 2021-06-06  发布在  Kafka
关注(0)|答案(0)|浏览(277)

我一直在用scala代码来运行spark流来采集Kafka的数据。一旦更新了所有依赖项并将新的依赖项添加到已编译的jar中,我就可以使用spark submit和代码运行它 spark-submit /codigos/codigos/adquisicion.jar . 但通过livy2运行时,在中创建流时出现异常:

  1. val stream = KafkaUtils.createDirectStream[String, String](
  2. ssc,
  3. PreferConsistent,
  4. Subscribe[String, String](topics, kafkaParams)
  5. )

通过livy2运行它的代码是:

  1. uri<-"http://192.168.0.28:8999/batches"
  2. jsonBody2 = paste0('{ "file": "/user/bigdata/adquisicion.jar",
  3. "numExecutors":1,
  4. "executorCores":3,
  5. "name": "Adquisición Datos",
  6. "args": [""],
  7. "className": "codigos.adquisicionDatos" }')
  8. request <- httr::POST(url = uri, body = jsonBody2, httr::add_headers(.headers = c('Content-Type' = 'application/json', 'X-Requested-by'='user')))

收到的异常如下:

  1. 18/11/06 08:01:00 ERROR ApplicationMaster: User class threw exception: java.lang.NoClassDefFoundError: org/apache/kafka/clients/consumer/Consumer
  2. java.lang.NoClassDefFoundError: org/apache/kafka/clients/consumer/Consumer
  3. at org.apache.spark.streaming.kafka010.ConsumerStrategies$.Subscribe(ConsumerStrategy.scala:256)
  4. at codigos.adquisicionDatos$.main(adquisicionDatos.scala:251)
  5. at codigos.adquisicionDatos.main(adquisicionDatos.scala)
  6. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  7. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  8. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  9. at java.lang.reflect.Method.invoke(Method.java:498)
  10. at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$3.run(ApplicationMaster.scala:646)
  11. Caused by: java.lang.ClassNotFoundException: org.apache.kafka.clients.consumer.Consumer
  12. at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  13. at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  14. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
  15. at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  16. ... 8 more

编辑:
pom文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>codigos</groupId>
  6. <artifactId>adquisicionDatos</artifactId>
  7. <version>1.2</version>
  8. <packaging>jar</packaging>
  9. <name>Adquisicion Datos Kafka</name>
  10. <properties>
  11. <app.main.class>adquisicionDatos.SparkKMeansApp</app.main.class>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. <spark.core.version>2.3.2</spark.core.version>
  14. <!--hbase.version>0.98.7-hadoop1</hbase.version-->
  15. <hbase.version>1.0.1</hbase.version>
  16. <slf4j.version>1.7.5</slf4j.version>
  17. <guava.version>13.0.1</guava.version>
  18. <gson.version>2.2.4</gson.version>
  19. <spark.version>2.3.2</spark.version>
  20. </properties>
  21. <repositories>
  22. <repository>
  23. <id>scalanlp.org</id>
  24. <name>ScalaNLP Maven2 Repository</name>
  25. <url>http://repo.scalanlp.org/repo</url>
  26. </repository>
  27. <repository>
  28. <id>apache release</id>
  29. <url>https://repository.apache.org/content/repositories/releases/</url>
  30. </repository>
  31. <repository>
  32. <id>scala-tools.org</id>
  33. <name>Scala-tools Maven2 Repository</name>
  34. <url>http://scala-tools.org/repo-releases</url>
  35. </repository>
  36. <repository>
  37. <id>cloudera.repo</id>
  38. <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
  39. <name>Cloudera Repositories</name>
  40. <releases>
  41. <enabled>true</enabled>
  42. </releases>
  43. <snapshots>
  44. <enabled>false</enabled>
  45. </snapshots>
  46. </repository>
  47. </repositories>
  48. <pluginRepositories>
  49. <pluginRepository>
  50. <id>scala-tools.org</id>
  51. <name>Scala-tools Maven2 Repository</name>
  52. <url>http://scala-tools.org/repo-releases</url>
  53. </pluginRepository>
  54. </pluginRepositories>
  55. <dependencies>
  56. <!-- https://mvnrepository.com/artifact/org.sameersingh.scalaplot/scalaplot -->
  57. <dependency>
  58. <groupId>org.sameersingh.scalaplot</groupId>
  59. <artifactId>scalaplot</artifactId>
  60. <version>0.1</version>
  61. </dependency>
  62. <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
  63. <dependency>
  64. <groupId>javax.mail</groupId>
  65. <artifactId>javax.mail-api</artifactId>
  66. <version>1.5.1</version>
  67. </dependency>
  68. <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.11 -->
  69. <dependency>
  70. <groupId>org.apache.spark</groupId>
  71. <artifactId>spark-core_2.11</artifactId>
  72. <version>${spark.version}</version>
  73. <scope>provided</scope>
  74. </dependency>
  75. <dependency>
  76. <groupId>org.apache.spark</groupId>
  77. <artifactId>spark-streaming_2.11</artifactId>
  78. <version>${spark.version}</version>
  79. </dependency>
  80. <!--
  81. <dependency>
  82. <groupId>org.apache.spark</groupId>
  83. <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
  84. <version>${spark.version}</version>
  85. </dependency>
  86. -->
  87. <dependency>
  88. <groupId>org.apache.spark</groupId>
  89. <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
  90. <version>${spark.version}</version>
  91. <scope>compile</scope>
  92. <exclusions>
  93. <exclusion>
  94. <groupId>org.apache.kafka</groupId>
  95. <artifactId>kafka_2.11</artifactId>
  96. </exclusion>
  97. </exclusions>
  98. </dependency>
  99. <dependency>
  100. <groupId>org.apache.kafka</groupId>
  101. <artifactId>kafka_2.11</artifactId>
  102. <version>0.10.2.1</version>
  103. </dependency>
  104. <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.11 -->
  105. <dependency>
  106. <groupId>org.apache.spark</groupId>
  107. <artifactId>spark-sql_2.11</artifactId>
  108. <version>${spark.version}</version>
  109. </dependency>
  110. <!-- https://mvnrepository.com/artifact/com.datastax.spark/spark-cassandra-connector_2.11 -->
  111. <dependency>
  112. <groupId>com.datastax.spark</groupId>
  113. <artifactId>spark-cassandra-connector_2.11</artifactId>
  114. <version>${spark.version}</version>
  115. <!--<version>2.0.5</version>-->
  116. </dependency>
  117. <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
  118. <dependency>
  119. <groupId>org.postgresql</groupId>
  120. <artifactId>postgresql</artifactId>
  121. <version>42.1.1</version>
  122. </dependency>
  123. <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
  124. <dependency>
  125. <groupId>org.apache.kafka</groupId>
  126. <artifactId>kafka-clients</artifactId>
  127. <version>0.10.2.1</version>
  128. </dependency>
  129. </dependencies>
  130. <build>
  131. <pluginManagement>
  132. <plugins>
  133. <plugin>
  134. <groupId>org.scala-tools</groupId>
  135. <artifactId>maven-scala-plugin</artifactId>
  136. <version>2.15.2</version>
  137. </plugin>
  138. <plugin>
  139. <groupId>org.apache.maven.plugins</groupId>
  140. <artifactId>maven-compiler-plugin</artifactId>
  141. <version>3.1</version>
  142. <configuration>
  143. <source>1.6</source>
  144. <target>1.6</target>
  145. </configuration>
  146. </plugin>
  147. </plugins>
  148. </pluginManagement>
  149. <plugins>
  150. <plugin>
  151. <groupId>org.scala-tools</groupId>
  152. <artifactId>maven-scala-plugin</artifactId>
  153. <executions>
  154. <execution>
  155. <id>scala-compile-first</id>
  156. <phase>process-resources</phase>
  157. <goals>
  158. <goal>add-source</goal>
  159. <goal>compile</goal>
  160. </goals>
  161. </execution>
  162. <execution>
  163. <id>scala-test-compile</id>
  164. <phase>process-test-resources</phase>
  165. <goals>
  166. <goal>testCompile</goal>
  167. </goals>
  168. </execution>
  169. </executions>
  170. </plugin>
  171. <plugin>
  172. <groupId>org.apache.maven.plugins</groupId>
  173. <artifactId>maven-shade-plugin</artifactId>
  174. <version>2.3</version>
  175. <executions>
  176. <execution>
  177. <phase>package</phase>
  178. <goals>
  179. <goal>shade</goal>
  180. </goals>
  181. </execution>
  182. </executions>
  183. <configuration>
  184. <filters>
  185. <filter>
  186. <artifact>*:*</artifact>
  187. <excludes>
  188. <exclude>META-INF/*.SF</exclude>
  189. <exclude>META-INF/*.DSA</exclude>
  190. <exclude>META-INF/*.RSA</exclude>
  191. </excludes>
  192. </filter>
  193. </filters>
  194. <finalName>${project.artifactId}-${project.version}-jar-with-dependencies</finalName>
  195. </configuration>
  196. </plugin>
  197. <plugin>
  198. <groupId>org.apache.maven.plugins</groupId>
  199. <artifactId>maven-assembly-plugin</artifactId>
  200. <version>2.4</version>
  201. <configuration>
  202. <descriptorRefs>
  203. <descriptorRef>jar-with-dependencies</descriptorRef>
  204. </descriptorRefs>
  205. <archive>
  206. <manifest>
  207. <mainClass>codigos.adquisicionDatos</mainClass>
  208. </manifest>
  209. </archive>
  210. </configuration>
  211. <executions>
  212. <execution>
  213. <phase>package</phase>
  214. <goals>
  215. <goal>single</goal>
  216. </goals>
  217. </execution>
  218. </executions>
  219. </plugin>
  220. </plugins>
  221. </build>
  222. </project>

我在服务器上编译它,然后将它复制到docker(通过共享卷) cp ~/adquisicionDatos/target/adquisicionDatos1.2-jar-with-dependencies.jar /mnt/codigos/adquisicion.jar )并使用incrond脚本将其上载到hdfs,以便在更新时自动上载文件(工作测试)。
如果在Spark下运行 root 用户一切正常,但使用livy或running under livy 用户不工作并抛出上面的错误。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题