얼마 전 업무를 하다가

Apache HBase 에서는 client 와 Region Server 사이에서 통신은 어떻게 이루어질까 하는 의문이 들었다.

그래서 HBase 소스를 보니 HBase 에서는 모든 통신을 ZooKeeper 를 통해서 한다는걸 알았다.

소스 상에서는 ZooKeeper 에다가 node 에 변경을 가하고 끝이다.

그러면 HBase 를 띄울 때 같이 실행된 ZKWatcher 에서는 해당 node 를 계속 listen 하고 있다가 node 가 변경되면 뭔가의 작업이 이루어지는 구조였다.

그래서 mapper 가 많은데 mapper 에서 HTable 을 열어서 뭔가의 작업을 하면 항상 ZooKeeper max connection 에러가 나서 Region Server 가 몇개 죽거나 그랬다

애초에 mapper 에서 HTable.delete() 를 한다는게 말이 안되는 거였다.

왜냐하면 HTable 을 열고 뭔가 작업을 하면 HBase cluster 전체에 있는 Region Server 전체가 실행할 것이다 근데 그걸 모든 mapper 에서 실행했으니 ZooKeeper max connection 을 초과하는게 당연한 얘기일 것이다.


그리고 가끔 Apache incubator project list 를 보는데 Ratis 라는 project 를 보니 ZooKeeper 와 비슷한 project 였다.

Ratis project 는 Raft 알고리즘의 구현체이다.

Raft 알고리즘은 대표적인 합의 알고리즘(Consensus algorithm)인 Paxos 보다 이해가 쉽고 구현이 쉬운 알고리즘이라고 소개하고 있다.

구글링 해보면 합의 알고리즘이란 분산환경에서 신뢰성을 보장하도록 하는 알고리즘으로 최근 블록체인이 이슈가 되면서 합의 알고리즘 포스팅도 많아진 것 같다.


다음 포스팅은 Raft Protocol 논문을 읽고 요약해봐야겠다

'[프로그래밍]' 카테고리의 다른 글

Apache Ratis 소개  (3) 2018.03.21
java 로 KMP 알고리즘  (0) 2017.12.21
dfs 알고리즘을 java 로 구현하기  (0) 2017.02.16
[IntelliJ] SVN 커밋 시 'is out of date' 에러 문제  (0) 2015.10.23
rsync 로 CRAN mirroring  (0) 2015.10.06
GIS shp 파일 변환  (0) 2015.07.28
Posted by FeliZ_하늘..

댓글을 달아 주세요

  1. FeliZ_하늘.. 2018.03.26 19:56 신고  댓글주소  수정/삭제  댓글쓰기

    https://www.youtube.com/watch?v=JEpsBg0AO6o

  2. FeliZ_하늘.. 2018.03.26 19:56 신고  댓글주소  수정/삭제  댓글쓰기

    https://www.youtube.com/watch?v=YbZ3zDzDnrw

  3. FeliZ_하늘.. 2018.10.22 21:15 신고  댓글주소  수정/삭제  댓글쓰기

    아마 이때부터 장비 노후화가 진행된 것 같다
    BulkLoad 를 하면 hdfs schema 가 다르면 copy 를 하고 schema 가 같으면 move 를 하는데 thread 를 여러개 만들어서 실행한다
    이때 thread 개수는 nrThreads = conf.getInt("hbase.loadincremental.threads.max", Runtime.getRuntime().availableProcessors()); 이다. (BulkLoad source 중)
    일할 때 이것마저 여러개를 실행하니
    node 의 IO 가 급격히 올라가고 ssh 도 접속이 힘들어지더니
    Ambari 에서는 Heartbeat Lost 됐다가 결국엔 reboot 됐다
    그래서 BulkLoad 를 순차로 실행하도록 수정하거나 thread 개수를 수정하거나 해야했다

hawq 가 설치 된 모든 노드에서 JAVA_HOME 을 지정한 후 아래 명령어를 실행한다



그리고 hawq master 에서 아래 명령어를 실행한다



pg_language table 을 조회해보면 java 와 javau 가 추가된 것을 확인할 수 있다


