분산 SQL 엔진

분산 SQL 엔진 (Distributed SQL Engine)

Spark SQL이 JDBC/ODBC 또는 명령줄 인터페이스를 통해 분산 쿼리 엔진으로 동작하는 방법을 정리한 문서예요. Thrift JDBC/ODBC 서버를 띄우고 beeline으로 연결하는 법, 그리고 spark-sql CLI 사용법을 확인해 볼게요. 코드를 전혀 작성하지 않아도 SQL 쿼리를 바로 실행할 수 있어요.

출처: 문서

본문

Spark SQL은 JDBC/ODBC 또는 명령줄 인터페이스(cli)를 사용해 **분산 쿼리 엔진(distributed query engine)**으로도 동작할 수 있어요. 이 모드에서는 최종 사용자나 애플리케이션이 코드를 작성할 필요 없이 Spark SQL과 직접 상호작용해 SQL 쿼리를 실행할 수 있어요.

Thrift JDBC/ODBC 서버 실행하기 (Running the Thrift JDBC/ODBC server)

여기서 구현한 Thrift JDBC/ODBC 서버는 내장 Hive의 HiveServer2에 해당해요. Spark와 함께 제공되는 beeline 스크립트나 호환되는 Hive의 beeline 스크립트로 JDBC 서버를 테스트할 수 있어요.

JDBC/ODBC 서버를 시작하려면 Spark 디렉터리에서 다음을 실행하세요:

./sbin/start-thriftserver.sh

이 스크립트는 모든 bin/spark-submit 명령줄 옵션과 Hive 속성을 지정하기 위한 --hiveconf 옵션을 추가로 받아들여요. 사용 가능한 전체 옵션 목록은 ./sbin/start-thriftserver.sh --help로 확인할 수 있어요. 기본적으로 서버는 localhost:10000에서 대기(listen)해요. 이 동작은 환경 변수로 재정의할 수 있어요:

export HIVE_SERVER2_THRIFT_PORT=<listening-port>
export HIVE_SERVER2_THRIFT_BIND_HOST=<listening-host>
./sbin/start-thriftserver.sh \
  --master <master-uri> \
  ...

또는 시스템 속성으로 지정할 수도 있어요:

./sbin/start-thriftserver.sh \
  --hiveconf hive.server2.thrift.port=<listening-port> \
  --hiveconf hive.server2.thrift.bind.host=<listening-host> \
  --master <master-uri>
  ...

이제 beeline으로 Thrift JDBC/ODBC 서버를 테스트할 수 있어요:

./bin/beeline

beeline에서 JDBC/ODBC 서버에 다음과 같이 연결하세요:

beeline> !connect jdbc:hive2://localhost:10000

beeline은 사용자 이름과 비밀번호를 물어봐요. 비보안(비암호화) 모드에서는 여러분 머신의 사용자 이름과 빈 비밀번호를 입력하면 돼요. 보안 모드에서는 beeline 문서에 나온 지침을 따라주세요.

Hive의 설정은 hive-site.xml, core-site.xml, hdfs-site.xml 파일을 conf/에 배치하면 돼요.

Hive와 함께 제공되는 beeline 스크립트를 사용해도 돼요.

Thrift JDBC 서버는 HTTP 전송을 통해 thrift RPC 메시지를 보내는 것도 지원해요. 시스템 속성으로 또는 conf/hive-site.xml 파일에서 다음 설정을 사용해 HTTP 모드를 활성화할 수 있어요:

hive.server2.transport.mode - Set this to value: http
hive.server2.thrift.http.port - HTTP port number to listen on; default is 10001
hive.server2.http.endpoint - HTTP endpoint; default is cliservice

테스트하려면 beeline으로 http 모드에서 JDBC/ODBC 서버에 연결하면 돼요:

beeline> !connect jdbc:hive2://<host>:<port>/<database>;transportMode=http;httpPath=<http_endpoint>

세션을 닫고 CTAS를 수행할 때는 hive-site.xml에서 fs.%s.impl.disable.cache를 true로 설정해야 해요. 자세한 내용은 SPARK-21067을 참고하세요.

Spark SQL CLI 실행하기 (Running the Spark SQL CLI)

셸에서 Spark SQL 명령줄 인터페이스(CLI)를 사용하려면:

./bin/spark-sql

자세한 내용은 Spark SQL CLI 문서를 참고하세요.

더 알아보기 (Learn more)