errors
Spark
Spark版本由2.4.2 -> 2.2.0,依赖多个版本冲突
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.9.4
解决思路
maven仓库删除com.fasterxml,查看项目中产生冲突的那些依赖,删除pom中中的那些依赖。
Spark集群启动时候,JAVA_HOME is not set
在spark 根目录使用 sbin/start-all.sh 时,console提示:
slave107 JAVA_HOME not set
在sbin目录下的spark-config.sh 中追加一条记录:
export JAVA_HOME=/home/hadoop/soft/jdk
hadoop集群,某台服务器jps无任何输出
集群启动时,会在/tmp目录下生成一个hsperfdata_username的文件夹,这个文件夹的文件以java进程的pid命名。因此使用jps查看当前进程的时候,其实就是把/tmp/hsperfdata_username中的文件名遍历一遍之后输出。如果/tmp/hsperfdata_username的文件所有者和文件所属用户组与启动进程的用户不一致的话,在进程启动之后,就没有权限写/tmp/hsperfdata_username,所以/tmp/hsperfdata_username是一个空文件,理所当然jps也就没有任何显示。
解决:
使用chown修改/tmp/hsperfdata_dumz的文件所有者和文件所属用户组,重新启动集群或者删除/tmp目录下所有文件重新启动集群
IDEA
internal java compiler error或java compiler failed
1、project的jdk版本设置
2、具体模块jdk设置
3、全局设置settings—java compiler设置
kafka
Connection to node -1 could not be established. Broker may not be available
分析:连接没有建立
解决:You should first describe the topic so that you can see what partitions and broker ids are available.
https://stackoverflow.com/questions/49947075/kafka-console-consumer-connection-to-node-1-could-not-be-established-broker?answertab=votes
hadoop
namenode一直处于安全模式
查看日志发现:
Resources are low on NN. Please add or free up more resources then turn off safe mode manually
解决思路:查看文件系统磁盘空间使用情况: /home目录已经使用完
查看配置文件:core-site.xml、hdfs-site.xml、hdfs-default.xml
[core-site.xml]
hadoop.tmp.dir = /home/yk/hadoop/hadoopData
[hdfs-default.xml]
dfs.name.dir = ${hadoop.tmp.dir}/dfs/name
dfs.data.dir = ${hadoop.tmp.dir}/dfs/data
修改 core-site.xml、hdfs-site.xml
删除core-site.xml中的hadoop.tmp.dir
增加hdfs-site.xml中的dfs.name.dir 、dfs.data.dir
注:dfs.name.dir 、dfs.data.dir指定在不同的目录
错误原因:name与data数据放在同一目录,空间不足时,name数据无法加载
df - report file system disk space usage
-h, --human-readable -> print sizes in human readable format (e.g., 1K 234M 2G)
-l, --local -> limit listing to local file systems
Could not locate executable null \bin\winutils.exe in the hadoop binaries
shell.java
......
String home = System.getProperty("hadoop.home.dir");
// fall back to the system/user-global env variable
if (home == null) {
home = System.getenv("HADOOP_HOME");
}
......
解决:配置环境变量
HADOOP_HOME=F:\soft\hadoop\hadoop-2.7.3
Path=%HADOOP_HOME%\bin
hdfs数据节点空间清理
查看hdfs文件系统,记录需要处理数据的上传时间
hdfs dfs -du -h /
切换目录
/home/yk/hadoop/hadoopData/dfs/data/current/BP-369437989-172.16.2.106-1552725600401/current/finalized
打印/删除特定时间产生的中间数据(比如作业运行失败时间为Mar 24)
find . -maxdepth 3 -type f -newermt “Mar 24” -print
find . -maxdepth 3 -type f -newermt “Mar 24” -delete
spark sql
join操作
df1.join(df2)时候报错如下:
org.apache.spark.sql.AnalysisException: Detected cartesian product for INNER join between logical plans
解决:设置spark.sql.crossJoin.enabled=true
timeout
执行脚本如下:
/home/hadoop/soft/spark/bin/spark-submit \
--master spark://172.16.2.106:7077 \
--class sql.cluster \
/home/hadoop/test/jars/sparkDemo-1.0-SNAPSHOT-jar-with-dependencies.jar
报错如下:
Connection to slave106/172.16.2.106:33562 has been quiet for 120000 ms while there are outstanding requests. Assuming connection is dead; please adjust spark.network.timeout if this is wrong
file permissions
保存文件到本地:
文件格式如下
加载文件时候报错
解决:val accessRDD = spark.sparkContext.textFile(“sparkDemo/data/test_good/*”)
IDEA本地测试 - OutOfMemoryError: GC overhead limit exceeded
hdfs负载均衡
添加配置
启动命令