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負載均衡
添加配置
啓動命令