vim settings

syntax on set autoindent set cindent set nu set ts=4 " Tab 너비 set shiftwidth=4 " 자동 인덴트할 때 너비 " 마지막으로 수정된 곳에 커서를 위치함 au BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "norm g`\"" | \ endif

잡 개념들 정리(관계vs비관계, LDAP)

관계형 데이터베이스 전체 트랜잭션이 하나의 단위로 기록되어서 실패할 경우 전체를 롤백한다. 디비 설계 시 중복을 최소화해서 구조화하기 위해 정규화를 한다. 장점: 데이터의 성능이 일반적으로 좋아 정렬, 탐색, 분류가 빠르다. 신뢰성이 높아 데이터의 무결성을 보장한다. 정규화에 따른 갱신 비용을 최소화한다. 단점: 기존에 작성된 스키마를 수정하기 어렵다. 데이터베이스의 부하를 분석하기 어렵다. 빅데이터를 처리하는데 비효율적이다. 비관계형 데이터베이스 NoSQL 데이터의 저장 및 검색에 특화된 매커니즘을 사용한다. 분산환경에서의 데이터 처리를 더욱 빠르게 하기 위해 개발됐다. MongoDB, CouchDB 등이 있다. 거대한 맵으로서 key-value 형식을 지원한다. PK, FK Join 등 관계를 정의하지 않는다. 스키마에 대한 정의가 없다. 장점: 대용량 데이터를 처리하는데 효율적이다. 읽기보다는 쓰기가 빠르고, 관계형 데이터베이스에 비해 쓰기와 읽기 성능이 빠르다. 데이터모델링이 유연하다. 확장성이 좋아서 검색에 유리하다. 복잡한 데이터 구조를 표현할 수 있다. 단점: 쿼리 처리 시 데이터를 파싱 후 연산을 해야해서 큰 크기의 문서를 다룰 때는 성능이 저하된다. LDAP() 네트워크 상에 있는 파일이나 장치들과 같은 자원의 위치를 찾을 수 있게 해주는 소프트웨어 프로토콜이다.

오픈소스 프레임워크 정리(Presto, Airflow, Slider, OpenTSDB)

이미지
Presto 빅데이터 분석 도구로, 분산된 SQL 쿼리 엔진이다. 테라, 페타 바이트 단위의 데이터를 분산 쿼리를 사용하여 분석할 수 있는 툴이다. Hive나 Pig는 쿼리가 맵리듀스 잡으로 실행되는 반면 Presto는 쿼리 실행 엔진이 구현되어 있어서 단계별 결과를 디스크에 쓰지 않고 메모리에서 메모리로 데이터를 전달할 수 있다. Coordinator(master)와 Worker(slave)가 있다. Coordinator: Client로부터 요청을 받는다. SQL 구문을 parsing한다. 쿼리를 실행할 worker 노드를 조정하고 노드의 활동을 트래킹한다. Worker: Coordinator에게서 받은 태스크를 수행하고 데이터를 처리한다. 수행 결과는 바로 worker에서 client로 전달한다. 프레스토에서 connector는 데이터베이스에서의 driver와 같은 역할을 한다. 즉, 데이터 소스에서 데이터를 읽어올 수 있도록 이어주는 역할을 한다. 다양한 저장소에서 저장된 데이터를 SQL을 이용해서 조회할 수 있다. 프레스토 쿼리에서는 하나 이상의 catalog를 사용할 수 있다. 즉, 하나의 쿼리에서 여러 개의 데이터 소스를 사용할 수 있다. 프레스토 워커 프로세스가 시작하면 Coordinator의 discovery server에 등록된다. discovery server에 등록돼야 coordinator가 태스크 실행에 워커를 배정할 수 있다. 클라이언트는 HTTP로 쿼리를 coordinator에 보낸다. Coordinator는 connector plugin에 스키마 데이터를 요청한 뒤 쿼리 플랜을 작성한다. Coordinator에서 워커로 수행해야 할 태스크를 전달한다. 워커는 connector plugin을 통해서 데이터 소스로부터 데이터를 읽어온다. 워커는 메모리에서 태스크를 수행한다. 실행 결과를 바로 클라이언트에게 전달한다. < https://docs.ncloud.com/ko/hadoop/chadoop...

오픈소스 프레임워크 정리(Zeppelin, Hue, Kibana)

이미지
Zeppelin 특징 스파크를 통한 데이터 분석의 불편함을 웹 기반의 노트북을 통해서 해결하기 위한 애플리케이션이다. 웹에서 다양한 언어를 섞어가며 분석 코드를 짤 수 있고 이 결과를 바로 그래프로 시각화해서 볼 수 있다. 웹소켓을 활용하여 같은 노트북을 여러 사람이 동시에 편집할 수 있는 협업 기능을 제공한다. Spark, SparkSQL의 결과를 바로 차트로 그릴 수 있다. 자체적으로 스케줄 기능이 내장되어 있다. HTML을 표현하는 게 가능하므로 테이블에 이미지를 표시하고나 링크를 넣거나 하는 등의 동작이 가능하다. 구조 장점 아파치 스파크와 궁합이 잘 맞다. 스파크의 성능 덕분에 대부분 코드가 즉시 실행되므로 interactive한 레포트를 작성할 수 있다. Tadpole이나 airpal이라는 솔루션들도 SQL을 이용하여 실무자가 직접 쿼리를 만들거나 실행하는 GUI 도구이지만 이들에 비해 갖는 장점은 특정 사용자가 변경하거나 쿼리를 실행시키면 그에 대한 반응이 다른 사용자의 브라우저에도 자동 반영되기 때문이다. 단점 사용사례 <http://zeppelin.apache.org> Hue 특징 Hadoop User Experience의 약자로서 하둡 클러스터와 함께 사용되는 웹 기반 사용자 인터페이스이다. 데이터를 탐색, 쿼리 및 시각화를 하기 위한 analytic workbench이다. 하둡 에코시스템을 웹 인터페이스로 접근할 수 있다. 다른 하둡 에코시스템과 함께 그룹화되어 하이브 작업 및 스파크 잡 등을 수행할 수 있다. Hue에 저장한 워크플로우, 쿼리, 스크립트 파일을 볼 수 있다. HDFS에 저장된 파일을 볼 수 있다. S3 버킷에 저장된 파일을 볼 수 있다. 하이브 웨어하우스에 저장된 테이블을 볼 수 있다. 실행한 우지의 잡 상태 로그를 볼 수 있다. 하이브 쿼리, spark-shell과 같은 interactive한 구문, 우지 워크플로우를 통한 jar와 Distcp와 .sh파일과...

오픈소스 프레임워크 정리(ElasticSearch, Docker, Kerberos, Ansible)

이미지
ElasticSearch 특징 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 루씬 기반의 분산형 오픈 소스 검색 및 분석 엔진이다. 자바로 개발되었다. 로그스태시라는 데이터 수집 및 로그 파싱 엔진과, 키바나라는 분석 및 시각화 플랫폼과 함께 개발되었다. 이 세 가지를 ELK 스택으로 부른다. 로그스태시로부터 받은 데이터를 검색 및 집계를 해서 필요한 관심 있는 정보를 획득한다. 클러스터는 하나 이상의 노드들로 이루어진 집합니다. 서로 다른 클러스터는 데이터를 교환할 수 없는 독립적인 시스템으로 유지된다. 여러 서버가 한 클러스터를 구성할 수도 있고 한 서버에 여러 클러스터가 존재할 수도 있다. 노드는 엘라스틱서치를 구성하는 하나의 단위 프로세스이다. Master-eligible, Data, Ingest, Tribe 노드로 구분할 수 있다. Master-eligible node: 마스터로 선택할 수 있는 노드이다. 마스터는 인덱스 생성/삭제, 클러스터 노드들의 추적/관리, 데이터 입력 시 할당될 샤드 선택 등을 한다. Data node: 데이터 CRUD 작업이 관련된 노드이다. 자원을 많이 소비하므로 모니터링이 필요하다. Ingest node: 데이터를 변환하는 등 사전 처리 파이프라인을 실행하는 역할이다. Coordination only node: 로드 밸런서와 비슷한 역할을 한다. 샤딩: 데이터를 분산해서 저장하는 방법 레플리카: 또 다른 형태의 샤드라 볼 수 있다. 노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드를 복제한다. 테이블과 스키마 대신 문서 구조로 된 데이터를 사용한다. Json 문서를 통해 데이터 검색을 수행하므로 스키마 개념이 없고 자동으로 인덱싱해준다. 데이터 CRUD 작업은 HTTP Restful API를 통해 수행된다. 샤드를 통해 규모가 수평적으로 scale out할 수 있다. multi-tenancy: 하나의 엘라스틱서버에 여러 인덱스를 저장하고 여러 인덱스의 데이터를 하나의 쿼리로...

오픈소스 프레임워크 정리(Spark, Oozie, Kafka, Storm)

이미지
하둡의 한계: 맵리듀스 잡의 결과를 다른 잡에서 사용하려면 이 결과를 HDFS에 저장해야 하기 때문에 이전 잡의 결과가 다음 잡의 입력이 되는 반복 알고리즘에는 맞지 않다. 하둡은 low-level 프레임워크다보니 데이터를 조작하는 high-level 프레임워크나 도구가 많아 환경이 복잡해졌다. Spark 특징 빅데이터 처리를 위해 대량의 데이터를 고속 처리하는 오픈소스 병렬 분산 처리 플랫폼이다. 데이터셋을 추상적으로 다루기 위한 RDD라는 데이터셋이 있다. RDD(Resilient Distributed Dataset)은 노드에 장애가 발생해도 데이터셋을 재구성할 수 있는 복원성을 갖는다. 배치 처리, 스트림 처리, SQL 처리와 같은 서로 다른 형태의 애플리케이션을 하나의 환경에서 통합적으로 다룰 수 있다. HDFS만 읽는 것이 아니라 Hive, Hbase, PostgreSQL, Mysql, Maria, CSV 등의 DB도 읽을 수 있다. 스톰보다는 범용 분산형 컴퓨팅 플랫폼에 가깝다. 하둡에서 맵리듀스의 기능성을 대체할 수 있고 자원 스케줄링에는 얀을 이용한다. 하둡과 같이 사용하지 않을 경우 NFS, AFS 등 네트워크/분산형 파일 시스템을 이용해야 클러스터에서 실행시킬 수 있다. 그래야만 각 노드가 기반이 되는 데이터에 접속할 수 있기 때문이다. 구조 스파크 코어: 병렬분산처리 엔진 스파크 SQL: SQL 담당 스파크 스트리밍: 스트림 처리 담당 MLlib: 머신 러닝 담당 그래프X: 그래프 처리 담당 장점 메모리 효율을 높여서 하둡의 맵리듀스보다 빠르게 설계되었다. 맵리듀스처럼 잡에 필요한 데이터를 디스크에 매번 가져오는 대신 데이터를 메모리에 캐시로 저장하는 인메모리 실행 모델을 쓴다. 이런 변화는 머신 러닝, 그래프 알고리즘 등 반복 알고리즘에 유리하다. 맵리듀스는 기본적으로 메인, 매퍼, 리듀스 클래스 세 가지를 만들어야 하지만 스파크는 간단한 코드로 짤 수 있다. 일괄 처리 작업이나 데이터...

오픈소스 프레임워크 정리(Ambari, Zookeeper, Hive, HBase)

이미지
Ambari 특징 하둡 클러스터를 관리하는 웹 기반 관리 툴이다. 하둡 클러스터의 상태를 모니터링해서 대쉬보드에 보여준다. 암바리를 이용해서 서비스를 시작이나 중지 시킬 수 있고 클러스터에 호스트를 추가할 수 있고 서비스 설정을 업데이트 할 수 있다. Kerberos 기반의 하둡 클러스터를 설치함으로써 authentication, authorization, auditing 등을 제공한다. 호스트에 하둡 서비스를 설치하는 것을 도와준다. 각 호스트는 암바리 에이전트의 복사본을 갖고 있어서 암바리 서버의 통제를 받을 수 있다. 아파치 애플리케이션에 단순히 뷰를 추가함으로써 기능성을 확장할 수 있다. active directory에서 LDAP과 sync할 수 있다. 써드파티 업체들이 쉽게 암바리에 기능을 추가할 수 있도록 stack이나 view의 기능을 제공한다. 구조 암바리 서버: 관리하는 모든 동작들이 들어오는 곳이다. ambari-server.py라는 파이썬 코드에 의해 동작한다. 암바리 에이전트: 암바리로 관리하고 싶은 모든 노드들에 있다. 하트비트를 마스터로 보낸다. 이 에이전트를 통해서 서버는 여러 작업들을 한다. 암바리 스택: 암바리가 제공하는 설치/배포 기능에 다른 eco들도 쉽게 추가할 수 있도록 한다. 암바리 뷰: 새로 개발된 기능의 UI를 쉽게 추가할 수 있도록 API를 지원한다. 암바리 컨테이너 안에 넣을 수 있는 애플리케이션과 같은 것이다. 자바로 쓰여있는 server-side resource는 외부 시스템과 integrate할 수 있다. HTML, JavaScript와 같은 client-side assets는 암바리 웹에서 보여지는 것을 제공한다. 장점 하둡 클러스터를 설치, 설정, 관리하기 쉽다. 보안이나 애플리케이션 관리를 중앙화한다. 단점 사용사례 Zookeeper 특징 분산 코디네이션 서비스 시스템으로서 분산 시스템 내에서 중요한 상태 정보나 설정 정보등을 유지한다. 분산 코디네이션 시...