gpadmin=# select oid, * from pg_language;

  oid  | lanname  | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl 

-------+----------+---------+--------------+---------------+--------------+--------

    12 | internal | f       | f            |             0 |         2246 | 

    13 | c        | f       | f            |             0 |         2247 | 

    14 | sql      | f       | t            |             0 |         2248 | 

 10885 | plpgsql  | t       | t            |         10883 |        10884 | 

 16542 | java     | t       | t            |         16540 |            0 | 

 16543 | javau    | t       | f            |         16541 |            0 | 

(6 rows)


제대로 java 가 실행되는 지 확인해보기 위해서 아래를 실행해봤다


gpadmin=# create function get_property(varchar) returns varchar as 'java.lang.System.getProperty' language java;

CREATE FUNCTION

gpadmin=# select get_property('user.name')

gpadmin-# ;

 get_property 

--------------

 gpadmin

(1 row)


gpadmin=# select get_property('user.home');

 get_property  

---------------

 /home/gpadmin

(1 row)



'[BigData] > [HDP]' 카테고리의 다른 글

HAWQ 2.1.1.0 에서 pljava 활성화  (0) 2017.04.08
HDP 2.4.2 install with Ambari 2.2.2.0  (0) 2016.06.18
Posted by FeliZ_하늘..

댓글을 달아 주세요

apache hawq 는 postgresql 기반이다.

postgis 는 postgresql 에서 gis 연산을 할 수 있도록 해주는 postgresql extension 이다.

postgresql 9.2 이상 설치 가능한 것으로 기억하고 있다.

그런데 최근 greenplum committer 로 예상되는 누군가가 apache hawq 에서 postgis 를 사용 가능하도록 포팅했다.

greenplum gis extension 을 이용했다고 한다.

그래서 아래의 링크를 기반으로


apache hawq 에서 postgis 를 설치하는 아래의 문서를 작성했다.

https://github.com/HaNeul-Kim/apache-hawq-build/blob/master/postgis_for_hawq_build.asciidoc


Posted by FeliZ_하늘..

댓글을 달아 주세요

Apache HAWQ 2.0.0 을 resource manager 를 yarn 으로 설치 후 pgadmin 으로 연결하려고 하자


pg_resqueue table 이 없어서 연결이 안되고


hawq yarn application 이 재시작 되었다.


그래서 Pivotal HAWQ 2.0.0 을 설치하기로 하고 그 전에 HDP 를 설치했다.


http://hskimsky.tistory.com/111


그리고나서 pgadmin 으로 HAWQ 에 연결하려고 하자 여전히 yarn 에서 hawq 가 재시작됐다.


왜 이러는지 문서를 더 찾아보든가 committer 에게 문의하든가 해야겠다

Posted by FeliZ_하늘..

댓글을 달아 주세요

  1. 1466433016 2016.06.20 23:30  댓글주소  수정/삭제  댓글쓰기

    알찬 정보 좋네요~

  2. 1466955918 2016.06.27 00:45  댓글주소  수정/삭제  댓글쓰기

    좋은글 감사

http://docs.hortonworks.com/HDPDocuments/Ambari-2.2.2.0/bk_Installing_HDP_AMB/content/index.html


위 url 을 따라가면서 설치 진행했다


CentOS 6.7

jdk 1.7.0_80

HDP 2.4.2.0 with Ambari 2.2.2.0 (Pivotal HAWQ 2.0.0 포함 전체)


리눅스 서버 4대로 구성해봤다


1번 서버에 Ambari Server, NameNode, HAWQ Master, 그 외 각종 Master


2번 서버에 Secondary NameNode, Resource Manager, HAWQ Standby Master, 그 외 각종 Master


3,4번 서버에 DataNode, Node Manager, HAWQ segment, HBase Region Server


PHD 3.0.1.0-1 과 거의 비슷했다


다만 HDP 설치 도중 /usr/hdp/current/xxx-client/conf 디렉토리가 없다고 오류가 날 경우가 있었는데


그냥 수동으로 만들어주고 다시 Retry 를 해서 설치했다

