1. 두 구문의 결과 값은? String x = "techbeamers"; String y = new String(new char[] { 't', 'e', 'c', 'h', 'b', 'e', 'a', 'm', 'e', 'r', 's' }); System.out.println(x == y); System.out.println(x.equals(y)); 1. x == y => false, x.equals(y) => true. 2. x == y => false, x.equals(y) => false. 3. x == y => true, x.equals(y) => true. 4. x == y => true, x.equals(y) => false. 5. None of these.> String 오브젝트의 '==' 연..
* HBase Shell commands - HBase shell을 통해 수행되는 operation을 통해서 HBase에서 제공하는 기초적인 기능 및 사용목적을 이해하고자 작성함 1) General HBase shell commands - status : cluster 상태를 보여주며, 추가옵션을 통해 상세정보를 확인> status > status 'simple' > status 'summary' > status 'detailed' - version : 설치된 HBase의 버전정보를 확인> version - whoami : 현재 hbase의 사용자를 확인> whoami 2) Table Management commands - alter : (1)table의 schema를 변경하기위해 사용된다. dictio..
* 데이터 버저닝Data Versioning - HBase의 특별한 기능 중 하나로 각 셀cell의 특정column 값에 여러 버전 을 저장할 수 있다. 각 버전에 타임스탬프timestamp를 사용하여 구현되었으며 내림차순으로 정렬된다. long integer 타입으로 millisecond로 환산되는데, 1970년 1월 1일 이후부터의 UTC 시간을 기록하고 있으며 이것을 유닉스시간UnixTime 이라고 한다. 그리고 최초의 시간을 Epoch라 한다. - Timestamp는 명시적으로 입력하는 것도 가능한데, default로 HBase는 각 cell의 변경을 3개 까지 보관하며 기본적으로 scan을 통해서 조회하게 되면 내림차순이기 때문에 가장 최신의 데이터가 조회된다. 또한 저장되어 있는 모든 vers..
* Shard와 Region의 구조 - 일반적으로 샤딩이란 논리적 테이블을 수평적으로 파티셔닝하여 레코드를 논리적으로 분할하는 것인데, 데이터를 분산저장하기 위해서 사용한다. 각 데이터를 적절한 장소로 라우팅routing 하기위해서는 해시함수와 같은 규칙을 미리 정의해야 한다. 수평적 파티션에서 하나의 파티션 용량이 가득 찬 경우 리샤딩reshard 작업이 수행되는데 이는 경우에 따라 데이터의 저장구조가 변경 될(파티션 간 경계를 재설정, 데이터 수평적 재분배 등) 필요가 있음으로 리소스의 비용이 많이 든다. 이때는 I/O가 높아짐으로 데이터 update가 제대로 안 일어날 수도 있다. Reshard 문제는 가상샤드(virtual shard)를 통해 어느정도 완화할 수 있다. 이것은 논리적 테이블을 매우..
* ISSUE1) spark 설치 후 yarn에 작업을 올려 수행하는 경우 ( beeline 수행, spark shell 수행, zeppelin 수행 등) yarn 에 올라간 작업이 아래 에러로그를 발생 시키면서 hang이 걸린다. 2) spark thrift server 가 정상적으로 올라오지 않음. * ERROR LOG17/06/04 11:47:03 WARN DefaultChannelPipeline: An exception 'java.lang.NoSuchMethodError: org.apache.spark.network.client.TransportClient.getChannel()Lio/netty/channel/Channel;' [enable DEBUG level for full stacktrace..
* 스톰 1. 개요 - 실시간 데이터를 병렬 분산 처리하기 위한 SW. 실시간 처리를 위해서는 이벤트가 발생함과 동시에 감지하여 데이터를 적재하는 방식과 데이터 적재와 동시에 마이크로 배치를 실행해 이벤트를 감지하는 방식이 있는데, 스톰은 전자에 해당한다. 2. 주요 구성요소 - spout : 외부로부터 데이터를 유입받아 가공 처리해서 튜플을 생성. 이후 해당 튜플을 bolt에 전송 - bolt : 튜플을 받아 실제 분산 작업을 수행하며, 필터링(filtering), 집계(aggregation), 조인(join)등의 연산을 병렬로 실행 - topology : spout-bolt의 데이터 처리 흐름을 정의. 하나의 spout와 다수의 bolt로 구성 - nimbus : topology를 supervisor..
2017.11.07 Centos-6에서 기본적으로 설정되어 있는 yum repository를 통해서는 python 2.6.6 까지 밖에 설치가 되지 않는다. 하지만 많은 경우 python 2.6.6 에서 제공되지 않는 PyPI를 사용해야 하는 경우가 생기는데, 이럴 때 아래 repository를 넣어주면 된다. * 사전 준비사항 $ sudo yum install python-setuptools ($ sudo yum upgrade python-setuptools) $ sudo yum install python-pip python-wheel * PyPA 저장소 추가 $ vi /etc/yum.repo/CentOS-Pypa.repo ------------------------------------------- ..
# Build? Compile? - 우선 빌드라는 용어가 익숙하지 않은 사람들을 위해 빌드와 컴파일이 무슨 차이가 있는지 알아보았다. 학교수업 또는 책에서 위와 같은 그림을 많이 봤을 것이라고 생각한다. C언어로 작성한 소스파일을 실행파일로 만드는 과정인데, 전처리Preprocessing - 컴파일Compile - 어셈블Assemble - 링킹Linking 이라고 한다. 위와 같이 보듯 전처리는 매크로 및 상수변수 등을 실제 값으로 변경하는 작업을 수행하며, 컴파일은 소스코드를 어셈블리 언어로 변경하는 작업을 수행하며, 어셈블러는 각 기계에 맞도록 기계어로 변경해 주는 작업을 한다. - 컴파일은 위와 같이 소스코드를 어셈블리 언어로 변경시켜주는 작업, 흔히들 소스코드에 문법적인 오류가 있는지 확인하는 행..