오픈 소스, 클라우드 네이티브, 실시간 분석 최신 데이터 웨어하우스인 DataBend 소개 및 기타 오픈 소스 파일 스토리지와 결합된 사용 사례

DataBend 소개

Databend는 효율적인 데이터 저장 및 처리 기능을 제공하도록 설계된 오픈 소스, 클라우드 기반, 실시간 분석 최신 데이터 웨어하우스입니다. Rust 언어로 개발되었으며 고성능 컬럼 저장 및 쿼리 처리를 위해 Apache Arrow 형식을 지원합니다.

주요 특징:

  1. 클라우드 네이티브 설계 : Databend는 Kubernetes를 기반으로 구축되었으며 탄력적인 확장 및 수평 확장 기능을 갖추고 있으며 퍼블릭 클라우드 또는 프라이빗 클라우드 환경에 쉽게 배포할 수 있습니다.
  2. SQL 지원 : Databend는 완전한 SQL 쿼리 기능을 갖추고 있으며 MySQL 프로토콜과 호환되므로 사용자는 데이터 쿼리 및 처리에 익숙한 SQL 구문을 사용할 수 있습니다.
  3. 성능 최적화 : Databend는 벡터화된 쿼리 실행 엔진과 컬럼형 스토리지 기술을 통해 대규모 데이터 세트를 빠르게 읽고 분석할 수 있습니다.
  4. 객체 스토리지 통합 : Databend는 AWS S3, Azure Blob Storage, Google Cloud Storage 등과 같은 다양한 객체 스토리지 서비스에 데이터를 저장하여 저비용 대규모 스토리지를 구현할 수 있습니다.
  5. 실시간 분석 : Databend는 실시간 데이터 수집 및 즉각적인 쿼리 응답을 지원하며 BI 분석, 로그 분석, 실시간 보고서와 같은 애플리케이션 시나리오에 적합합니다.
  6. 커뮤니티 중심 : 오픈 소스 프로젝트인 Databend는 활발한 개발자 커뮤니티에 의해 유지 관리 및 기여되며, 새로운 기능을 추가하고 기존 기능을 개선하기 위해 지속적으로 반복적으로 업데이트됩니다.

사용 시나리오의 예:

  • 데이터 분석가는 Databend를 사용하여 복잡한 데이터 쿼리 및 데이터 분석을 수행할 수 있습니다.
  • 개발자는 실시간 데이터 파이프라인을 구축하고 스트리밍 데이터를 Databend에 기록하며 즉시 쿼리하고 분석할 수 있습니다.
  • 데이터 과학자는 Databend와 기타 도구(예: Python 또는 R)를 결합하여 기계 학습 모델을 교육하기 전에 데이터 사전 처리를 수행할 수 있습니다.

배포 및 사용 단계:

  1. Databend의 소스 코드 또는 바이너리 패키지를 다운로드하거나 복제합니다.
  2. 데이터베이스 URL, 연결 자격 증명, 객체 스토리지 액세스 정보 등 공식 문서에 따라 필요한 환경 변수 및 서비스 매개 변수를 구성합니다.
  3. Databend 서비스 시작 시작, 중지 및 관리 작업은 일반적으로 명령줄 도구를 통해 완료할 수 있습니다.
  4. MySQL 클라이언트 또는 MySQL 프로토콜을 지원하는 애플리케이션을 사용하여 Databend 데이터베이스에 연결하고 테이블 생성, 데이터 삽입 및 SQL 쿼리 실행을 시작합니다.

Databend Cloud - Snowflake의 대안인 오픈 소스 클라우드 데이터 웨어하우스 | 데이터벤드 클라우드

데이터벤드 설치

다음은 단순화된 Databend 설치 및 구성 단계입니다. 구체적인 세부 사항은 실제 상황에 따라 조정될 수 있습니다. 작동에 대해서는 최신 공식 문서를 참조하십시오.

1. 환경 준비

Rust 도구 체인(Rustup)과 Docker가 컴퓨터에 설치되어 있는지 확인하세요. 아직 설치되지 않은 경우 다음 링크를 참조하여 설치하세요.

2. 데이터벤드 설치

Rust 툴체인을 사용하여 Databend를 컴파일하고 설치합니다.

# 克隆 Databend 仓库
git clone https://github.com/datafuselabs/databend.git
cd databend

# 使用 nightly 版本的 Rust 编译器构建 Databend
rustup default nightly
cargo build --release

# 创建 Databend 的数据存储目录(例如 /var/lib/databend)
sudo mkdir -p /var/lib/databend
sudo chown $(id -u):$(id -g) /var/lib/databend

3. Databend 구성 및 실행

