분류

2017년 1월 25일 수요일

피로도 증가로 나타나는 현상에 대한 개인적인 관찰과 해법

몸에 쌓이는 여러가지 피로중 나를 괴롭히는 가장 큰 요인중 하나는 대체로 수면 부족이었다. 대체로 잡생각이 많은 편이고, 그날 했던 사소한 실수도 '이렇게 개선하면 어땠을까' 라는 생각 같은걸 하다보면 동이 터오기 일수였다. 또한 고등학교를 진학한 이후로는 나도 모르는 사이 카페인을 다량 복용하여 잠을 못자는 상황이 자주 있었다. 카페인 복용으로 인해 잠이 들 수 없다는 사실은 30살이 다되어서야 깨닫게 되었다.

처음 잠을 들지 못하는 밤이 많아졌던 것은 17세 정도였는데, 집에서 우유에 인삼을 갈아 넣은 것을 마시기를 권하면서 부터였다. 당시 몸에 좋은 것이라고 여겨 매일 한잔씩 약 6개월간을 복용하게 되었는데, 6개월동안 매일 새벽 3-5시 이전엔 잠이 들지 못하는 상태에 이르게 되었다. 

그로부터 자주 새벽 2,3시나 되어야 잠이 들 수 있는 상황들이 자주 발생하다 보니, 20살즘이 되어선 새벽 3시에 자고 아침 7시, 8시경에 일어나는 것이 일상이 되어버렸다. 건강에 대한 상식이 없던 시절이라, 안구건조나, 피부건조 등의 피로로 인한 부작용에 대해 무지했고, 피부 건조로 각질과 염증이 대량 발생하게 되어 병원에 다니게 되었다.

병원에서는 피부건조로 인한 각질의 대량 발생의 원인에 대한 설명은 일절 없이 매번 단순한 피부염 치료제를 처방해주었는데, 아직도 그때 받았던 분홍색 통에 소분된 약의 정확한 명칭은 알지 못한다. (아마 스테로이드제 였을 것이라는 생각만 하고있다. )

피로도 증가로 나타나는 현상들은 피로 누적에 따른 단계별로 내게 나타났다.

1. 안구건조
대체로 눈이 따갑거나, 가려워 자주 비비게 되고, 무언가에 집중해 장시간 눈을 안감으면 눈이 따가워 지는 현상이 발생한다. 목욕이나 샤워를 하면 눈이 완전 빨갛게 달아오르는 현상이 생기기도 한다. 이정도만 해도 피로도가 많이 높은편은 아니다.

2. 피부건조 및 염증
피부가 건조해지며 각질이 발생하기 시작하고 각질이 발생하기 시작하는데, 목욕, 샤워 등과 관계 없이 전체적으로 피부에 건조 증상이 나타나기 시작한다. 건조해진 피부만으로 끝나는 것이 아니라 피부가 건조해지면 이상하게도 해당 부위에 염증이 쉽게 발생한다. 염증이 눈에 보이는 커다란 고름을 가진 녀석일 때도 있지만, 그렇지 않고 붉은 반점처럼 생기는 경우도 자주 있다.

3. 안색의 변화
피부에 건조가 시작된 이후 2주가량 피로가 지속되면 얼굴이 평소보다 검어지거나 노랗게 변하는 현상이 발생하게 되는데 혈액순환의 장애가 아닌가 의심이 된다. 노폐물 축적일 수도있다.

4. 면역과 회복능력 하락
건조해진 피부에서 각질이 발생했던 부위를 중심으로 염증이 발생하며, 피로도가 개선되기 전에는 염증이 지속되는 경우가 있다. 또한 염증의 해소와 함께 다시 각질이 발생하기도 한다. 면역하락은 피부면역 뿐이 아니라, 감기 같은 증상으로 나타나기도 하고 외적인 요소에 의한 질병에 쉽게 노출되게 된다.

대게 아토피라는 진단을 받는 사람들은 두가지 요소에 노출되지 않나 싶다. 피로와 미세먼지, 미세먼지에 자주 접하는 피부는 먼지중의 알레르기를 유발하는 요소들 때문에 염증이 발생하고, 누적된 피로로 인해 회복이 더뎌지면서 염증이 더 번져가는 것이 아닌가 하는 추론을 하게된다.

