最近开始跟随《子雨大数据之Spark入门教程(Python版)》 学习大数据方面的知识

这里是网页教程的链接:

http://dblab.xmu.edu.cn/blog/1709-2/

在学习中遇到的一些问题,将会在这里进行总结,并贴上我的解决方法。

1、Spark独立应用程序编程时报错:

按照教程所写的配置好环境之后,运行第一个spark 程序时报错显示:

 1 python3 ~/test.py
 2 WARNING: An illegal reflective access operation has occurred
 3 WARNING: Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/usr/local/hadoop/share/hadoop/common/lib/hadoop-auth-2.9.1.jar) to method sun.security.krb5.Config.getInstance()
 4 WARNING: Please consider reporting this to the maintainers of org.apache.hadoop.security.authentication.util.KerberosUtil
 5 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
 6 WARNING: All illegal access operations will be denied in a future release
 7 2018-09-11 19:54:12 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
 8 Setting default log level to "WARN".
 9 To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
10 Traceback (most recent call last):
11   File "/home/hadoop/test.py", line 6, in <module>
12     numAs = logData.filter(lambda line: 'a' in line).count()
13   File "/usr/local/spark/python/pyspark/rdd.py", line 1073, in count
14     return self.mapPartitions(lambda i: [sum(1 for _ in i)]).sum()
15   File "/usr/local/spark/python/pyspark/rdd.py", line 1064, in sum
16     return self.mapPartitions(lambda x: [sum(x)]).fold(0, operator.add)
17   File "/usr/local/spark/python/pyspark/rdd.py", line 935, in fold
18     vals = self.mapPartitions(func).collect()
19   File "/usr/local/spark/python/pyspark/rdd.py", line 834, in collect
20     sock_info = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
21   File "/usr/local/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
22   File "/usr/local/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py", line 328, in get_return_value
23 py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
24 : java.lang.IllegalArgumentException
25     at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
26     at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
27     at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
28     at org.apache.spark.util.ClosureCleaner$.getClassReader(ClosureCleaner.scala:46)
29     at org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:449)
30     at org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:432)
31     at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
32     at scala.collection.mutable.HashMap$$anon$1$$anonfun$foreach$2.apply(HashMap.scala:103)
33     at scala.collection.mutable.HashMap$$anon$1$$anonfun$foreach$2.apply(HashMap.scala:103)
34     at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230)
35     at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40)
36     at scala.collection.mutable.HashMap$$anon$1.foreach(HashMap.scala:103)
37     at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732)
38     at org.apache.spark.util.FieldAccessFinder$$anon$3.visitMethodInsn(ClosureCleaner.scala:432)
39     at org.apache.xbean.asm5.ClassReader.a(Unknown Source)
40     at org.apache.xbean.asm5.ClassReader.b(Unknown Source)
41     at org.apache.xbean.asm5.ClassReader.accept(Unknown Source)
42     at org.apache.xbean.asm5.ClassReader.accept(Unknown Source)
43     at org.apache.spark.util.ClosureCleaner$$anonfun$org$apache$spark$util$ClosureCleaner$$clean$14.apply(ClosureCleaner.scala:262)
44     at org.apache.spark.util.ClosureCleaner$$anonfun$org$apache$spark$util$ClosureCleaner$$clean$14.apply(ClosureCleaner.scala:261)
45     at scala.collection.immutable.List.foreach(List.scala:381)
46     at org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:261)
47     at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:159)
48     at org.apache.spark.SparkContext.clean(SparkContext.scala:2299)
49     at org.apache.spark.SparkContext.runJob(SparkContext.scala:2073)
50     at org.apache.spark.SparkContext.runJob(SparkContext.scala:2099)
51     at org.apache.spark.rdd.RDD$$anonfun$collect$1.apply(RDD.scala:939)
52     at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
53     at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
54     at org.apache.spark.rdd.RDD.withScope(RDD.scala:363)
55     at org.apache.spark.rdd.RDD.collect(RDD.scala:938)
56     at org.apache.spark.api.python.PythonRDD$.collectAndServe(PythonRDD.scala:162)
57     at org.apache.spark.api.python.PythonRDD.collectAndServe(PythonRDD.scala)
58     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
59     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
60     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
61     at java.base/java.lang.reflect.Method.invoke(Method.java:564)
62     at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
63     at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
64     at py4j.Gateway.invoke(Gateway.java:282)
65     at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
66     at py4j.commands.CallCommand.execute(CallCommand.java:79)
67     at py4j.GatewayConnection.run(GatewayConnection.java:238)
68     at java.base/java.lang.Thread.run(Thread.java:844)

