Hadoop相關問題解決


Hadoop相關問題解決

Hive

1.查詢hivemeta信息,查到的numRows為-1

集群廠商 集群版本 是否高可用 是否開啟認證
cdh 不限 不限 不限

在hivemeta庫中可以通過以下sql查詢表的元數據信息

SELECT * FROM TABLE_PARAMS WHERE tbl_id = 45857

其中numRows會被用來統計為表的行數,但是發現有些表查出來行數為-1

可能原因

對於一個新創建的表,默認情況下,如果通過INSERT OVERWRITE的方式插入數據,那么Hive會自動將該表或分區的統計信息更新到元數據。

有一個參數來控制是否自動統計,hive.stats.autogather,默認為true.

可能是因為這個表新建后沒有通過這種方式插入過數據,所以表沒有進行過統計,默認信息即為numRows=-1

解決方案

使用命令 ANALYZE TABLE tableName COMPUTE STATISTICS; 統計元數據信息

再查詢時,numRows變為0

2. bucketId out of range: -1 (state=,code=0)

集群廠商 集群版本 是否高可用 是否開啟認證
hdp 3.1.1

執行一個普普通通的 SELECT * FROM student WHERE 1 = 1 LIMIT 5;報錯

Error: java.io.IOException: java.lang.IllegalArgumentException: bucketId out of range: -1 (state=,code=0)

可能原因

初步懷疑和hadoop3支持事務有關

hadoop3.1建表默認創建acid表,acid表只支持ORC格式

解決方案

在建表語句最后加上STORED AS textfile;

3.集群客戶端使用hive命令連接,報錯認證失敗

集群廠商 集群版本 是否高可用 是否開啟認證
hdp 3.1.1

報錯信息忘了拷貝了

可能原因

客戶端java 的安全認證文件沒有下發,kerberos加密解密有問題

需要jar包:

  • local_policy.jar
  • US_export_policy.jar

解決方案

拷貝安全認證文件到客戶端

scp root@ip:/opt/third/jdk/jre/lib/security/*.jar /opt/third/jdk/jre/lib/security/

4.運行hive任務卡在Tez session hasn't been created yet. Opening session

集群廠商 集群版本 是否高可用 是否開啟認證
hdp 3.1.1

image-20190930144254120

可能原因

沒有指定tez隊列,無法獲取到足夠的資源啟動任務

解決方案

設置tez隊列 set tez.queue.name =

問題拓展

hive 設置隊列需要根據所使用的引擎進行對應的設置才會有效果,否則無效

# 設置引擎

set hive.execution.engine=mr;  
set hive.execution.engine=spark;  
set hive.execution.engine=tez;  

# 如果使用的是mr(原生mapreduce)
SET mapreduce.job.queuename=etl;
# 如果使用的引擎是tez
set tez.queue.name=etl
# 設置隊列(etl為隊列名稱,默認為default)

MapReduce:是一種離線計算框架,用於大規模數據集(大於1TB)的並行運算,將一個算法抽象成Map和Reduce兩個階段進行處理,非常適合數據密集型計算。

Spark:Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的並行計算框架,Spark基於map reduce算法實現的分布式計算,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是Job中間輸出和結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的map reduce的算法。

Storm:MapReduce也不適合進行流式計算、實時分析,比如廣告點擊計算等。Storm是一個免費開源、分布式、高容錯的實時計算系統。Storm令持續不斷的流計算變得容易,彌補了Hadoop批處理所不能滿足的實時要求。Storm經常用於在實時分析、在線機器學習、持續計算、分布式遠程調用和ETL等領域

Tez: 是基於Hadoop Yarn之上的DAG(有向無環圖,Directed Acyclic Graph)計算框架。它把Map/Reduce過程拆分成若干個子過程,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等。同時可以把多個Map/Reduce任務組合成一個較大的DAG任務,減少了Map/Reduce之間的文件存儲。同時合理組合其子過程,也可以減少任務的運行時間

img

5.Unable to read HiveServer2 configs from ZooKeeper

集群廠商 集群版本 是否高可用 是否開啟認證
fi 5.15.2

沒有進行zk認證

HDFS

1.No common protection layer between client and server

集群廠商 集群版本 是否高可用 是否開啟認證
cdh 5.15.2
javax.security.sasl.SaslException: No common protection layer between client and server
	at com.sun.security.sasl.gsskerb.GssKrb5Client.doFinalHandshake(GssKrb5Client.java:251)
	at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:186)
	at org.apache.hadoop.security.SaslRpcClient.saslEvaluateToken(SaslRpcClient.java:483)
	at org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:427)
	at org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:594)
	at org.apache.hadoop.ipc.Client$Connection.access$2000(Client.java:396)
	at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:761)
	at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:757)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)
	at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:756)
	at org.apache.hadoop.ipc.Client$Connection.access$3000(Client.java:396)
	at org.apache.hadoop.ipc.Client.getConnection(Client.java:1557)
	at org.apache.hadoop.ipc.Client.call(Client.java:1480)
	at org.apache.hadoop.ipc.Client.call(Client.java:1441)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:230)

可能原因

該異常由服務端與客戶端配置項hadoop.rpc.protection不一致導致。

解決方案

修正服務端hadoop.rpc.protection配置,確保兩端一致,重啟服務。

問題拓展

可選值(需要和集群配置保持同步):authentication,integrity,privacy

在hadoop服務和客戶端之間傳輸的數據可以在線上加密。在core-site.xml中將hadoop.rpc.protection設置為privacy會激活數據加密。以上三項分別為

  • authentication【認證:僅認證(默認)】
  • integrity 【完整性:除了認證之外的完整性檢查】
  • Privacy 【隱私:除了完整性檢查之外的數據加密】

2.Can't get Master Kerberos principal for use as renewer

集群廠商 集群版本 是否高可用 是否開啟認證
cdh 5.15.2

image-20190909095631072

可能原因

獲取fileReader的時候沒有傳入yarn.resourcemanager.principal參數。

解決方案

傳入yarn.resourcemanager.principal參數。

3.Does not contain a valid host:port authority: hdp-2.6-node1.dtwave.com

可能原因

解決方案

HBase

1.KeeperErrorCode = NoNode for /hbase/meta-region-server

集群廠商 集群版本 是否高可用 是否開啟認證
hdp 3.1.1

可能原因

hbase.znode.parent 沒有配置正確,客戶端需要與集群使用的一致。

解決方案

修正配置

Ranger

1.User doesn't have necessary permission to grant access

調用rangerApi授權出現以上返回,但是我的用戶是admin用戶,照理說是有所有權限的。

問題原因

image-20190921111526840

可能是因為沒有把用戶添加到具體的規則中

Delegate Admin

kerberos

1.Fail to create credential. (63) - No service creds

集群廠商 集群版本 是否高可用 是否開啟認證
hdp 2.6

可能原因

該異常由服務端與客戶端配置項hadoop.rpc.protection不一致導致。

解決方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM