本文环境配置:
1、操作系统:MacOS 10.14.6
2、python:3.6.5
3、spark:2.3.0
Q1:mac下输入ssh localhost,提示ssh: connect to host localhost port 22: Connection refused
A1:控制台输入sudo systemsetup -f -setremotelogin on,然后在系统偏好设置中如下设置,运行远程登陆
Q2:Can't assign requested address: Service 'sparkDriver' failed(pyspark启动失败)
A2:问题原因:貌似是找不到自己本机地址了,在换了网络环境(比如不同WiFi)出现该问题。
step1:ifconfig,找到本机IP
step2:sudo vim /etc/hosts,配置映射关系
Q3:cmd控制台执行pyspark、hadoop相关命令时,提示Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
A3:不影响使用,但会warning
Q4:因为之前曾经启动过hdfs,重新格式化之后,namenode的fsimage以及clusterID都更新了,但datanode中的clusterID与新namenode中的不匹配。
A4:需要将 /hadoop/hdfs/data和data1/hadoop中的文件都删除掉然后重启datanode。
注:具体路径,根据自己本机而定。
Q5:搭建Hadoop环境遇到的问题—-dataNode 没有启动起来
A5:删除 /hadoop/hdfs/data和data1/hadoop中的文件,然后重新格式化hdfs namenode -format
注:具体路径,根据自己本机而定。
Q6: mac启动./pyspark时默认时2.7,而不是3.7
A6:在~/.bash_profile中增加变量 export PYSPARK_PYTHON=/usr/local/bin/python3
Q7:<SparkContext master=local[*] appName=PySparkShell>
A7:local[*]的意思是将PC的所有核都用掉
Q8:pycharm中运行报 Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
A8:需要在脚本中添加
import os
os.environ["PYSPARK_PYTHON"]="/usr/local/bin/python3"
$ which python3
/usr/local/bin/python3
Q9:现象1)in takeUpToNumLeft StopIteration,
现象2)pyspark streaming jRuntimeError: generator raised StopIteration
A9:原因分析:
这个错误是由于Python3.7合入了一个不兼容性修改PEP-0479引起的。
Spark社区已经修复并合入了Spark的2.3.2和2.4版本,具体参考Spark对应的JIRA SPARK-24739。
解决方法:
1)使用Python 3.6,3.5 + spark2.3.0。
2)python3.7 + spark2.4.0
Q10:Exception in thread "main" org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://sparkproject1:9000/user/root/input
A10:默认是从hfds路径下查找,如果是本地文件路径,要加file://
Q11:pyspark java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
A11:需要在spark的jars下放mysql的jar包,Download here https://dev.mysql.com/downloads/connector/j/5.1.html
Q12:2020-06-26 01:05:41 ERROR SparkContext:91 - Error initializing SparkContext.
java.net.ConnectException: Call From macbook/192.0.0.0 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
连接拒绝
A12:当有指定地址的机器报出了 Connection Refused 异常,而且端口没有被占用,网络也没有丢包的前提下。
除非在两端都有配置错误,否则通常的原因是Hadoop服务没有运行。
异常文本声明连接失败的主机名和端口。端口可用于标识服务。例如,端口9000是HDFS端口。
启动dfs:
macbook$ ./start-dfs.sh
macbook$ jps
9729 Jps
979 RemoteMavenServer
9622 SecondaryNameNode
9322 NameNode
9435 DataNode