Databend는 독립형 모드와 분산 모드의 배포 방법을 제공합니다. 여기서는 먼저 독립 실행형 모드의 구성 및 시작을 소개합니다.

# 运行一个单节点的 Databend 服务
./target/release/databend-server --config-path=config.toml.example

# 或者如果你想在后台运行(daemon mode),可以加上 `--log-file` 参数指定日志文件
./target/release/databend-server --config-path=config.toml.example --log-file=/var/log/databend/server.log &

위 명령은 config.toml.example 샘플 구성 파일이므로 실제 필요에 따라 수정해야 합니다. 예를 들어 수신 주소, 포트, 데이터 디렉터리 및 기타 정보를 설정합니다.

4. 데이터베이스 연결 구성

기본적으로 Databend가 시작된 후 로컬  3307 포트에서 SQL 쿼리 인터페이스로 수신 대기합니다. MySQL 프로토콜을 지원하는 모든 클라이언트를 통해 Databend에 연결할 수 있습니다.

mysql -h localhost -P 3307 -u root

5. 영구 저장소 구성(선택 사항)

특정 위치(예: S3 또는 MinIO)에 데이터를 지속적으로 저장하려면 구성 파일에 해당 스토리지 백엔드를 추가하고 해당 액세스 자격 증명을 제공해야 합니다.

6. 분산 배포

프로덕션 환경이나 대규모 테스트의 경우 다중 노드 클러스터를 배포해야 할 수도 있습니다. 분산 클러스터를 구축하려면 Databend의 Kubernetes Helm Chart 또는 Docker Compose 파일을 참조하세요.

지침:

  • 프로덕션 환경에서는 비밀번호 암호화, 접근 제어 등 보안 관련 옵션이 올바르게 구성되어 있는지 확인하세요.
  • 영구 스토리지 지원을 위해 Databend는 AWS S3, MinIO, Google Cloud Storage 등을 포함하되 이에 국한되지 않는 다양한 개체 스토리지 서비스를 사용하도록 구성할 수 있습니다.

자세한 지침과 모범 사례는 최신 버전의 Databend 문서( Databend - 클라우드 데이터 분석의 미래)를 참조하세요.

Docker 기반 설치 및 구성

atabend는 Docker 이미지를 제공하므로 사용자는 Docker 컨테이너를 통해 Databend 데이터베이스를 빠르게 배포하고 실행할 수 있습니다. 다음은 Docker를 사용하여 Databend를 설치하기 위한 세부 구성 단계입니다.

1. Databend Docker 이미지 가져오기

먼저 Docker가 설치되어 있는지 확인하고 터미널에서 다음 명령을 실행하여 최신 Databend Docker 이미지를 가져옵니다. 실제 이미지 이름은 버전 업데이트에 따라 변경될 수 있으니, 최신 버전은 공식 문서를 참고하시기 바랍니다.

docker pull databend-docker:databend-query # 查询引擎(databend-query)
docker pull databend-docker:databend-meta # 元数据服务(databend-meta)

2. 영구 저장을 위한 디렉터리 생성(선택 사항)

컨테이너가 다시 시작된 후 데이터를 유지하려면 메타데이터 및 서비스 데이터의 영구 저장을 위해 로컬 호스트에 디렉터리를 생성할 수 있습니다.

mkdir -p /path/to/databend/meta-data
mkdir -p /path/to/databend/query-data

3. Databend Meta 서비스 실행

docker run -d --name databend-meta \
  -v /path/to/databend/meta-data:/var/lib/databend-meta \
  -e "DATABEND_QUERY_HTTP_PORT=8001" \
  databend-docker:databend-meta

여기서 -v 매개변수는 호스트의 디렉터리를  /var/lib/databend-meta 컨테이너 내부의 디렉터리에 매핑합니다.

4. Databend 쿼리 엔진 실행

docker run -d --name databend-query \
  --link databend-meta:databend-meta \
  -v /path/to/databend/query-data:/var/lib/databend-query \
  -p 8080:8080 \
  databend-docker:databend-query

여기의  매개 변수는 --link 쿼리 엔진이 메타데이터 서비스에 액세스할 수 있도록 쿼리 엔진과 메타데이터 서비스 컨테이너를 연결하는 데 사용됩니다. 동시에  -p 매개변수는 쿼리 엔진의 HTTP 포트를 호스트에 매핑하는 데 사용됩니다.

5. 환경 변수 구성(선택 사항)

필요에 따라 다른 환경 변수를 설정하여 로그 수준, 수신 주소 등과 같은 데이터베이스 동작을 구성할 수 있습니다. 사용 가능한 환경 변수 목록은 Databend 설명서를 참조하세요.

6. Databend 액세스 및 테스트

