서론
주비터 노트북을 쓰다가. 비커 노트북이란 것도 있다고 알게됐다.
이게 왜 좋으냐면.. 지금 쥬피터 노트북에 스칼라 커널을 깔아서 스칼라 노트를 만들어 쓰고 있는데 스칼라(정확히는 암모나이트)로 할 수 없거나 불편한 일들이 있다.
파이썬 panda 를 쓰면 엑셀파일 가져오기도 쉽게 할 수 있는데. 한 노트북에서 하나의 언어만 쓸 수 있는 제한 때문에 … 여튼!
비커의 경우 한 노트에 여러 언어를 쓸 수 있고. 서로 간의 자료를 공유할 수 있다.
아래처럼 파이썬 판다로 자료를 가져와서 그걸 R 로 넘길 수도 있고.. 스칼라나 자바스크립트로 넘길 수도 있다. 즉, 스칼라로 판다를 구현할 필요가 없이 판다가 잘하는 부분은 판다를 쓰고 그것으로 무언가를 하고 싶다면 스칼라든 뭐든 필요한 언어를 쓰면 된다는 것.
열나게 좋다. 또 하나 기대되는 부분은 파이썬 코드를 자바스크립트로 번역해주는 기능이다. 이게 왜 중요하냐면… 스칼라로 작성된 언어를 스칼라.js 로 번역할 수는 있지만 그건 파사드를 정해주거나 해야하는데 이건 그게 필요없는 것 같다. 기대가 될 뿐 아직 없는 기능이다.
그리고 쥬피터 노트북을 실행하려면 터미널이 떠서 번거로웠는데 … 이건 Electron 으로 만들어진 어플리케이션을 제공한다.
본론
설치
용량이 꽤 크다. 한참 걸림.
docker pull beakernotebook/beaker
중간에 다운이 되다가 안 된다. 멈춰있는 것이 아니니 한참 기다려야 함.
할 수 있다면, 로컬에서 먼저 설치한 후 그 이미지를 tar 파일로 만들어서 복사하는 것이 더 빠를 듯 싶다. 네트워크로 하니 느리다.
아래 save 명령어 설명 페이지.
https://docs.docker.com/engine/reference/commandline/save/#examples
언어 추가 설치
스칼라는 기본 설치되어 있다. 하지만 ipython 이 설치되지 않아서 새 기본 노트를 쓰려면 오류가 난다.
언어를 설치하려면 언어 관리자에서 설치하면 된다.
정확히는 설치된 언어를 활성화 하는 것이다.
ipython 과 python3 설치
i파이썬 설치하려면 아나콘다(500메가)를 다운 받아야 한다. 좀 품이 많이 든다;; 라즈베리 파이에 설치하는 거 치고는 좀 빡센듯?
아나콘다 콘솔을 킨 다음.
아래의 명령을 통해서 설치 가능.
conda create -n py3k python=3 anaconda
Fetching package metadata ...........
Solving package specifications: .
Package plan for installation in environment
이후
$ sudo nano ~/.beaker/v1/config/beaker.pref.json
language 내용을 추가하면 된다.
{
"autocomplete-parameters" : "true",
"pref-format" : "1",
"edit-mode" : "default",
"languages" : {
"IPython" : {
"path" : "~/anaconda3/bin"
},
"Python3" : {
"path" : "~/anaconda3/envs/py3k/bin"
}
},
"advanced-mode" : true,
"allow-anonymous-usage-tracking" : false
}
advanced-mode 와 추적 기능은 내가 반대로 바꿨다.
언어 관리자로 들어가서 두 언어를 켜준다.
더 자세한 내용은 : https://github.com/twosigma/beakerx/wiki/Language-Preferences
새 기본 노트 설정 변경
새로 만들면 무슨 ipython 코드가 들어있는 노트가 생성된다. 난 파이썬 설치를 안… 아 해야겠네 판다 때문에.. 움.. 여튼 원하는 대로 바꾸려면 아래의 노트북을 생성하면 된다. 내용을 넣으면 그렇게 열린다.
$ sudo nano ~/.beaker/v1/config/default-notebook.bkr
실행
docker run -p 8888:8888 beakerx/beakerx
내 경우는 nginx-proxy 설정을 해서 포트 노출을 안한다.
--name wordpress -e VIRTUAL_HOST=beaker.xxxx.com -d beakerx/beakerx
기능
쥬피터 스칼라 노트(.ipyng) 파일도 열 수 있다.
언어 관리자에서 각 언어별로 의존성(라이브러리)을 정의할 수 있다.
코드 상에서 메이븐 저장소에 있는 의존성도 로드 가능하다.
%classpath add mvn org.apache.spark spark-core_2.11 2.2.0
https://github.com/twosigma/beakerx/blob/master/doc/old/classpath_add_jar_by_mvn.ipynb
grapes 로도 가능
https://github.com/twosigma/beakerx/blob/master/doc/old/GrapeExample.ipynb
언어 환경설정도 가능하다
스칼라 실행시 옵션 넣기 가능.
https://github.com/twosigma/beakerx/wiki/Language-Preferences