Docker에 Spark Cluster 설치하기 Baremetal 서버나 cloud, VM 등에 설치하기에 앞서, docker기반으로 spark cluster 환경을 빨리 쉽게 구축하고 사용할 수 있다. 어떻게 동작하는지 살펴보거나, 간단한 프로젝트를 하고자 한다면 나쁘지 않은 선택이 될 것이다. Spark Cluster Project 받기 인터넷에서 다음의 프로젝트를 받아서 설치한다. git clone https://github.com/big-data-europe/docker-hadoop-spark-workbench.git Spark Cluster 시작하기 위 프로젝트를 clone한 디렉토리에서, 다음과 같이 실행하면 프로젝트내 기술된 docker-compose.yml을 바탕으로 spark cluste..
Airflow Local 설치 (OSX) 예전에는 실행하고자 하는 job들을 crontab으로만 구성하였으나, 이제는 rundeck, oozie, airflow 등 많은 툴들이 사용되고 있다. 이와 같은 툴들은 각 job들의 실행 순서를 정의하고, 언제 실행될지, 실행시간이 얼마나 걸리는지 등에 대한 정보도 제공하기 때문에 유지보수나 관리, 성능개선 트래킹 관점에서도 crontab과는 비교할 수 없을만큼 유용하다. AirFlow의 공식 사이트는 https://airflow.apache.org/ 이다. 다른 어떤 문서보다 공식사이트내 설치, 설정 활용 등에 대한 가이드를 먼저 참고하는 것이 좋다. pip로 airflow를 설치할 것이므로, 다음과 같이 pip를 설치한다. 예전 설치 방식 sudo easy_..
여러 버전 java 사실 개발하면서 Java의 버전을 계속 바꿀 일은 별로 없는 것 같다. 프로젝트마다 바꿀 일도 없고, 회사 정책이 바뀌지 않는한 기존의 버전을 사용할 가능성이 높다. 또한, 기존에 java 8을 사용한 프로젝트라면 특별한 이유가 없는 한 Java8을 유지보수할 가능성이 높다. Java의 버전 릴리즈 주기가 6개월로 짧아지면서, 여러 버전을 설치하고 사용하고자 할 때 jenv를 사용하면 좋을 것이다. (Python처럼) 3년 주기의 Java LTS 버전을 감안하면, production에서는 현재로서는 Java11이 유용한 선택지가 될 것이다. https://en.wikipedia.org/wiki/Java_version_history jenv: Java용 Pyenv Python 개발 환경..
자가 진단 리스트 크롬 또는 파이어폭스 또는 사파리를 쓰는 사람들을 대상으로 아래와 같이 자가진단 리스트를 만들어 보았다. 내 웹 브라우저에서 10개 이상의 탭이 열려있다. 열어본 탭은 즉시 닫지 않는다. 조금 전에 방문한 탭은 왠지 곧 다시 방문할 것이라고 생각이 든다. 그러나, 곧 다시 방문하지는 않는다. 오늘은 아니지만 조만간 방문할 것이다. 나중에 보니, 방문은 분명히 했다. 그런데, 예전에 열고 닫지 않은 탭이 발견된다. 정리해야 되는 것은 알고 있지만, 지금은 아니라고 생각한다. 컴퓨터 또는 웹브라우저가 비정상 종료가 되면, 지금까지 열려있던 창들이 왠지 아깝다. 이 탭들을 누군가에게 공유하고 싶다. 이 목록만 따로 저장해 놓을 수는 없나? 0개: 믿을 수 없는 분 또는 컴퓨터 부팅 중 (아직..
태그/워드 클라우드 생성기 태그/워드 클라우드란, 말 그대로 태그 또는 단어들을 구름처럼 모아 놓은 형태를 말한다. 위키백과에서는 아래와 같이 정의하고 있다. (출처: 태그 클라우드 - 위키백과) 태그 클라우드(영어: tag cloud) 또는 워드 클라우드(word cloud)는 메타 데이터에서 얻어진 태그들을 분석하여 중요도나 인기도 등을 고려하여 시각적으로 늘어 놓아 웹 사이트에 표시하는 것이다. 보통은 2차원의 표와 같은 형태로 태그들이 배치되며 이때 순서는 알파벳/가나다 순으로 배치 된다. 시각적인 중요도를 강조를 위해 각 태그들은 그 중요도(혹은 인기도)에 따라 글자의 색상이나 굵기등 형태가 변한다. 사용자는 이렇게 표시된 태그 중 마음에 드는 키워드를 발견하고 그것을 선택하여 그 메타 데이터에..
쿼리로 테이블 이름 조회하려면? 테이블 이름을 조사할 일이 있을 때, DB Client에서 조회하는 것이 불편할 때가 있다. 쿼리로 테이블 이름을 추출하려면 어떻게 할까? 주요 DB별로 테이블 정보를 조회하는 쿼리는 다음과 같다. MySQL SELECT table_name FROM information_schema.tables; PostgreSQL SELECT RELNAME AS TABLE_NAME FROM PG_STAT_USER_TABLES; Oracle SELECT * FROM all_all_tables; SELECT * FROM tabs; MS-SQL SELECT * FROM INFORMATION_SCHEMA.TABLES; 간편하게 온라인으로 SQL Query 실행해 보기 베경 DB가 설치되어 있고..
brew가 실행가능하도록 설정되어 있다는 전제하에 brew install apache-zeppelin 위와 같이 간편하게 zeppelin을 설치한다. alias 설정 실행 편의를 위해, 다음과 같이 alias를 선언한다. which zeppelin.sh 로 zeppelin 설치 위치를 확인하고, alias zeppelin-start="/usr/local/bin/zeppelin.sh start" alias zeppelin-stop="/usr/local/bin/zeppelin.sh stop" 과 같이 본인이 사용하는 shell에 등록한다. Zeppelin 실행 zeppelin을 실행하려면, java runtime이 설치되어 있어야 한다. zeppelin-start Zeppelin 종료 zeppelin-sto..
DB 설치하지 않고 온라인으로 쿼리 실행해 보려면? DB가 설치되어 있고 적절한 DB client가 설치되어 있다면, 직접 접속해서 실행해 보면 제일 정확할 것이다. 그러나, 다음과 같은 상황이라면 어떨까? 기본적인 동작 구조만 확인하고 싶다. 다른 종류의 DB에서는 어떻게 동작하는지 확인하고 싶다. 다른 종류의 DB에서는 어떤 구문/ 문법으로 쓰이는지 확인하고 싶다. 실제 데이터는 아니지만, 소규모 데이터로도 동작시킬 수 있다. 대략, 이와 같은 조건이 만족된다면 굳이 해당 종류의 DB를 직접 설치할 필요는 없을 것이다. 물론, 실제 개발까지 지속적으로 한다면 설치를 하는 것이 맞는 선택일 것이다. 그러나, 요새는 docker를 적극 활용하면 예전처럼 모든 것을 처음부터 직접 설치하고 설정하는 번거로움..
블루투스 디바이스가 잘 스위치가 안된다? 내가 쓰는 로지텍 MX Anywhere2와 2S에서 공통적으로 겪은 문제이다. 회사 맥북과 집 맥북 그리고, 모바일 디바이스간 페어링을 이리저리 바꿔가면서 쓰기에 멀티 페어링이 지원되는 키보드와 마우스는 정말 좋은 선택이다. 그러나, 블루투스 마우스가 인식이 잘 안되는 경우가 종종 발생하였다. 페어링 번호를 1, 2, 3을 바꿔도, 마우스를 껐다 켜도 정상적으로 동작하지 않았다. 새로 블루투스 페어링을 매번 다시 해야하나? 이럴 때는, 기존 블루투스 연결 프로파일을 삭제하고, 페어링을 다시 하면 잘 동작한다. 그런데, 매번 이렇게 하면 너무 번거롭다. 애초에 발생하지 않는다면 모를까, 해결하기 위한 다른 근사한 방법이 없을까? 블루투스 서비스를 재시작 해보자 su..
파이썬에서 pytest로 단위테스트 사용하기 unittest를 많이 쓰고 있는 것 같으나, 너무 많은 bolierplate를 작성해 줘야 한다는 느낌이 들어 대안을 찾아본다. py.test를 실험해 보자. 설치는 다음과 같다. 설치 pip install pytest 테스트 앞서 unittest용으로 작성한 테스트를 변경한다. 원래 버전에 가깝게 되었다. # test_by_pytest.py from lib import func def test_add_1_case1(): assert func.add_1(1) == 2 def test_add_1_case2(): assert func.add_1(1) == 1 이제 pytest로 해당 결과를 보면, 다음과 같이 더 가독성이 좋은 리포트가 나온다. pytest -v..
python unit test - unittest 적용방법 이제 프로젝트의 메인 모듈과 테스트 파일을 분리해서, 기존과 같이 동작하는지 확인해 보자. 구조는 아래의 구성을 따른다고 가정한다. project ㄴ lib ㄴ func.py ㄴ tests ㄴ test_func.py 앞서 작성한 test_func.py의 내용의 구현부와 테스트부를 별도 파일로 나눠놓자. # lib/func.py def add_1(x): return x + 1 # tests/test_func.py def test_add_1_1plus1(): assert add_1(1) == 2 def test_add_1_1plus2(): assert add_1(2) == 1 이렇게 파일을 분리하고, nosetests를 돌리면, add_1 funct..
파이썬 프로젝트를 위한 Jenkins 설정 (Docker 사용) 앞서 Docker의 Kitematic으로 Jenkins 이미지를 받아서 띄워봤는데, Python 프로젝트를 위해 몇몇 설정을 변경하기 위해 직접 Docker 이미지를 만들어보자. Dockerfile 작성 Dockerfile을 만들고 아래와 같이 내용을 넣자. # Dockerfile FROM jenkins:latest USER root RUN apt-get update # pip 설치 RUN apt-get install -y python-pip ENV JAVA_ARGS -Xms512m -Xmx1024m RUN apt-get update && \ apt-get install -y make build-essential libssl-dev zlib..