有人说是JAVA版本的问题。

google找了很久之后发现在Stack Overflow 中有人遇到了相同的问题。

https://stackoverflow.com/questions/50064646/py4j-protocol-py4jjavaerror-occurred-while-calling-zorg-apache-spark-api-python

首先移除原有Java 我的设备默认安装的是10 版本

  sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*

安装java-1.8.0-openjdk-amd64

  sudo apt install openjdk-8-jre-headless

之后要修改当前用户的环境变量
vim ~/.bashrc

把JAVA_HOME 的路径修改为:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

之后再运行spark脚本,没有报错。问题解决。

 关于安装多版本JAVA ,和多版本java的切换 可以查看这篇文章。

https://ywnz.com/linuxjc/2948.html

2、安装集群环境hadoop,ubuntu1804作为master节点,两台centos7.5 系统作为从节点。三台设备都添加了hadoop用户。所有的操作都是使用hadoop用户进行的。最好保证用于hadoop集群的所有机器都使用相同版本的hadoop 和java。为了保证java版本的统一,直接从网上下载了
jdk-8u181-linux-x64.tar.gz

这个版本的java 放到三台设备中。解压到/usr/lib/jvm/ 目录下。

su hadoopvim ~/.bashrc

在~/.bashrc 文件中添加环境变量

export HADOOP_HOME=/usr/local/hadoop
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_181
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin

要改成实际使用的文件路径、和java版本。这样就可以直接使用hadoop和java的相关命令了。

输入命令:

source ~/.bashrc

使环境变量立即生效。

如果之前执行过hadoop程序,需要先删除之前的文件。

