SW Engineering 264

Impala Connection refuse Error

Impala Connection refuse Error - Couldn't open transport for hd-master:26000 (connect() failed: Connection refused) · Version : CDH 6.3 파이썬의 pyimpala를 사용하여 Hadoop Impala에 데이터를 입력하는 클라이언트가 있는데, 어느날부터 아래와 같은 오류를 출력하며 데이터가 입력되지 않았다. InternalException: Error requesting prioritized load: Couldn't open transport for hd-master:26000 (connect() failed: Connection refused) Error making an RPC call to Cat..

Hive 데이터 타입

Hive 데이터 타입 · Version : Hive Hive는 여러 크기의 정수형과 부동소수점, 불린형과 임의의 길이를 가지는 문자열, TIMESTAMP, BINARY 타입등을 제공한다. 각각의 데이터형은 자바로 구현되어 있어 자바 데이터 타입과 동일하게 하이브에서 사용된다. 타입 크기 리터럴 문법 예제 TINYINT 1바이트 정수형 20 SMALLINT 2바이트 정수형 20 INT 4바이트 정수형 20 BGINT 8바이트 정수형 20 BOOLEAN TRUE 또는 FALSE TRUE FLOAT 단정도 부동 소수점 3.14159 DOUBLE 배정도 부동 소수점 3.14159 STRING 문자의 시퀀스, 또는 문자열 설정가능. 작은 따옴표 및 큰따옴표 사용가능 ‘Hello Hive’, “Hello Hive”..

HDFS 데이터 저장소에는 RAID구성이 필요할까

HDFS 데이터 저장소에는 RAID구성이 필요할까 · Version : HDFS HDFS 클러스터에서 데이터노드 저장소 용도로 RAID(Redundant Array of Independent Disks)를 사용하면 이득이 있을까? 결론부터 이야기하면 이득이 없다. HDFS는 노드간에 복제하는 기능이 있어 RAID가 제공하는 중복성(redundancy)은 필요하지 않기 때문이다. 또한 성능 향상을 위해 흔히 사용하는 RAID 0 (Striping)은 모든 디스크에 DHFS 블록을 연속적으로 배열하는 HDFS의 JBOD (Just a Bunch of Disks)방식보다 느리다는 것이 밝혀졌다. 그 이유는 RAID 0의 읽기/쓰기 동작의 경우 RAID 배열에서 가장 느린 디스크의 속도에 의해 제한을 받기 때문..

Hive에서 하둡(dfs)명령 실행

Hive에서 하둡(dfs)명령 실행 · Version : Hive 하이브(Hive)에서 하둡(dfs) 명령을 수행할 수 있다. 하이브에서 하둡 명령어를 사용하는 방법은 dfs 를 사용하고 마지막에 세미콜론(;)을 입력한다. dfs -ls /; 하이브에서 dfs 명령을 사용하는것이 배시쉘에서 hadoop dfs 로 동일한 명령을 사용하는것보다 효율적이다. 하이브는 현재 프로세스에서 명령을 수행하는 반면, 배시쉘을 사용할때에는 새로운 jvm 인스턴스를 구동하여 명령을 실행하기 때문이다. 아래와 같이 -help 를 사용하면 dfs에서 제공하는 도움말을 볼 수 있다. 2020-05-18 / Sungwook Kang / http://sungwookkang.com Hadoop, Big Data, 하둡, 빅데이터, ..

ZooKeeper 옵저버와 CLI

ZooKeeper 옵저버와 CLI · Version : Zookeeper 주키퍼는 리더가 모든 서버에 쓰기 요청을 보내고 과반수 이상의 응답을 받은 후 처리한다. 주키퍼 서버에 연결되는 클라이언트수가 많으면, 서버를 확장하여 읽기에 대한 부하분산이 가능하다. 하지만 서버가 늘어날 경우, 쓰기 연산 발생시 전체 서버에 대해서 응답을 기다려야 하기 때문에, 그만큼 성능 저하가 발생할 수 있다. 이러한 문제를 해결하기위해 옵저버 개념이 도입되었다. 옵저버는 투표에 참여하지 않는 서버를 뜻한다. 리더는 쓰기 요청을 받고 각 서버로 쓰기에 대한 응답을 보내고 받을때, 옵저버 서버에는 보내지 않는다. 그리고 일반 서버의 투표에 의한 정상 처리인 경우, 쓰기 요청을 옵저버로 보내 옵저버의 로컬 메모리에 데이터를 기록..

Hive에서 쉘 명령 실행