그리고 피로 누적에 의해 발생하는 염증은 주로 미세먼지가 쉽게 접촉할 수 있는 얼굴과 목에 집중되는 경향이 있다. 실제로 10여년간 아토피 진단을 받고 병원에 가게된 주 이유도 얼굴과 목 부근에 발생하는 지속적인 염증때문이었으며, 시골에 살때는 발생하지 않았던 질병이 도시에 살기 시작하고, 면역이 떨어지면서 심각하게 발생했기 때문에 이런 추론을 하게 되었다.

자 그렇다면 '면역과 회복력을 상승시키려면 어떤 일을 하면 될까'에 대해 직접적인 경험을 기술하자면 이렇다.

1.하루 30분 이상 운동
30분이상의 운동은 현대 사회에서의 필수적인 요소로 생각된다. 기본적으로는 앉아있기 때문에 척추에 압력이 가해지게 되고, 혈액순환이 잘 되지 않는다. 혈액순환이 둔화되면 노폐물 배출이 더뎌지기 때문에 노폐물들이 체내에서 잘 배출되지 않고, 축적되게 된다.

땀을 흘릴 수 있을 정도의 운동을 하루 30분 이상 해줌으로써 노폐물 배출을 활성화 시켜서 피로를 감소시킬 수 있다. 노폐물은 오줌을 통해서만 배출되는 것이 아니라, 땀을 통해서도 배출 되기 때문이다.

또한 상체와 하체의 운동을 고르게 하는 것이 중요한데, 런닝, 복싱, 베드민턴 같은 전신스포츠를 해주는 것이 좋다. 상체 운동을 하지 않고 싸이클링 만을 수 개월간 해본적이 있는데 이럴경우 등의 근육이 약화되어 자고 일어나면 척추 부근이 결리는 현상이 발생하기도 했다.

2.주기적인 수분공급
개인적으로는 30분단위로 종이컵 한컵 분량의 물을 마시고 있는데 이렇게 종일 마시다 보면 약 3L 가량의 물을 마시게 되고 외부 요인에 의한 피로를 조금 약화시켜주며, 노폐물의 배출을 돕는다. (다만 체수분 증가로 인한 체중 증가가 있을 수 있다. 개인적으로는 물을 하루 1L 마실때와 3L 마실때 체중이 약 2Kg 정도 차이가 났다. )

3. 7시간 이상 수면
평균 수면시간은 8시간이 적당하다고 한다. 실제로 주중 6시간을 자는 경우 피로도가 누적이 되서 아침에 몸이 무겁거나, 주말에 수시간이 낮잠을 자거나 하는 현상이 발생한다. 이럴경우 수면이 불규칙해져 피로가 원활하게 해소되지 않고, 계속 누적되는 것을 느끼게 된다. 또한 수면 부족은 집중력 하락을 불러오기도 한다.

추가적으로 면역 약화에 영향을 주는 요인이 하나가 더 있는데 남성에만 해당되는 것 같다. 바로 '사정' 이라는 것이 피로 증가와 면역 약화에 심각하게 기인한다는 것. 실제로 관계 이후 피로도가 급격히 상승해 3시간 이상의 수면을 취하게 되는 경우도 자주 있고, 겨울철에 1주에 3회 이상 관계를 가질 경우 평소에 안걸리던 감기가 걸리게 되기도 한다.

여성의 경우는 성적인 행동이 크게 영향을 미치지 않는 것 같지만, 남성의 경우는 살이 빠지기도 하고, 면역력 약화와, 피로도 증가의 현상이 나타난다. 또 주변에 과도하게 성적 행동을 하는 사람들은 수전증 증상이 나타나기도 하는 것으로 볼때 과도한 성행위는 남자의 건강에는 크게 악영향을 미치는 것으로 판단된다. 성적인 행위는 주 2회 정도가 적당하다. 

2017년 1월 17일 화요일

2. Pentaho Spoon 사용

2. Pentaho Spoon 사용

