CloudBeaver Community Edition(25.x, dbeaver/cloudbeaver:latest 이미지)은 드라이버 관리 메뉴가 없고, DBeaver 에 정의된 드라이버 중 일부만 노출한다. Impala 와 Hive 4 는 UI 의 Available drivers 에 나오지 않는다. 소스 빌드(Rocky 9.6, Maven)도 시도했으나 결과 산출물에서 H2 내장 드라이버 · workspace 권한 등 부가 문제가 많아, 최종적으로는 공식 이미지 위에 플러그인을 패치한 이미지를 만드는 방식으로 정리했다.
CloudBeaver 는 두 곳의 plugin.xml 을 본다.
| 플러그인 JAR | 역할 |
|---|---|
server/plugins/io.cloudbeaver.resources.drivers.base_*.jar |
CloudBeaver 가 노출할 드라이버 목록과 로컬 JAR 위치(<resource name="drivers/impala"/>) |
server/plugins/org.jkiss.dbeaver.ext.generic_*.jar (Hive 는 ext.hive) |
DBeaver 드라이버 정의. supportsDistributedMode 속성이 없거나 false 면 CloudBeaver 에서 비활성 |
DriverDescriptor 의 supportsDistributedMode 는 Java boolean 기본값 false 라, 속성이 없는 Impala · Phoenix · OpenSearch 드라이버는 모두 숨겨진다. <notAvailableDriver ...> 로 막힌 항목(Redis 등)은 그 태그를 지우면 나온다.
이미지 안의 정의를 확인하는 방법은 다음과 같다.
docker run --rm --entrypoint bash dbeaver/cloudbeaver:latest -c "
cd /tmp && jar xf /opt/cloudbeaver/server/plugins/org.jkiss.dbeaver.ext.generic_*.jar plugin.xml &&
sed -n '/cloudera_impala/,/<\/driver>/p' plugin.xml"
DBeaver 의 cloudera_impala 정의는 com.cloudera.impala.jdbc41.Driver 를 기대하지만 Cloudera 가 배포하는 ImpalaJDBC42.jar 에는 com.cloudera.impala.jdbc.Driver 만 있다. 클래스가 없으면 드라이버가 목록에서 빠지므로 plugin.xml 의 class 를 JAR 에 맞게 바꿔야 한다. JAR 안의 드라이버 클래스는 unzip -l ImpalaJDBC42.jar | grep Driver 또는 META-INF/services/java.sql.Driver 로 확인한다.
drivers.base 와 ext.generic JAR 을 꺼내 plugin.xml 을 수정한다.
ext.generic: 대상 <driver> 에 supportsDistributedMode="true" 를 추가하고 Impala 는 class="com.cloudera.impala.jdbc.Driver" 로 바꾼 뒤 <file type="jar" path="drivers/impala" bundle="drivers.impala"/> 를 넣는다.drivers.base: <resource name="drivers/impala"/> 등 로컬 드라이버 디렉터리를 등록한다.plugin.xml 을 다시 JAR 에 넣는다 (jar uf 또는 Python zipfile).dbeaver(uid 8978) 사용자로 실행되므로 workspace 와 드라이버 디렉터리 소유권을 맞춘다.FROM dbeaver/cloudbeaver:latest
USER root
COPY io.cloudbeaver.resources.drivers.base_<ver>.jar /opt/cloudbeaver/server/plugins/
COPY org.jkiss.dbeaver.ext.generic_<ver>.jar /opt/cloudbeaver/server/plugins/
RUN mkdir -p /opt/cloudbeaver/drivers/impala /opt/cloudbeaver/drivers/hive
COPY ImpalaJDBC42.jar /opt/cloudbeaver/drivers/impala/
COPY hive-jdbc-4.0.1-standalone.jar /opt/cloudbeaver/drivers/hive/
RUN chown -R 8978:8978 /opt/cloudbeaver/workspace /opt/cloudbeaver/drivers
USER dbeaver
컨테이너는 외부 Maven 에 접근하지 못할 수 있으므로 Hive · Phoenix · OpenSearch JAR 은 미리 받아 drivers/<name>/ 에 넣는다.
curl -L -o hive-jdbc-4.0.1-standalone.jar "https://repo1.maven.org/maven2/org/apache/hive/hive-jdbc/4.0.1/hive-jdbc-4.0.1-standalone.jar"
curl -L -o phoenix-client-hbase-2.6-2.6.0.jar "https://repo1.maven.org/maven2/org/apache/phoenix/phoenix-client-hbase-2.6/2.6.0/phoenix-client-hbase-2.6-2.6.0.jar"
curl -L -o opensearch-sql-jdbc-1.4.0.1.jar "https://repo1.maven.org/maven2/org/opensearch/driver/opensearch-sql-jdbc/1.4.0.1/opensearch-sql-jdbc-1.4.0.1.jar"
docker run -d -p 8978:8978 -v cloudbeaver-workspace:/opt/cloudbeaver/workspace --name cloudbeaver cloudbeaver-impala:latest
| 증상 | 원인 · 조치 |
|---|---|
mkdir: cannot create directory 'workspace/.metadata': Permission denied |
볼륨 또는 workspace 가 root 소유. chown 8978:8978 하거나 기존 볼륨(docker volume rm cloudbeaver-workspace)을 지운다 |
Error creating driver 'H2 Embedded V.2' instance |
소스 빌드 산출물에 drivers/h2_v2/ 가 비어 있다. 공식 이미지 기반 패치 방식에서는 발생하지 않는다 |
exec ./run-cloudbeaver-server.sh: no such file or directory |
빌드 산출물 경로가 deploy/cloudbeaver/ 이고 실행 스크립트 이름이 다르다. 공식 이미지의 WorkingDir · Entrypoint 를 docker inspect 로 확인해 맞춘다 |
| 드라이버 클래스는 맞는데 목록에 안 나옴 | supportsDistributedMode="true" 누락 또는 drivers.base 에 <resource> 미등록 |