2021년 3월 14일 일요일

Apache Phoenix - EMR Phoenix 설정(NamespaceMapping)


EMR Phoenix사용중에 같은 테이블명의 QA환경, 개발환경을 구현해야 할 때가 있다.

Phoenix 스키마를 사용하여 

  • QA.TEST_TABLE
  • DEV.TEST_TABLE

과 같이 구분시킨다.



[ 1 ]

위와 같이 사용하기 위해선 네임스페이스 관련 hbase-site.xml설정을 해야하는데

Hbase의 Master, Region서버 모두 설정값을 수정한다.


sudo vi /usr/lib/hbase/conf/hbase-site.xml 

[ 네임스페이스 관련 ]

  <property>
    <name>phoenix.schema.isNamespaceMappingEnabled</name>
    <value>true</value>
  </property>

  <property>
    <name>phoenix.schema.mapSystemTablesToNamespace</name>
    <value>true</value>
  </property>


[ 성능관련 ]
  <property>
    <name>phoenix.functions.allowUserDefinedFunctions</name>
    <value>true</value>
  </property>

  <property>
    <name>phoenix.query.maxServerCacheBytes</name>
    <value>2097152000</value>
  </property>

  <property>
    <name>phoenix.mutate.maxSize</name>
    <value>20000000</value>
  </property>

  <property>
    <name>phoenix.mutate.batchSize</name>
    <value>10000</value>
  </property>




[ 2 ]

설정값 변경 후 서비스를 재시작한다.

systemctl --type=service | grep hbase (서비스이름확인)

sudo systemctl restart hbase-master.service (마스터노드에서)

sudo systemctl restart hbase-region.service (리전노드에서 )

sudo systemctl restart phoenix-queryserver.service (마스터노드에서)





[ 에러 ]

ERROR: SYSTEM.MUTEX is disabled.

or

AvaticaClientRuntimeException: Remote driver error: RuntimeException: org.apache.phoenix.exception.PhoenixIOException: SYSTEM:CATALOG -> PhoenixIOException: SYSTEM:CATALOG -> TableNotFoundException: SYSTEM:CATALOG. Error -1 (00000) null

과 같은 에러메세지가 쿼리서버에서 나타나면 주키퍼 Znode를 최신화시켜주어야한다.


bin/hbase clean --cleanZk 

명령어 이후 [2]와 같이 서비스를 재시작한다.






댓글 없음:

댓글 쓰기