컨테이너를 시작한 후 다음과 같은 방법으로 Databend 쿼리 엔진에 액세스할 수 있습니다.

  • HTTP API : 브라우저 또는 Postman에서 액세스됩니다  http://localhost:8080/ (로컬 포트가 매핑된 경우).
  • SQL 클라이언트 : MySQL Workbench 또는 명령줄 도구와 같은 MySQL 클라이언트 도구를 통해 Databend에 연결합니다. 포트는 일반적으로 입니다  3307. 사용자 이름과 비밀번호는 특정 문서나 환경 변수 구성을 확인해야 할 수 있습니다.

특정 매개변수와 구성은 시간이 지남에 따라 변경될 수 있으므로 항상 최신 공식 문서를 참조하십시오. 위의 예는 가정된 기본 구성을 기반으로 제공됩니다.

Centos 9에서 설치 및 사용

CentOS 9 시스템에 Databend를 설치하는 일반적인 단계(최신 공식 문서에 따름):

1. 환경이 준비되었는지 확인하세요.

  • CentOS 9 시스템에는 필요한 개발 도구와 종속 라이브러리가 이미 설치되어 있습니다.
  • Rust 프로그래밍 언어 환경이 설치되었습니다.
# 更新系统并安装必要软件包
sudo dnf update -y
sudo dnf install -y curl git make gcc-c++ zlib-devel openssl-devel

# 安装Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

2. 데이터벤드 설치

  • Rust의 Cargo를 사용하여 Databend의 서버 부분(metasrv 및 databend-query)을 빌드하고 설치합니다.
# 克隆Databend源代码
git clone https://github.com/datafuselabs/databend.git
cd databend

# 构建并安装
cargo build --release --bin metasrv
cargo build --release --bin databend-query

# 创建用于存放运行时数据的目录
mkdir -p /var/lib/databend/meta /var/lib/databend/data

3. 서비스 구성 및 시작

  • Databend의 메타데이터 저장소, 로그 경로 및 기타 매개변수를 구성하고 서비스를 시작합니다.
# 编写配置文件(这里仅提供示例配置)
cat << EOF > /etc/databend/config.toml
[meta_service]
listen = "127.0.0.1:9191"
data_dir = "/var/lib/databend/meta"

[databend_query]
http_server_address = "0.0.0.0:8000"
query_pool_size = 4
local_data_path = "/var/lib/databend/data"
EOF

# 启动metasrv服务
./target/release/metasrv --config /etc/databend/config.toml &

# 启动databend-query服务
./target/release/databend-query --config /etc/databend/config.toml &

4. 설치 확인

  • Databend Query API 포트에 로컬로 또는 네트워크를 통해 연결하여 확인하세요.
# 如果是在本地机器上安装,可以尝试执行一个简单的查询
curl -G "http://localhost:8000/v1/query" --data-urlencode 'sql=SELECT version()' 

# 应该返回类似如下信息:
{"results":[{"meta":{"columns":[{"name":"version","type":5}],"rows":[["nightly"]]},"stats":{"elapsed_time":...}}]}

지침:

  • 실제 배포에서는 적절한 디스크 파티션을 마운트하거나 클라우드 스토리지 서비스를 사용하는 등 Databend에 대한 영구 스토리지를 설정해야 할 수 있습니다.
  • 프로덕션 환경에서는 반드시 Nightly 버전이 아닌 Stable 버전을 사용하시고, 공식적으로 권장하는 Best Practice에 따라 구성 및 관리하시기 바랍니다.
  • Databend는 Docker 컨테이너를 통한 배포도 지원하며, 프로덕션 배포의 경우 Docker Compose 또는 Kubernetes를 사용하여 유지 관리하는 것이 더 편리하고 쉽습니다.

