本文介绍集群运行时,由于配置的集群存储根路径(对应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数据存储目录。