이번엔 오픈소스 ETL 도구인 펜타호의 사용법에 대한 내용을 기술해보려 합니다. 
설치에 대한 설명은 지난번에 작성한 
빅데이터 분석 툴 펜타호 설치 가이드 를 참조 하시기 바랍니다. 
 
Pentaho에서 가장 기본적으로 사용할 수 있는 데이터베이스와 파일, 그리고 데이터베이스 간의 연동에 대한 예를 진행해보려 합니다. 데이터베이스에 대한 접근 정보 및 테스트가 완료된 상태에서 실행하는 설명이므로, 설치에 대한 부분은 설치 가이드를 참조 하시면 되겠습니다.
 
Spoon의 기능중 가장 간단하게 시연할 수 있는 데이터 적재 및 이관 프로세스에 대한 간략한 정보를 소개하고자 합니다. 먼저 이관하고자 하는 각 데이터베이스의 정보를 입력합니다. 현재는 local database 하나만을 갖고 하기에 동일 데이터베이스에 대한 접속정보를 2개 등록하는 것으로 대체하겠습니다.
 
먼저 실행된 Pentaho Data Integration (이하 PDI)Transformations를 더블클릭하여 새로운 전송을 만듭니다.



새로 열린 Transformation은 데이터베이스에 대한 정보를 갖고 있지 않기에 새로운 뷰를 선택하여 데이터베이스 연결 항목에서 마우스 우클릭을 통하여 새로 만들기를 선택해 줍니다.


데이터베이스 정보 입력창이 뜨면 접속 대상 데이터베이스를 선택하고, 해당 데이터베이스의 접속정보를 입력하고 테스트를 눌러 정상작동 하는지 여부를 확인하여 줍니다.

데이터베이스에 대한 접속 정보가 생성되었으면 디자인 단계로 넘어갑니다. 이번 보게될 기능은 데이터와 데이터 간의 이관, 그리고 데이터를 파일로 추출, 추출 값을 다른 서버에 적재하는 순으로 진행하도록 하겠습니다.
 
먼저 데이터 Table Input을 드래그 하여 배치한 후 배치된 개체를 더블클릭 하면 테이블 인풋에 대한 상세 설정창이 나타납니다.



 
항의 선택창에서 연결할 데이터베이스를 선택하고 항의 SQL SELECT 문장 가져오기를 선택하면 아래와 같은 데이터베이스 탐색기가 열려, 적재된 이관 대상이 될 테이블을 선택할 수 있습니다.

이관할 테이블을 선택한 후 확인을 누르면 SQL에 필드 이름 포함 여부를 묻는 팝업창이 생성되며, 예를 선택할 경우 SQL문장에 테이블의 컬럼 정보를 나열한 상태로 SELECT 문이 생성됩니다.
 
원본 데이터의 형태를 확인하기 위해서 미리보기를 누를 경우 미리보기 할 데이터의 로우수를 입력하는 팝업이 생성되며 입력하면 현재 적재되어있는 데이터의 상태를 확인할 수 있는 창이 열립니다.


원하는 테이블과 데이터가 맞는지 확인이 되었다면, 미리보기를 닫은 후 확인을 눌러 해당 개체 정보를 저장합니다.
 

다음은 아웃풋을 선택 후 테이블 아웃풋을 선택하여 화면에 배치합니다.

배치된 각 객체간의 이동 관계를 설정하기 위하여 기준이 되는 TABLE INPUTSHIFT CLICK한 상태로 대상이 되는 TABLE OUTPUT에 드래그 하여 관계선을 맺어줍니다.

다음은 대상이 되는 TABLE OUTPUT을 선택하여 INPUT 테이블 설정과 동일한 방법으로 대상이 되는 데이터베이스 서버와 대상 테이블을 선택한 후 데이터베이스 필드 지정을 체크한 후 데이터베이스 필드 선택하여 매핑해줍니다.

기준 테이블과 대상 테이블의 정보 매핑이 끝났으면 바로 이관 프로세스를 실행할 수 있는 상태가 되었습니다. 실행 버튼을 누르면 바로 해당 프로세스에 대한 결과를 확인 하실 수 있습니다.


