관리용 DBMS 를 MariaDB 로 잡아도 Cloudera Manager 가 JDBC 드라이버를 찾는 자리는 /usr/share/java/mysql-connector-java.jar 하나다. 경로도 파일 이름도 고정이고, MariaDB 를 쓴다고 해서 이름이 mariadb- 로 바뀌지 않는다. DBMS 설치와 설정 전체는 관리용 DBMS - MariaDB 에 있다. 여기에는 드라이버를 놓는 일만 둔다.
Cloudera 는 백엔드가 MariaDB 여도 MariaDB JDBC 드라이버(Connector/J)를 지원하지 않는다. MySQL Connector/J 8.0 만 쓰라고 명시한다.[1] 8.0 계열의 마지막 GA 는 8.0.33 이다(2023-04-18).[2]
MariaDB Connector/J 는 별개 제품이고 현행 Stable(GA) 은 3.5.10 이다(2026-07-29).[3] Cloudera 클러스터의 관리용 DBMS 접속에는 쓰지 않는다. 그래도 놓아야 하는 사정이 있다면 아래 MariaDB Connector/J 를 놓았을 때 절을 먼저 읽는다.
Cloudera Manager 와 데이터베이스를 쓰는 각 서비스는 버전이 붙지 않은 이름으로만 드라이버를 찾는다.
/usr/share/java/mysql-connector-java.jar
배포판 원본 이름(mysql-connector-j-8.0.33.jar)을 그대로 두면 인식하지 않는다. Cloudera 문서도 복사하면서 이 이름으로 바꾸도록 적어 두었다.[1:1] /usr/share/java 가 없는 호스트가 있으므로 먼저 만든다.
Cloudera Manager Server 를 올리기 전에 끝낸다. 설치 마법사가 데이터베이스 연결을 확인하는 단계에서 드라이버가 없으면 그 자리에서 막힌다.
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.33.tar.gz
tar zxvf mysql-connector-j-8.0.33.tar.gz
sudo mkdir -p /usr/share/java
sudo cp mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar /usr/share/java/
Cloudera 문서의 예시는 8.0.22 를 내려받아 cp 하면서 바로 이름을 바꾼다.[1:2] 어느 버전이 올라가 있는지 남기고 싶으면 원본 이름으로 두고 심볼릭 링크를 건다.
sudo ln -sfn /usr/share/java/mysql-connector-j-8.0.33.jar /usr/share/java/mysql-connector-java.jar
ls -l /usr/share/java/mysql-connector-java.jar
-n 은 같은 이름의 링크가 이미 있을 때 그 링크가 가리키는 디렉터리 안쪽에 새 링크를 만드는 사고를 막는다. 버전을 올릴 때는 새 jar 를 같은 디렉터리에 놓고 링크만 다시 걸면 되고, 문제가 생기면 링크를 되돌려 즉시 원복한다.
sudo cp mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar /usr/share/java/mysql-connector-java.jar
Cloudera 문서가 쓰는 방식이다. 파일 이름이 하나뿐이라 무엇이 올라가 있는지 ls 만으로는 알 수 없다 — 아래 설치 확인 의 매니페스트 확인을 같이 쓴다.
각 서비스는 자기 계정(cloudera-scm, hive, hue, oozie, ranger 등)으로 뜨므로 드라이버는 모든 사용자가 읽을 수 있어야 한다.
sudo chown root:root /usr/share/java/mysql-connector-j-8.0.33.jar
sudo chmod 644 /usr/share/java/mysql-connector-j-8.0.33.jar
심볼릭 링크를 걸었다면 실제로 적용되는 것은 원본 jar 의 권한이다. 링크 자체는 lrwxrwxrwx 로 보이지만 의미가 없으므로 원본을 확인한다. SELinux 가 enforcing 이면 /usr/share/java 아래의 다른 jar 와 컨텍스트가 같은지도 본다.
Cloudera 문서는 드라이버 파일의 권한을 따로 적어 두지 않는다. 위 값은 /usr/share/java 에 이미 있는 다른 jar 와 같은 기준이다.
Cloudera Manager Server 호스트와, 데이터베이스를 쓰는 서비스가 뜨는 모든 호스트에 놓는다.[1:3] Activity Monitor · Reports Manager 역할을 배치한 호스트는 문서에서 명시적으로 요구한다.[4]
데이터베이스를 쓰는 구성 요소는 다음과 같다.[4:1]
Cloudera 는 데이터베이스를 쓰는 역할을 몇 대에 모으고 그 호스트에만 드라이버를 넣으라고 권한다.[1:4] 역할이 옮겨 다니는 클러스터라면 전 노드에 같은 파일을 뿌려 두는 편이 나중에 덜 헤맨다.
for h in cdp01 cdp02 cdp03 cdp04; do
scp mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar root@${h}.haedongg.net:/usr/share/java/
ssh root@${h}.haedongg.net 'chmod 644 /usr/share/java/mysql-connector-j-8.0.33.jar; ln -sfn /usr/share/java/mysql-connector-j-8.0.33.jar /usr/share/java/mysql-connector-java.jar'
done
링크를 따라간 실제 파일과 권한을 본다.
ls -lL /usr/share/java/mysql-connector-java.jar
unzip -p /usr/share/java/mysql-connector-java.jar META-INF/MANIFEST.MF | grep -i version
매니페스트의 버전 항목에 실제로 올라간 드라이버 버전이 찍힌다. 드라이버 클래스가 들어 있는지도 확인한다.
unzip -l /usr/share/java/mysql-connector-java.jar | grep -E 'com/mysql/cj/jdbc/Driver.class|org/mariadb/jdbc/Driver.class'
com/mysql/cj/jdbc/Driver.class 만 나와야 한다. org/mariadb/jdbc/Driver.class 가 보이면 MariaDB Connector/J 를 놓은 것이다.
Cloudera Manager 설치 마법사의 데이터베이스 설정 단계에서 연결 테스트가 통과하면 드라이버까지 제대로 읽힌 것이다. 그 전에 확인하려면 scm_prepare_database.sh 를 쓴다 — MariaDB 여도 DB 타입 인자는 mysql 이다(Cloudera 7.3.1 의 MariaDB 설치 문서에는 이 명령이 없다, 확인 필요).
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm $SCM_PASSWORD
Cloudera 지원 대상이 아니다.[1:5] 그럼에도 놓는 경우 두 가지가 걸린다.
첫째, 파일 이름은 여전히 /usr/share/java/mysql-connector-java.jar 여야 한다. Cloudera Manager 는 이 이름만 찾으므로 mariadb-java-client-3.5.10.jar 로 두면 드라이버가 없는 것과 같다. MariaDB Connector/J 를 MySQL 커넥터의 이름으로 두는 셈이라 나중에 파일만 보고는 무엇이 올라가 있는지 알 수 없다.
둘째, 드라이버 클래스와 URL 스킴이 다르다. MariaDB Connector/J 의 클래스는 com.mysql.jdbc.Driver 가 아니라 org.mariadb.jdbc.Driver 이고, 3.0 부터는 접속 문자열의 프로토콜로 jdbc:mariadb: 만 받는다. jdbc:mysql: 은 permitMysqlScheme 옵션을 줘야 받아들인다.[5] Cloudera Manager 는 데이터베이스 종류를 MySQL 로 잡고 jdbc:mysql:// 형태의 URL 을 만들기 때문에, 이 옵션을 끼워 넣을 자리가 서비스마다 일정하지 않다. 두 커넥터를 같은 디렉터리에 함께 두면 어느 쪽이 URL 을 받아 가는지도 불확실해진다.
정리하면 MariaDB 서버를 쓰더라도 드라이버는 MySQL Connector/J 8.0 을 놓는다.
Install and Configure MariaDB for Cloudera Software (CDP Private Cloud Base 7.3.1) — "The MariaDB JDBC driver is not supported", MySQL Connector/J 8.0 을 /usr/share/java/mysql-connector-java.jar 로 복사, Cloudera Manager Server 호스트와 데이터베이스를 쓰는 서비스 호스트에 설치, 역할을 몇 대로 모으라는 권고. 2026-09-20 확인. https://docs.cloudera.com/cdp-private-cloud-base/7.3.1/cdp-private-cloud-base-installation/topics/install_cm_mariadb.html ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Changes in MySQL Connector/J 8.0.33 (2023-04-18, General Availability) — 8.0 계열의 마지막 GA. 2026-09-20 확인. https://dev.mysql.com/doc/relnotes/connector-j/en/news-8-0-33.html ↩︎
Connector/J All Releases — MariaDB Connector/J 3.5.10, 2026-07-29, Stable (GA). 2026-09-20 확인. https://mariadb.com/docs/release-notes/connectors/java/all-releases ↩︎
Required Databases (CDP Private Cloud Base 7.3.1) — 데이터베이스를 쓰는 구성 요소 목록과 "The JDBC connector for your database must be installed on the hosts where you assign the Activity Monitor and Reports Manager roles". 2026-09-20 확인. https://docs.cloudera.com/cdp-private-cloud-base/7.3.1/cdp-private-cloud-base-installation/topics/cdpdc-required-databases.html ↩︎ ↩︎
About MariaDB Connector/J — 드라이버 클래스는 org.mariadb.jdbc.Driver, 3.0 부터 jdbc:mariadb: 만 허용하며 jdbc:mysql: 은 permitMysqlScheme 옵션이 필요하다. 2026-09-20 확인. https://mariadb.com/docs/connectors/mariadb-connector-j/about-mariadb-connector-j ↩︎