sudo rm -r ./hadoop/tmp     # 删除主从节点的 Hadoop 临时文件(注意这会删除 HDFS 中原有的所有数据,如果原有的数据很重要请不要这样做)
sudo rm -r ./hadoop/logs/*

在主节点执行

hdfs namenode -format # 首次运行需要执行初始化,之后不需要start-dfs.shstart-yarn.shmr-jobhistory-daemon.sh start historyserver

通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程,如下图所示:

在 Slave 节点可以看到 DataNode 和 NodeManager 进程,如下图所示:

缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。

在进行hdfs文件操作时报错:

hadoop@ubuntu-1804:/usr/local/hadoop$ hdfs dfs -mkdir -p /user/hadoop
mkdir: Cannot create directory /user/hadoop. Name node is in safe mode.


这是由于HDFS处于安全模式下。

安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整个系统达到安全标准时,HDFS自动离开安全模式。如果HDFS出于安全模式下,则文件block不能进行任何的副本复制操作,因此达到最小的副本数量要求是基于datanode启动时的状态来判定的,启动时不会再做任何复制(从而达到最小副本数量要求)

https://blog.csdn.net/yh_zeng2/article/details/53144304

https://blog.csdn.net/bingduanlbd/article/details/51900512

输入命令退出安全模式

hdfs dfsadmin -safemode leave

再次执行

hdfs dfs -mkdir -p /user/hadoop

没有报错。

启动pyspark 并连接mysql数据库,在启动时指定使用jar包

pyspark --jars /usr/local/spark/jars/mysql-connector-java-8.0.12/mysql-connector-java-8.0.12.jar --driver-class-path /usr/local/spark/jars/mysql-connector-java-8.0.12/mysql-connector-java-8.0.12.jar

启动kafka  consumer:

执行:

./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic wordsendertest --from-beginning
报错提示:

zookeeper is not a recognized option

修改命令为:

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic wordsendertest --from-beginning

转载于:https://www.cnblogs.com/Ray-Lei/p/9630036.html

python 大数据学习 遇到的问题,及解决方法。相关推荐

  1. 2022年Python+大数据学习路线图,源码笔记,最优学习资源

    任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标.Python+大数据所需学习的内容纷繁复杂,难度较大,所以今天特别为大家整理了一个全面的Python+大数据学习路线图,帮 ...

  2. 2022新版Python+大数据学习路线图,附视频教程

    互联网的未来也是人工智能的未来,那就少不了Python+大数据的助力,对于想要转行的小伙伴来说,或许这是一个新兴赛道. 第一阶段 大数据开发入门 学前导读:从传统关系型数据库入手,掌握数据迁移工具.B ...

  3. 卧槽!又来一个Python大数据学习神器!

    今天给大家推荐一个「宝藏号」.为什么是「宝藏号」呢?因为你关注后回复关键词,可以免费获取海量学习资源. 关注后回复关键词:AI | PPT | 干货 | Python | 机器学习 | 中台 | 大数 ...

  4. python+大数据学习day4

    HDFS HDFS(Hadoop Distributed File System ),意为:Hadoop分布式文件系统. 是Apache Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服 ...

  5. python+大数据学习打卡day1

    [大数据从0-1打卡-day1] 1.简单了解一些关于大数据的概念 数据:数据就是对客观事件进行记录并可以鉴别的符号.他不仅仅是指数字,还可以是有一定意义的字母.文字.符号.语音.文字.图画.视频或者 ...

  6. 大数据学习完可以做什么

    如果要推荐一种人人都能掌握的编程语言,应该没有比Python更合适的了.如果想学习大数据,可以选择从python语言入手~ Python 简单易学,用途广泛,不仅可以在日常办公中提高大家的职场效率,还 ...

  7. Python大数据培训实例:三维空间的星星

    "一闪一闪亮晶晶,满天都是小星星......" 相信很多人都听过这首<小星星>.Python大数据学习中,经常会碰到用3D散点图实现数据的情况,下面就绘制包含若干个五角 ...

  8. python大数据零基础_零基础学习大数据人工智能,学习路线篇!

    大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后. Python:Python 的排名从去年开始就借助人工智能持续上升,现在它 ...

  9. python 化学计量学_【强烈推荐】十三个鲜为人知的大数据学习网站

    原标题:[强烈推荐]十三个鲜为人知的大数据学习网站 文|邓凯 数据分析重要性 越来越多的管理者意识到数据分析对经济发展.企业运营的重要意义. 在古代,得琅琊阁者得天下 现在,得大数据者得天下. 我总结 ...

最新文章

  1. android R文件丢失解决方法
  2. 机器学习算法与技术简介
  3. linux进程--死锁产生的原因及四个必要条件(六)
  4. 用亲和性分析方法推荐电影
  5. 信任与信誉对电子服务的重要性
  6. 取0-1中间任意数java_java – 找到一个整数n 0,其中包含以下三个条件
  7. 修改Tomcat编码方式的两种方法
  8. Java Lambda流和Groovy Clouse的比较
  9. iOS开发之普通网络异步请求与文件下载方法
  10. 【Blog】Start My Journey In Cnblogs!
  11. linux进行MySQL查询_linux下mysql Select查询命令
  12. Domain Model:业务对象的进一步设计
  13. Zabbix监控Redis状态
  14. 我不是领导,如何让别人听我的话?
  15. Qt中的串口编程之一
  16. GDB 01 -- 调试信息与调试原理
  17. 10款Mac上程序员装机必备的开发工具推荐和下载
  18. 即时通讯系统开发的问题详解
  19. 微信公众号网页OAuth2.0授权自动登录(Java版)
  20. 使用tkinter实现 loading 等待效果

热门文章

  1. 哈哈,做个广告,宁波要租房的朋友进来看看
  2. 126.数据链路层有哪些协议?
  3. 全球最快学术超算Frontera,也用英特尔至强可扩展处理器
  4. 2020年华科计算机考研机试题答案(没弄懂题目的意思)
  5. vc6.0报delete and rebuild Error executing link.exe.错误
  6. 富文本框让最大四百像素_TinyMCE 富文本编辑器 ━━ 基本配置
  7. linux修改mysql默认大小写配置,linux下设置mysql不区分大小写
  8. wincc历史数据库_什么是数据库?如何学习数据库?
  9. 普通类可以抛出异常吗
  10. Linux c语言虚拟串口,利用socat和cutecom实现Linux虚拟串口通信