트러블 슈팅
Error initializing SparkContext.
org.apache.hadoop.security.AccessControlException:
Permission denied: user=airflow, access=WRITE, inode="/user":root:supergroup:drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:504)
개요
SparkSession 인스턴스 생성할 때는 아무 일 없다가, 세션을 생성하고 CreateDataFrame을 하니까 권한 오류가 생겼다.
방법
- 스크립트를 실행하는 유저한테 권한을 주면 해결
- hdfs-stie.xml을 수정하면되는데, <value> 태그 안에는 유저명이 아니라 그룹명, 즉, root라는 그룹 명이다.
# vi hdfs-site.xml #
<property>
<name>dfs.permissions.superusergroup</name>
<value>root</value>
</property>
1. 현재 유저
2. 그룹에 유저 추가
sudo usermod -G root -a airflow
3. 현재 그룹 확인
# groups <유저명>
4. 그리고 제일 중요한 하둡 재시작
- 설정 파일 수정 후 적용을 위한 재시작(재시작 안 하고 하는 방법이 있나?)
stop-all.sh
start-all.sh
결과
결과는 권한 이슈 잘 넘어가서 데이터프레임 생성 성공
근데, summary 부분은 뉴스 기사 본문 summarization 한 건데, 5번째 뉴스 무슨 일이고..
의문점
스파크 세션이 시작 & DF 생성하는데 6분이나 걸림.
- 컴퓨터 사양 문제도 있겠지만, 세션을 미리 별도로 실행을 시켜놓고 Task를 줘야 하는 건가?