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]와 같이 서비스를 재시작한다.
댓글 없음:
댓글 쓰기