Pentaho Spoon은 각종 파일에 대한 입출력 기능을 보유하고 있으며, 원격지에 분리되어 있는 서버간의 파일을 통한 데이터 교환 역시 가능합니다. 이어서 데이터를 파일로 출력하는 기능에 대한 설명입니다.
이전 설명과 동일한 방식으로 Transformation을 생성한 후 데이터베이스 설정 후 Table Input Excel Output을 화면에 배치한 후 관계를 맺어주고 기준 테이블에 대한 정보를 설정합니다.

이전 복제된 emp_copy1의 데이터를 excel로 출력할 것이므로 해당 테이블을 선택한 excel을 더블클릭하여 excel output 파일명, 파일이름 내용등의 상세 항목들을 설정합니다.

필드의 명칭은 수동으로 설정 할 수도 있으며, 필드 가져오기 버튼을 누를 경우 인풋에 설정된 정보를 읽어 자동으로 생성됩니다.


위 사항을 저장 후 다시 실행 버튼을 눌러서 결과를 확인합니다.

실행이 완료되면 지정된 경로에 엑셀파일이 생성된 것을 확인 할 수 있습니다.

또한 추출된 데이터 파일을 테이블에 적재하는 프로세스를 추가하여, 성격이 다른 데이터베이스간의 데이터 이관 역시 손쉽게 처리할 수 있습니다.
 
다음은 상기 작업에 Table Output을 추가하여 해당 작업을 진행해보겠습니다.

위처럼 table_output을 추가한 후

연결 및 대상 테이블을 선택한 후 필드값을 자동으로 설정 해준 후 실행을 하면 대상으로 설정한 emp_insert1 테이블에 데이터가 이관된 것을 확인 할 수 있습니다;

 
또한 job 생성을 통한 일련의 작업을 순서대로 혹은 병렬로 실행하게 설정하여 그간 진행했던 작업들에 대한 일괄 실행이 가능하기도 합니다.
메뉴 좌측 상단의 새로만들기 버튼을 눌러 JOB을 생성합니다.

좀전에 저장된 Transformation 들을 순차적으로 처리하기 위해 새로 생성된 jobStart과 두 개의 Transformation을 배치합니다.

Start는 작업의 수행 주기를 한번만 실행할 것인지 혹은 주기적으로 반복할 것 인지에 대한 설정과, 수행 시간 단위를 지정할 수 있습니다.

 
이번은 시연에서 1회 수행하는 것으로 하고 이전에 생성된 각각의 Transformation을 등록하여 수행해보겠습니다. 기존 수행으로 인해 누적된 데이터는 삭제하겠습니다.

기존에 저장된 tranformation을 각 객체에 추가해주고

실행 버튼을 누르면 실행 결과가 아래 창에 표시도되며 각 단계별로 수행이 완료되었음을 알려줍니다.
 

수행이 완료 된 후 해당 테이블을 조회해보면 아래와 같이 데이터가 정상적으로  테이블 모두에 이관되었음을 알 수 있습니다.

펜타호 에는 이밖에도 많은 기능들이 있습니다. 각종 파일 유형의 데이터 아웃풋과, 활용에 따라 단계별로 데이터를 정제 , 통합 할 수 있으며, 1:1, 1:n관계등의 다양한 데이터 아웃을 만들 수 있어 활용에 따라 다양한 프로세스를 손쉽게 관리할 수 있게 될 것입니다. 

차후 시간이 된다면 펜타호의 다양한 활용법에 대해 차차 기술해 보고 싶다는 생각도 들지만, 제가 만든 제품도 아니고, 사용할 제품도 아니기에 이정도에서 펜타호에 대한 설명은 마무리가 될 것 같습니다. 쓸데없이 스크린샷만 많은 글을 봐주셔서 감사합니다. 

2017년 1월 5일 목요일

빅데이터 분석 툴 펜타호 설치 가이드

펜타호 설치 가이드
 
펜타호란 ?
 
빅 데이터 분석 및 활용을 위한 다양한 기능을 보유하고 있는 멀티 인포테인먼트 도구입니다.
 