Hive에서 쉘 명령 실행 · Version : Hive 하이브(Hive)에서 간단한 배시 쉘(bash shell) 명령을 수행할 수 있다. 더이상 쉘을 수행하기 위해서 하이브 CLI를 빠져나갈 필요가 없다. 하이브에서 쉘을 실행하는 방법은 ! 뒤에 쉘 명령어를 입력하고, 명령어 마지막에 세미콜론(;)을 입력한다. 아래 예시는 간단히 에코로 문자를 반환하는 것과, 현재 경로를 표시한다. ! /bin/echo “Hello”; ! pwd; 쉘 명령을 실행할때, 사용자 입력이 필요한 명령은 실행해서는 안된다. 쉘 파이프와 파일 글로빙(globbing)은 동작하지 않는다. 예를들어 ! ls *.hql 명령은 *.hql 이름을 가지는 하나의 파일만 찾아줄뿐, .hql 확장자를 가진 모든 파일을 찾아서 보여주지는 ..

ZooKeeper 클라이언트 요청 처리

ZooKeeper 클라이언트 요청 처리 · Version : Zookeeper 주키퍼의 모든 서버는 클라이언트로 부터 읽기, 쓰기 요청을 받을 수 있다. 읽기 요청은 클라이언트가 접속한 서버의 로컬 데이터를 이용한다. 쓰기 요청을 받은 서버는 리더 서버로 리다이렉트 한다. 리더는 새로운 트랜잭션아디이(zxid)를 생성한 후 모든 팔로워에게 쓰기 요청을 보낸다. 쓰기 요청을 받은 서버는 자기의 로컬 트랜잭션 로그 파일에 처리 내역을 저장하지만 실제 메모리에는 반영하지 않고, 리더로 ACK 신호를 보낸다. 리더는 과반수 이상의 팔로워로부터 ACK 신호를 받으면 메모리에 반영하라고 하는 커밋 신호를 보낸다. 커밋 신호를 받은 팔로워는 자신의 메모리에 쓰기 요청된 정보를 반영한다. 팔로워 중 클라이언트로 부터 ..

ZooKeeper 멀티 서버 구성

ZooKeeper 멀티 서버 구성 · Version : Zookeeper 주키퍼를 멀티서버로 구성하려면 각 서버에 멀티서버에 대한 정보를 추가해야 한다. 주피커 설치 디렉터리에서 conf/zoo.cfg 파일에 아래와 같이 정보를 입력 한다. tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper clientPort=2181 server.1=192.168.1.1:2888:3888 server.2=192.168.1.2:2888:3888 server.3=192.168.1.3:2888:3888 zoo.cfg 파일에서 서버 수 만큼 server.x=IP:Port:Port 를 입력한다. server는 예약어이며, x는 서버를 식별하는 ID로 숫자를 입력한다...

SRE (Site Reliability Engineering) 역할

SRE (Site Reliability Engineering) 역할 SRE(Site Reliability Engineering)은 조직이 해당 시스템, 서비스 및 제품에서 적절한 수준의 안정성을 달성하도록 지원하는 엔지니어링 분야로, 실패 비용을 줄임으로써, 신속하게 올바른 방향으로 이동할 수 있도록 지원한다. 이 과정에서 SRE는 자동화, 수치화, 프로세스화를 진행한다. 특히 SRE 관점은 “근본적인 문제는 소프트웨어의 문제”라고 정의하고 접근한다. SRE가 하는 일은 크게 5가지 정도로 나누어 볼 수 있다. [Metric & Monitoring] 모니터링 지표를 정의하고, 정의된 지표를 모니터링 시스템으로 구성한다. 인사이트를 통해 시스템이 안정적인 상황과 또는 장애가 나는 지표는 무엇인지, 왜인지?..

ZooKeeper 리더선출과 데이터 ACID 정책

ZooKeeper 리더선출과 데이터 ACID 정책 · Version : Zookeeper 주키퍼를 사용하여 분산 시스템을 관리할 경우 주키퍼는 반드시 멀티 서버로 운영해야한다. 멀티서버로 운영할 경우 네트워크 단절, 트랜잭션 타임아웃등의 상황에 대비해야한다. 특히 일부 주키퍼 서버 장애발생시 해당 서버에 접속된 클라이언트의 세션에 대한 처리, 장애복구 후 서버간 데이터 동기화 등이 고려되어야 한다. 주키퍼는 이러한 문제를 자체적으로 해결하기 때문에 마스터 서버 구성시 주키퍼를 사용함으로써 상대적으로 쉽게 해결할 수 있다. 주키퍼를 멀티서버로 설치하면 모든 서버는 동일한 데이터를 가지고 있다. 클라이언트는 모든 서버에 접속해서 읽기, 쓰기 요청을 보낼수 있다. 읽기 연산은 모든 데이터가 동기화 되어 있기 ..