HDFS 사용 권한 복원

중요

Microsoft SQL Server 2019 빅 데이터 클러스터 추가 기능이 사용 중지됩니다. SQL Server 2019 빅 데이터 클러스터에 대한 지원은 2025년 2월 28일에 종료됩니다. 자세한 내용은 Microsoft SQL Server 플랫폼의 빅 데이터 옵션을 참조하세요.

HDFS ACL(액세스 제어 목록)을 수정하면 HDFS의 /system/tmp 폴더에 영향을 줄 수 있습니다. 가장 가능성이 높은 ACL 수정의 원인은 사용자가 폴더 ACL을 수동으로 조작하는 것입니다. /system 폴더 및 /tmp/logs 폴더에서 직접 권한을 수정할 수 없습니다.

증상

Spark 작업이 ADS를 통해 제출되며 SparkContext 초기화 오류 및 AccessControlException과 함께 실패합니다.

583 ERROR spark.SparkContext: Error initializing SparkContext.
org.apache.hadoop.security.AccessControlException: Permission denied: user=<UserAccount>, access=WRITE, inode="/system/spark-events":sph:BDCAdmin:drwxr-xr-x

Yarn UI가 애플리케이션 ID를 중단됨 상태로 표시합니다.

도메인 사용자로 폴더에 쓰려고 하는 경우에도 작업이 실패합니다. 다음 예제를 사용하여 테스트할 수 있습니다.

kinit <UserAccount>
hdfs dfs -touch /system/spark-events/test
hdfs dfs -rm /system/spark-events/test

원인

BDC 사용자 도메인 보안 그룹에 대한 HDFS ACL이 수정되었습니다. /system 및/tmp 폴더에 대한 ACL이 수정되었을 수 있습니다. 이러한 폴더는 수정할 수 없습니다.

Livy 로그의 영향을 확인합니다.

INFO utils.LineBufferedStream: YYYY-MM-DD-HH:MM:SS,858 INFO yarn.Client: Application report for application_1580771254352_0041 (state: ACCEPTED)
...
WARN rsc.RSCClient: Client RPC channel closed unexpectedly.
INFO interactive.InteractiveSession: Failed to ping RSC driver for session <ID>. Killing application

YARN UI가 애플리케이션 ID를 중단됨 상태의 애플리케이션으로 표시합니다.

RPC 연결 닫기의 근본 원인을 확인하려면 애플리케이션에 해당하는 앱의 YARN 애플리케이션 로그를 확인합니다. 위의 예제에서는 application_1580771254352_0041입니다. kubectl을 사용하여 sparkhead-0 Pod에 연결하고 다음 명령을 실행합니다.

다음 명령은 애플리케이션의 YARN 로그를 쿼리합니다.

yarn logs -applicationId application_1580771254352_0041

아래 결과에서는 사용자의 권한이 거부되었습니다.

YYYY-MM-DD-HH:MM:SS,583 ERROR spark.SparkContext: Error initializing SparkContext.
org.apache.hadoop.security.AccessControlException: Permission denied: user=user1, access=WRITE, inode="/system/spark-events":sph:BDCAdmin:drwxr-xr-x

BDC 사용자가 HDFS 루트 폴더에 재귀적으로 추가된 것이 원인일 수 있습니다. 이는 기본 권한에 영향을 미칠 수 있습니다.

해결 방법

다음 스크립트를 사용하여 권한을 복원합니다. 관리자 권한으로 kinit를 사용합니다.

hdfs dfs -chmod 733 /system/spark-events
hdfs dfs -setfacl --set default:user:sph:rwx,default:other::--- /system/spark-events
hdfs dfs -setfacl --set default:user:app-setup:r-x,default:other::--- /system/appdeploy
hadoop fs -chmod 733 /tmp/logs
hdfs dfs -setfacl --set default:user:yarn:rwx,default:other::--- /tmp/logs