'[BigData] > [HDP]' 카테고리의 다른 글

HAWQ 2.1.1.0 에서 pljava 활성화  (0) 2017.04.08
HDP 2.4.2 install with Ambari 2.2.2.0  (0) 2016.06.18
Posted by FeliZ_하늘..

댓글을 달아 주세요

직접 작성한 문서입니다


Apache Hadoop 2.7.2 버전 위에 HAWQ 2.0 dev 버전을 resource manager 를 yarn 으로 설치하고 HAWQ 에서 hdfs 와 web 의 파일을 읽어서 external table 을 만드는 것을 목표로 합니다.

Apache HAWQ 를 build, install 하는 순서와 명령어를 아주 자세하게 적어놓았습니다.

hadoop install 방법은 포함하지 않았고 pxf install 을 포함하고 있습니다.

먼저 챕터별 전체 실행 스크립트를 적어놓았고 그 뒤에 부분별 실행 스크립트를 적어놓았고 그 다음에 실행 한 결과 로그를 적어놓았습니다.

문서는 asciidoc 으로 작성하였으며 repository 내에 asciidoc 파일 및 pdf 파일도 포함되어 있습니다.

잘못된 점이 있으면 hskimsky@gmail.com 으로 메일 주시기 바랍니다.

빌드 성공을 기원합니다.


https://github.com/HaNeul-Kim/apache-hawq-build

Posted by FeliZ_하늘..

댓글을 달아 주세요

CentOS 6.7

Oracle JDK 1.7.0_80

Apache Maven 3.3.9

Python 2.6.6

Apache Hadoop 2.7.2

Apache HAWQ 2.0.0.0 dev

PXF 3.0.0


위 사양으로 설치 완료

Apache HAWQ build 만 6개월정도 삽질 한 듯..

문서에서는 gcc 버전을 4.7.2 이상 쓰라는데

centos 6.7에서 gcc 버전 4.7.2 로 올리면 yum 이 안됨

(나는 그냥 default 인 4.4.7 로 했음)

kernal 옵션 설정시 본인의 사양과 잘 비교하면서 할 것. 부팅이 불가할 수도 있음

semaphore 설정은 필수임

PXF 설치도 자잘하게 해줘야 할 것들이 많음

PXF 는 51200 port 로 실행하고 external table location 의 port 도 51200 으로 사용함


지금은 single node 로 구성했는데

조만간 vm 4개정도로 HAWQ HA 구성까지 하면서 메뉴얼 작성 해봐야겠다


Posted by FeliZ_하늘..

댓글을 달아 주세요

https://github.com/cloudera/hue/tree/master/apps/spark/java


cloudera 에서 만든 hue 안에 있는 Livy


hue 와 디펜던시가 없다 함

Posted by FeliZ_하늘..

댓글을 달아 주세요

Application

순차적으로나 병렬로 어떤 데이터 처리 로직과 잡의 시리즈를 스케쥴 가능한 SparkContext 의 인스턴스 하나.

보통 Driver 로 쓰이는 클래스 하나를 뜻하는 듯하다.


Job

driver application 에 의해 발생한 action 이나 데이터 저장이 끝난 RDD 에서 transformation 의 완전한 집합.

action 이 일어나기 전까지의 transformation 을 합쳐서 Job 이라고 하는 듯하다.


Stage

독립된 워커 하나에 의해 파이프라인되고 실행된 transformation 의 집합. 대게 transformation 사이의 "read", "shuffle", "action", "save".

Job 사이에 일어나는 연산들을 말하는 듯하다.


Task

데이터 파티션 하나에서 Stage 의 실행. 스케쥴링의 기본 단위.

RDD 가 파티션 된 하나 정도라고 보면 될 듯하다.


참고 : http://www.slideshare.net/AGrishchenko/apache-spark-architecture

위 사이트에서 60~69페이지

Posted by FeliZ_하늘..

댓글을 달아 주세요


제외되는 값 없이 비교하기 (비교 대상이 없는 경우 다음 값 반환)


Posted by FeliZ_하늘..

댓글을 달아 주세요