本文介紹集群運行時,由于配置的集群存儲根路徑(對應Hadoop-Common服務中fs.DefaultFS配置項)缺乏訪問權限,導致集群的部分服務啟動失敗的原因和解決方案。
問題詳情
在E-MapReduce控制臺,集群的Hadoop-Common服務狀態頁面的健康檢查項區域,查看異常狀態的檢查結果,顯示信息中包含[hadoop_fs_availability] DefaultFS is unable to access
,將鼠標懸浮至圖標時,提示fs.defaultFS不可訪問。請檢查配置項,并使用您可訪問的存儲地址
。
可能出現該問題的情況:
創建集群時,選擇了OSS-HDFS服務,并選擇了開通OSS-HDFS服務的Bucket作為集群存儲根路徑,但在基礎配置階段中使用了沒有訪問OSS權限的ECS應用角色,導致集群運行時沒有該Bucket的訪問權限。
創建集群時,通過自定義配置的方式,為Hadoop-Common服務傳入fs.DefaultFS配置項時,所使用的Bucket在集群運行時沒有訪問權限。
集群創建完成后,修改Hadoop-Common服務中fs.DefaultFS配置項時,使用的Bucket在集群運行時沒有訪問權限。
問題原因和解決方案
針對不同服務,問題原因和解決方案如下。
YARN
問題原因
因為選擇的集群存儲根路徑沒有權限,導致EMR集群啟動YARN服務時,ResourceManager組件無法正常創建Node Labels等數據目錄,MRHistoryServer組件無法正常創建聚合日志等數據目錄。
解決方案
登錄集群的Master節點,詳情請參見登錄集群。
執行以下命令,創建相應數據目錄并授予權限。
sudo su hadoop STORE_DIR=$(hdfs getconf -confKey yarn.node-labels.fs-store.root-dir) hadoop fs -mkdir -p $STORE_DIR hadoop fs -chmod 775 $STORE_DIR hadoop fs -chown hadoop:hadoop $STORE_DIR STAGING_DIR=$(hdfs getconf -confKey yarn.app.mapreduce.am.staging-dir) hadoop fs -mkdir -p $STAGING_DIR hadoop fs -chmod 777 $STAGING_DIR hadoop fs -chown hadoop:hadoop $STAGING_DIR hadoop fs -mkdir -p $STAGING_DIR/history hadoop fs -chmod 775 $STAGING_DIR/history hadoop fs -chown hadoop:hadoop $STAGING_DIR/history LOG_DIR=$(hdfs getconf -confKey yarn.nodemanager.remote-app-log-dir) hadoop fs -mkdir -p $LOG_DIR hadoop fs -chmod 1777 $LOG_DIR hadoop fs -chown hadoop:hadoop $LOG_DIR
重啟YARN服務,詳情請參見重啟服務。
在EMR控制臺YARN服務的狀態頁面的組件列表區域,觀察YARN服務是否正常啟動。
Hive
問題原因
因為選擇的集群存儲根路徑沒有權限,導致EMR集群啟動Hive服務時,HiveServer組件無法正常創建Hive warehouse等數據目錄。
解決方案
登錄集群的Master節點,詳情請參見登錄集群。
執行以下命令,創建相應數據目錄并授予權限。
hadoop fs -mkdir -p /user/hive/warehouse hadoop fs -chown hive /user/hive hadoop fs -chown hive /user/hive/warehouse hadoop fs -chmod 751 /user/hive hadoop fs -chmod 1771 /user/hive/warehouse
在EMR控制臺Hive服務的狀態頁面的組件列表區域,觀察HiveServer組件是否正常啟動。
Spark
問題原因
因為選擇的集群存儲根路徑沒有權限,導致EMR集群啟動Spark服務時無法正常創建Spark History目錄。
解決方案
登錄集群的Master節點,詳情請參見登錄集群。
執行以下命令,創建Spark History目錄。
hadoop fs -mkdir /spark-history
在EMR控制臺Spark服務的狀態頁面的組件列表區域,觀察SparkHistoryServer和SparkThriftServer組件是否正常啟動。
Tez
問題原因
因為選擇的集群存儲根路徑沒有權限,導致EMR集群啟動Tez服務時無法正常上傳相關文件到相應存儲目錄下。
解決方案
登錄集群的Master節點,詳情請參見登錄集群。
執行以下命令。
tez_dir=`readlink $TEZ_HOME` tez_version=`basename $tez_dir` cd /tmp mkdir -p $tez_version/lib cp $TEZ_HOME/*.jar $tez_version cp $TEZ_HOME/lib/*.jar $tez_version/lib tar czf $tez_version.tar.gz $tez_version hadoop fs -mkdir -p /apps/$tez_version hadoop fs -rm -f /apps/$tez_version/$tez_version.tar.gz hadoop fs -put $tez_version.tar.gz /apps/$tez_version/ rm -fr $tez_version*
在EMR控制臺Tez服務的狀態頁面的健康檢查項區域,觀察tez_env_status檢查項狀態是否正常。
Flink
問題原因
因為選擇的集群存儲根路徑沒有權限,導致EMR集群啟動Flink服務時無法正常創建Flink History目錄, 并且按默認配置啟動的Flink作業可能無法正常寫入Checkpoint或Savepoint到OSS-HDFS中。
解決方案
HBase
問題原因
因為選擇的集群存儲根路徑沒有權限,導致EMR集群啟動HBase服務時無法正常創建HBase數據存儲目錄。