ddps-lab / ubuntu-hadoop

3 stars 5 forks source link

JAVA bin 폴더가 실제로 path 에 등록되지 않는 상황 발생 #9

Open kmu-leeky opened 6 years ago

kmu-leeky commented 6 years ago

현재 Docker 파일에 보면

https://github.com/kmu-bigdata/ubuntu-hadoop/blob/master/Dockerfile#L24

$JAVA_HOME/bin 을 PATH 에 추가하는 명령어가 있지만 실제 다커 이미지에는 해당 경로가 없음. 확인 필요. (현재 빅데이터 최신과제 수업 클러스터에서 확인 가능)

image

KimJeongChul commented 6 years ago

bd-2에 있는 yarn slave에 들어가 확인해본 결과 $PATH에서 8번째에 /usr/java/default/bin을 확인할 수 있습니다. image

kmu-leeky commented 6 years ago

아.. docker exec 로 들어가면 세팅이 되는데 ssh 로 해서 들어가면 세팅이 안되네.

로그인 하는 방식에 따라서 환경 변수 세팅 여부가 결정되는 것 같네.

ssh -p 22115 root@bd-2.cs.kookmin.ac.kr

kmu-leeky commented 6 years ago

SSH 로 들어가도 해당 환경 변수들이 세팅 되도록 해야겠네. 해당 값들이 ~/.bashrc 에 들어가있으면 되는데, 그 파일에 하드 코딩 해두는게 좋은 방법인지는 모르겠네...

KimJeongChul commented 6 years ago

/etc/environment를 덤프하여 로그인 프로세스가 이 파일을 source 한다하니 적용될 것 같습니다. As commented in issue 2569: This is expected. SSH wipes out the environment as part of the login process.

One way to work around it is to dump the environment variables in /etc/environment (e.g. env | grep _ >> /etc/environment) before starting Supervisor. Further "login processes" should source this file, and tada! There is your environment.

That env | grep _ >> /etc/environment could be part of a default run script associated (through ENTRYPOINT or CMD) to your image.

KimJeongChul commented 6 years ago

ssh -p 22115 root@bd-2.cs.kookmin.ac.kr 비밀번호좀 알 수 있을까요?

KimJeongChul commented 6 years ago

위의 방식대로 login process가 적용되지는 않아서 다음의 방식을 사용해야 할 것 같습니다.

$ sudo docker exec -it yarn-slave28 bash -c "env | grep PATH >> /etc/environment" $ sudo docker exec -it yarn-slave28 bash -c "echo 'source /etc/environment' >> ~/.bashrc" 위의 확인해본 결과 적용되었습니다. image

shell-script 짜서 돌려보겠습니다.

kmu-leeky commented 6 years ago

오케이.

가능해보인다. 업데이트해주면 좋을것 같고.

저걸 DockerFile 에도 반영할 수 있을까? 이미지에서 처리하게 해주는게 좋을듯 하다.

KimJeongChul commented 6 years ago

shell-script으로 우선 bd-1, bd-2, bd-3에 급하게 적용해보았습니다.

#!/bin/bash
for ((i=31;i<=45;i++));
do
  echo "yarn-slave"$i
  sudo docker exec -it yarn-slave$i bash -c "env | grep PATH >> /etc/environment"
  sudo docker exec -it yarn-slave$i bash -c "echo 'source /etc/environment' >> ~/.bashrc"
done

Dockerfile 수정하여 이미지 빌드를 해보려하니 다운로드 링크가 문제가 생긴 것 같습니다. Dockerfile에서 Oracle JAVA 부터 수정을 해야될 것 같습니다. image https://stackoverflow.com/questions/10268583/downloading-java-jdk-on-linux-via-wget-is-shown-license-page-instead

이 방식으로 JAVA 설치를 변경해볼까요? https://github.com/flurdy/Dockerfiles/blob/master/oracle-java8/Dockerfile