오픈소스 버전과 엔터프라이즈 버전이 있으며, 데이터 분석에서 설계, 구축, 통계, 리포트까지 다양한 분야를 데이터베이스의 종류에 구애되지 않고 단일 플랫폼에서 지원하므로 빅 데이터 구축에서 운영까지의 전반에 활용할 수 있는 도구라고 할 수 있습니다.
 
주요 기능으로는 데이터 분석, 정제, 이관, 분산 데이터베이스 설계, 구축, 관리 및 보고서 작성 등이 있으며 그 외에도 다양한 기능을 반자동화 하여 지원하고 있습니다.펜타호에 대한 설명은 이쯤에서 그만 두고, 일단 사용해 보는 것도 하나의 방법이기에 사용법에 대한 기록을 시작하겠습니다.
 
본 설명은 윈도우즈10 64bit 기반으로 작성되며, 최신버전의 64bit JDK를 설치하였습니다.
펜타호에는 여러 가지 모듈이 복합적으로 존재하지만, 그중 현업에서 가장 많이 사용하는 OPEN SOURCE 모듈은 아마도 ETL 모듈인 PDI인 것 같습니다. 일단 최신버전의 오픈소스를 sourceforge.net에서 다운받아야 합니다. 또한 펜타호의 SPOON은 데이터베이스 환경에서 사용되는 프로그램이기에 DB도 필요하며, 최신버젼의 JDK도 필요합니다.
 
펜타호는 상위 사이트에 접속하면 download 버튼을 클릭해 쉽게 다운로드 할 수 있으며, 약간의 설명과 함께 화면 캡쳐가 첨부되어있습니다.
ORACLEJDKORACLE에 접속해서 다운로드 받으실 수 있습니다.
 
다운로드가 완료되면 해당 파일을 적당한 경로를 만들어 압축을 해제한다. 대게의 오픈소스 프로그램의 경우 인코딩에 민감한 경우가 많으므로, 폴더 경로는 되도록 영문명을 사용하는 것이 좋습니다.

압축이 풀린 폴더를 살펴보다 보면 spoon 이라는 항목이 보일 텐데, 많은 모듈 중 이번에 사용할 모듈은 spoon입니다. (GUI인터페이스를 가진 ETL도구라고 합니다.)
data-integration 폴더 내에 들어가면 spoon.bat 파일이 보이는데 간단하게 더블클릭으로 실행한합니다.

windows10에 처음 설치해보면서 몇 가지 문제가 발생해서 좀 당황스러웠는데 그중 첫 번째는 새 노트북에 설치하고 spoon.bat를 실행하니 그냥 창이 사라지는 경우가 있었고, 두 번째는 ‘javaw를 찾을 수 없습니다라는 문구가 떴는데 jdk버전에 대한 path등록을 명확하게 해주더라도 해결되지 않아서 자바 bin 폴더를 해당 위치에 복제해주어야 했습니다. (c:\penthaho설치폴더\java\bin) 이 부분에 대한 설명이 없어 처음엔 java path설정부터 이런저런 것을 해보았으나, 영문 커뮤니티 검색결과 해당 위치에 단축 아이콘을 만드는 것을 보고 귀찮아서 복제해보았더니 해결되었습니다. 처음 받았던 버전은 pentaho 의 포터블 버전 4.0 이었고, 이후 문제를 해결 하고 나서 7.0버전으로 옮겨왔으나, 7.0에서는 java의 복제 없이 정상작동 하는 것을 보면, 포터블 버전의 문제이거나 windows10에서 java path를 정상적으로 읽어드리지 못하는 것 같습니다.
 
자 이제 설치된 pentaho ETL도구 spoon을 실행해 보겠습니다.

