JupyterLab 내부 환경 변수 설정
JupyterLab 내부 환경 변수를 kernel.json 파일을 통해서 설정할 수 있습니다.
Python에서 hdfs 경로에 접근
빅데이터 플랫폼에서 JupyterLab를 사용할 때 pydoop을 import 해서 사용하는 경우가 있습니다. 그중에서도 pydoop의 hdfs를 import 하면 직접 hdfs 경로 및 파일에 접근할 수 있습니다. hdfs 에 "test"라는 파일이 존재할 때 python에서 이 파일에 접근하는 방법은 아래와 같습니다.
하지만 위의 명령어를 수행할 때 "HADOOP_CONF_DIR"가 세팅되어 있지 않다는 에러가 발생합니다. 이는 hadoop의 conf 폴더 경로가 설정되어 있지 않다는 것을 의미하는데 해당 에러는 아래와 같이 나타납니다.
- RuntimeError: Hadoop config not found, try setting HADOOP_CONF_DIR
Linux 명령어로 환경 변수 설정
JupyterLab notebook 상에서 linux 명령어를 사용해 "HADOOP_CONF_DIR"의 설정 값을 확인했지만 역시나 아무런 값이 들어있지 않았습니다.
그렇다면 이 에러를 해결하기 위해선 어떻게 해야 할까요? 환경변수 설정을 하면 쉽게 해결할 수 있을까요?
하지만 이상하게도 "HADOOP_CONF_DIR" 값을 세팅했지만 이후에도 echo 명령어를 사용했을 때 값은 나타나지 않았습니다. 이 현상은 linux 서버에 직접 접속해 bashrc 파일에 등록해도 마찬가지였습니다.
JupyterLab 내부 환경 변수 설정
이 현상의 원인은 JupyterLab에서는 자체적으로 내부 환경 변수를 사용하기 때문입니다. 그렇기 때문에 위에서처럼 아무리 환경 변수를 설정해도 JupyterLab 내부에서는 적용되지 않았던 것이죠. 우리는 환경 변수 설정을 위해 특정 파일을 수정해야 합니다.
- Path : /usr/local/src/anaconda3/share/jupyter/kernels/python3 - File : kernel.json |
kernel.json 파일을 찾았다면 아래 그림에서처럼 "env" 항목에 "HADOOP_CONF_DIR" 값을 넣어줍니다.
파일 수정을 완료했다면 JupyterLab에서 모든 kernel을 shutdown 한 뒤 restart 해줍니다. 꼭 모든 kernel shutdown을 진행해야 합니다! restart만 누른 뒤 명령어를 실행시키면 처음부터 다시 수행되지만 환경 변수 값은 반영되지 않았습니다! kernel 재시작을 완료했다면 echo 명령어를 수행했을 때 정상적으로 값이 설정되어 있는 것을 확인할 수 있습니다.