자세한 설치 지침은 항상 최신 버전의 Databend 공식 문서( https://docs.databend.rs/ )를 참조하세요.

Databend, LakeFS 및 MinIO의 조합

고성능, 확장 가능한 분산 개체 스토리지 시스템 MinIO의 소개, 배포 단계 및 코드 예제 - CSDN 블로그

 

Databend, LakeFS 및 MinIO의 기능 소개:

  1. 데이터 벤드 :

    • Databend는 Rust를 기반으로 구축되었으며 Apache Arrow 형식과 호환되는 오픈 소스 실시간 분석 데이터 웨어하우스입니다.
    • Snowflake와 유사한 클라우드 네이티브 아키텍처를 제공하여 동시성이 높은 쿼리와 거의 실시간에 가까운 데이터 삽입 및 업데이트를 지원합니다.
    • SQL 쿼리 언어를 지원하고, PB 수준 데이터를 처리할 수 있으며, 1초 미만의 대기 시간으로 대화형 분석 경험을 제공할 수 있습니다.
    • 여러 데이터 소스를 통합하고 JDBC/ODBC를 통해 다양한 BI 도구를 연결하여 데이터 분석을 할 수 있습니다.
  2. 호수FS

    • LakeFS는 AWS S3 또는 기타 S3 호환 스토리지 서비스(예: MinIO)에 적합한 Git과 유사한 브랜치 모델을 기반으로 하는 객체 스토리지 관리 도구입니다.
    • 데이터 레이크에 대한 버전 제어 기능을 제공하여 사용자가 객체 스토리지에 저장된 데이터 세트에 대한 분기, 병합, 롤백 및 기타 작업을 생성할 수 있도록 합니다.
    • 사용자는 다양한 지점에서 데이터 개발, 테스트 및 생산 프로세스를 수행할 수 있으므로 데이터 자산 관리 기능이 향상되고 데이터 파이프라인의 거버넌스 및 감사가 단순화됩니다.
  3. 미니IO :

    • MinIO는 Amazon S3 API와 완벽하게 호환되는 고성능 분산 객체 스토리지 시스템입니다.
    • 빅데이터 분석에 필요한 원시 데이터, 백업 및 아카이브 데이터를 포함하여 대규모 비정형 데이터 저장을 위해 로컬 또는 클라우드에 배포할 수 있습니다.
    • 고가용성, 확장성 및 보안을 제공하며 기업 내 또는 하이브리드 클라우드 환경에서 개체 스토리지 솔루션으로 사용하기에 적합합니다.

세 가지를 결합하는 방법 및 예:

MinIO를 기본 스토리지로 사용하고, LakeFS를 사용하여 해당 데이터에 대한 버전 관리 및 분기 작업을 수행하고, Databend를 사용하여 데이터를 쿼리하고 분석한다고 가정해 보겠습니다. 다음은 일반적인 구성 단계 및 사용법입니다.

구성 단계:

  1. MinIO 배포 :

    • 서버 클러스터 또는 단일 시스템에 MinIO를 설치하고 시작하여 네트워크에 연결할 수 있고 적절한 액세스 및 개인 키가 구성되어 있는지 확인하십시오.
  2. LakeFS 구성

    • lakectl init <lakefs-server-url> my-repo s3://<minio-bucket-name>
  3. LakeFS에 데이터 업로드

    • lakectl cp local-data.csv lakefs://my-repo/main/data.csv
      lakectl branch create my-repo/dev --parent main
      lakectl cp local-data-dev.csv lakefs://my-repo/dev/data.csv
  4. Databend 데이터 소스 구성 :

    • Databend에서 S3 데이터 소스를 LakeFS 분기 중 하나(예: 기본 분기)를 가리키도록 설정하면 Databend가 분석을 위해 이 분기 아래의 데이터를 읽을 수 있습니다.
    • Databend의 카탈로그 구성 파일을 업데이트하고, S3 스토리지 연결 정보를 추가하고, 버킷 이름(여기서는 LakeFS에 의해 가상화된 버킷임)과 올바른 엔드포인트 URL(lakeFS 서버 주소)을 지정합니다.
  5. Databend에서 쿼리 실행

    • SELECT * FROM "s3://my-repo/main/data.csv" (format CSV);

예시 시나리오:

  • 데이터 개발 단계 :

    • 개발팀 구성원은 LakeFS의 dev 브랜치에서 데이터 정리, 변환 등의 작업을 수행하고 완료 후 변경 사항을 제출합니다.
  • 코드 검토 및 병합 :

    • LakeFS의 병합 기능을 통해 dev 브랜치의 변경 사항을 메인 브랜치에 병합합니다.
  • 데이터 검증 및 분석 :

    • 데이터 분석가는 Databend에서 메인 브랜치를 데이터 소스로 선택하고 SQL 쿼리를 실행하여 데이터 품질 및 분석 결과를 확인합니다.
  • 문제 해결 및 롤백 :

    • 메인 브랜치 데이터에 문제가 발견되면 LakeFS를 통해 특정 버전으로 롤백하고 복구 후 메인 브랜치에 병합할 수 있으며, Databend는 쿼리 및 분석을 위해 자동으로 최신 버전의 데이터를 얻습니다.

실제 통합에는 각 공식 문서에 따른 세부적인 매개변수 구성이 필요하며, 구성요소 간의 원활한 연결을 보장하기 위해 추가적인 적응 레이어나 미들웨어가 필요할 수 있다는 점을 참고하시기 바랍니다. 프로젝트마다 인터페이스가 변경될 수 있으므로 최신 문서와 가이드를 확인하세요.

 

추천

출처blog.csdn.net/zrc_xiaoguo/article/details/135438964