spoon을 실행시켜보면 매우 단순하며 직관적인 인터페이스에 접할 수 있습니다. 가장 눈에 띄는 것은 왼쪽에 있는 라는 탭인데, 기본적인 이 녀석들만 제어하면 매우 쉽게 기능을 활용할 수 있을 거란 생각이 들만큼 심플해 보입니다. 의미로 생각해보면 Transformation이 작은 단위의 작업일거고 job이 여러 Transformation을 그룹 할 수 있는 단위로 추측되었습니다. 망설임 없이 Transformation을 더블클릭 하니, 바로 디자인 화면으로 연동되었습니다.

 
메뉴가 정말 다양하고 많은데, 그중 가장 기초가 되는 것은 inputoutput이라서 인지 가장 상위에 배치되어있고, 요소들이 너무 많아 일일이 실행해 보기에 어려운 난관에 부딪칠 것 습니다. 일단은 다른 것은 제외하고, INPUT OUTPUT부터 알아보도록 하겠습니다.
 
일단 INPUT을 확장해보니 한 화면에 들어오지 않을 만큼 지원하는 하위 기능들의 리스트가 상당히 많이 있는 것을 알 수 있습니다.

 
일단 이번에 해당 도구를 사용하게 되는 이유 중 하나가 데이터 이관 작업에 이용하기 위해 찾은 만큼 테이블이라는 단어가 들어있는 아이콘을 찾았습니다. 일단 TABLE INPUT 이라는 메뉴가 눈에 들어와서 더블클릭 해보니 화면에 TABLE INPUT 이 배치되었습니다. 배치된 아이콘을 다시 더블클릭 해보니 세부 정보를 설정할 수 있는 화면이 나타났습니다.

인터페이스가 직관적이고 편리해서인지 클릭만 몇 번 함으로써 쉽게 진행되는 것 같은 기분이 든다. table input은 당연히 데이터를 연결해야 하는 부분이 있기에 해당 데이터에 대한 원천을 선택하기 위해 연결 란을 선택해 보았으나, 빈 박스만 존재할 뿐이었습니다. 그렇다면 저 위저드를 선택해보면 해당 문제를 해결해주지 않을까 하는 생각에 위저드를 클릭했습니다.

위저드에서는 원하는 database 서버를 선택해서 접속할 수 있는 인터페이스가 팝업 됐는데, 해당 인터페이스에 익숙한 오라클과 jdbc를 선택하고 다음을 누르니 접속정보를 입력하라고 나왔습니다.



로컬에 설치되어 있는 오라클의 정보를 대충 입력하고 테스트를 실행하니 오류가 잔뜩 등장합니다.

당황하지 않고 차근히 읽어 내리다 보니 눈에 띄는 문구가 있습니다.
driver class 'oracle.jdbc.driver.OracleDriver' could not be found, make sure the 'Oracle' driver (jar file) is installed. oracle.jdbc.driver.OracleDriver
 
접속할 수 있는 오라클의 jdbc드라이버 jar 파일이 없다고 합니다.

(로컬 데이터베이스를 설치했기에 해당 폴더에 가서 jdbc 파일을 복제해왔습니다. )
일단 pentaho 종료 후 오라클 JDBC 설치 폴더에 있는 모든 jar파일을 복제한 후 다시 pentaho 설치 폴더의 lib 안에 복제해주었습니다.

그런 후 테스트를 하니 정상적으로 구동됩니다.

이제 다시 input 창으로 돌아가서 sql문장 가져오기를 눌렀다. 정상적으로 데이터를 가져오는 것을 확인 할 수 있다.
 


이제 데이터베이스에 접속이 되어 정상적으로 테이블 목록을 가져오게 되었습니다. 해당 프로그램을 사용할 때 단 한번만 설정해주면 되는 부분이라서 해당 부분이 차후에 문제가 될 소지는 없어 보입니다. 대상 테이블을 선택한 후 확인을 누르면 필드 명을 sql에 가져올 것인지 여부를 확인하고 종료됩니다. (예를 누를 경우 SELECT 내의 SQL이 컬럼 명을 포함하여 완성됩니다.) 이제 테이블 하나의 설정이 완료되었습니다.
 
정상적으로 사용할 수 있는 기반을 만드는데 소요되는 시간이 2시간 남짓... ORACLE이 설치되어 있지 않았다면, 더 많은 시간이 소요되었을 것입니다. 다음 DATA베이스와의 연동은 다음 회에서 설명하도록 하겠습니다.

펜타호 스푼 사용 가이드