Skip to main content
NetApp artificial intelligence solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

배포 절차

이 참조 아키텍처 검증에서 우리는 하나의 코디네이터와 네 개의 실행자로 구성된 Dremio 구성을 사용했습니다.NetApp 스토리지 컨트롤러를 사용한 Dremio 아키텍처를 보여주는 그림

NetApp 설정

  • 스토리지 시스템 초기화

  • 스토리지 가상 머신(SVM) 생성

  • 논리적 네트워크 인터페이스 할당

  • NFS, S3 구성 및 라이센싱

NFS(네트워크 파일 시스템)의 경우 아래 단계를 따르세요. 1. NFSv4 또는 NFSv3에 대한 Flex Group 볼륨을 만듭니다. 이 검증을 위한 설정에서 우리는 48개의 SSD를 사용했는데, 그 중 1개는 컨트롤러의 루트 볼륨에 전용으로 사용되었고, 47개는 NFSv4에 분산되어 있었습니다. Flex Group 볼륨에 대한 NFS 내보내기 정책에 Dremio 서버 네트워크에 대한 읽기/쓰기 권한이 있는지 확인합니다.

  1. 모든 Dremio 서버에서 폴더를 만들고 각 Dremio 서버의 논리 인터페이스(LIF)를 통해 Flex Group 볼륨을 이 폴더에 마운트합니다.

S3(Simple Storage Service)의 경우 아래 단계를 따르세요.

  1. "vserver object-store-server create" 명령을 사용하여 HTTP를 활성화하고 관리 상태를 'up'으로 설정한 객체 저장소 서버를 설정합니다. HTTPS를 활성화하고 사용자 정의 리스너 포트를 설정할 수 있습니다.

  2. "vserver object-store-server user create -user <username>" 명령을 사용하여 object-store-server 사용자를 생성합니다.

  3. 액세스 키와 비밀 키를 얻으려면 다음 명령을 실행하세요: "set diag; vserver object-store-server user show -user <username>". 하지만 앞으로는 이러한 키가 사용자 생성 프로세스 중에 제공되거나 REST API 호출을 사용하여 검색할 수 있습니다.

  4. 2단계에서 생성한 사용자를 사용하여 객체-저장소-서버 그룹을 설정하고 액세스 권한을 부여합니다. 이 예에서는 "FullAccess"를 제공했습니다.

  5. 유형을 "S3"로 설정하여 두 개의 S3 버킷을 만듭니다. 하나는 Dremio 구성용이고 다른 하나는 고객 데이터용입니다.

Zookeeper 설정

Dremio가 제공하는 Zookeeper 구성을 사용할 수 있습니다. 이 검증에서 우리는 별도의 Zookeeper를 사용했습니다. 우리는 이 웹 링크에 언급된 단계를 따랐습니다. https://medium.com/@ahmetfurkandemir/distributed-hadoop-cluster-1-spark-with-all-dependincies-03c8ec616166

Dremio 설정

우리는 이 웹링크를 따라 타르볼을 통해 Dremio를 설치했습니다.

  1. Dremio 그룹을 만드세요.

    sudo groupadd -r dremio
  2. dremio 사용자를 생성합니다.

    sudo useradd -r -g dremio -d /var/lib/dremio -s /sbin/nologin dremio
  3. Dremio 디렉토리를 만듭니다.

    sudo mkdir /opt/dremio
    sudo mkdir /var/run/dremio && sudo chown dremio:dremio /var/run/dremio
    sudo mkdir /var/log/dremio && sudo chown dremio:dremio /var/log/dremio
    sudo mkdir /var/lib/dremio && sudo chown dremio:dremio /var/lib/dremio
  4. tar 파일을 다운로드하세요 https://download.dremio.com/community-server/

  5. Dremio를 /opt/dremio 디렉터리에 압축을 풉니다.

    sudo tar xvf dremio-enterprise-25.0.3-202405170357270647-d2042e1b.tar.gz -C /opt/dremio --strip-components=1
  6. 구성 폴더에 대한 심볼릭 링크를 만듭니다.

    sudo ln -s /opt/dremio/conf /etc/dremio
  7. 서비스 구성(SystemD 설정)을 설정합니다.

    1. dremio 데몬의 단위 파일을 /opt/dremio/share/dremio.service에서 /etc/systemd/system/dremio.service로 복사합니다.

    2. 시스템 재시작

      sudo systemctl daemon-reload
    3. 부팅 시 dremio를 시작하도록 설정합니다.

      sudo systemctl enable dremio
  8. 코디네이터에서 Dremio를 구성합니다. 자세한 내용은 Dremio 구성을 참조하세요.

    1. 드레미오.conf

      root@hadoopmaster:/usr/src/tpcds# cat /opt/dremio/conf/dremio.conf
      
      paths: {
        # the local path for dremio to store data.
        local: ${DREMIO_HOME}"/dremiocache"
      
        # the distributed path Dremio data including job results, downloads, uploads, etc
        #dist: "hdfs://hadoopmaster:9000/dremiocache"
        dist: "dremioS3:///dremioconf"
      }
      
      services: {
        coordinator.enabled: true,
        coordinator.master.enabled: true,
        executor.enabled: false,
        flight.use_session_service: false
      }
      
      zookeeper: "10.63.150.130:2181,10.63.150.153:2181,10.63.150.151:2181"
      services.coordinator.master.embedded-zookeeper.enabled: false
      root@hadoopmaster:/usr/src/tpcds#
    2. 코어-사이트.xml

      root@hadoopmaster:/usr/src/tpcds# cat /opt/dremio/conf/core-site.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <!--
        Licensed under the Apache License, Version 2.0 (the "License");
        you may not use this file except in compliance with the License.
        You may obtain a copy of the License at
      
          http://www.apache.org/licenses/LICENSE-2.0
      
        Unless required by applicable law or agreed to in writing, software
        distributed under the License is distributed on an "AS IS" BASIS,
        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        See the License for the specific language governing permissions and
        limitations under the License. See accompanying LICENSE file.
      -->
      
      <!-- Put site-specific property overrides in this file. -->
      
      <configuration>
      	<property>
      		<name>fs.dremioS3.impl</name>
      		<value>com.dremio.plugins.s3.store.S3FileSystem</value>
      	</property>
      	<property>
                      <name>fs.s3a.access.key</name>
                      <value>24G4C1316APP2BIPDE5S</value>
      	</property>
      	<property>
                      <name>fs.s3a.endpoint</name>
                      <value>10.63.150.69:80</value>
              </property>
      	<property>
             		<name>fs.s3a.secret.key</name>
             		<value>Zd28p43rgZaU44PX_ftT279z9nt4jBSro97j87Bx</value>
         	</property>
         	<property>
             		<name>fs.s3a.aws.credentials.provider</name>
             		<description>The credential provider type.</description>
             		<value>org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider</value>
         	</property>
      	<property>
                      <name>fs.s3a.path.style.access</name>
                      <value>false</value>
              </property>
      	<property>
          		<name>hadoop.proxyuser.dremio.hosts</name>
          		<value>*</value>
        	</property>
        	<property>
          		<name>hadoop.proxyuser.dremio.groups</name>
          		<value>*</value>
        	</property>
        	<property>
          		<name>hadoop.proxyuser.dremio.users</name>
          		<value>*</value>
      	</property>
      	<property>
      		<name>dremio.s3.compat</name>
      		<description>Value has to be set to true.</description>
      		<value>true</value>
      	</property>
      	<property>
      		<name>fs.s3a.connection.ssl.enabled</name>
      		<description>Value can either be true or false, set to true to use SSL with a secure Minio server.</description>
      		<value>false</value>
      	</property>
      </configuration>
      root@hadoopmaster:/usr/src/tpcds#
  9. Dremio 구성은 NetApp 개체 스토리지에 저장됩니다. 검증 결과, "dremioconf" 버킷은 ontap S3 버킷에 있습니다. 아래 그림은 "dremioconf" S3 버킷의 "scratch" 및 "uploads" 폴더의 일부 세부 정보를 보여줍니다.

NetApp 개체 스토리지를 사용한 Dremio를 보여주는 그림

  1. 실행자에서 Dremio를 구성합니다. 우리의 설정에는 3명의 실행자가 있습니다.

    1. dremio.conf

      paths: {
        # the local path for dremio to store data.
        local: ${DREMIO_HOME}"/dremiocache"
      
        # the distributed path Dremio data including job results, downloads, uploads, etc
        #dist: "hdfs://hadoopmaster:9000/dremiocache"
        dist: "dremioS3:///dremioconf"
      }
      
      services: {
        coordinator.enabled: false,
        coordinator.master.enabled: false,
        executor.enabled: true,
        flight.use_session_service: true
      }
      
      zookeeper: "10.63.150.130:2181,10.63.150.153:2181,10.63.150.151:2181"
      services.coordinator.master.embedded-zookeeper.enabled: false
    2. Core-site.xml – 코디네이터 구성과 동일합니다.

참고 NetApp Datalake 및 Lakehouse 환경을 위한 기본 개체 스토리지 솔루션으로 StorageGRID 권장합니다. 또한 NetApp ONTAP 파일/객체 이중성을 위해 사용됩니다. 이 문서의 맥락에서 우리는 고객 요청에 따라 ONTAP S3에 대한 테스트를 수행했으며, 이는 데이터 소스로서 성공적으로 기능했습니다.

다중 소스 설정

  1. Dremio에서 ONTAP S3 및 storageGRID를 S3 소스로 구성합니다.

    1. Dremio 대시보드 → 데이터 세트 → 소스 → 소스 추가.

    2. 일반 섹션에서 AWS 액세스 및 비밀 키를 업데이트하세요.

    3. 고급 옵션에서 호환 모드를 활성화하고 아래 세부 정보로 연결 속성을 업데이트합니다. NetApp 스토리지 컨트롤러의 엔드포인트 IP/이름은 ontap S3 또는 storageGRID에서 가져옵니다.

      fs.s3a.endoint = 10.63.150.69
      fs.s3a.path.style.access = true
      fs.s3a.connection.maximum=1000
    4. 가능하면 로컬 캐싱을 활성화하고, 가능한 경우 사용할 수 있는 총 캐시의 최대 백분율은 100입니다.

    5. 그런 다음 NetApp 개체 스토리지의 버킷 목록을 봅니다.NetApp 개체 스토리지의 파일 목록을 보여주는 그림

    6. storageGRID 버킷 세부 정보의 샘플 보기NetApp 개체 스토리지의 파일 목록을 보여주는 그림

  2. Dremio에서 NAS(특히 NFS)를 소스로 구성합니다.

    1. Dremio 대시보드 → 데이터 세트 → 소스 → 소스 추가.

    2. 일반 섹션에 이름과 NFS 마운트 경로를 입력합니다. Dremio 클러스터의 모든 노드에서 NFS 마운트 경로가 동일한 폴더에 마운트되었는지 확인하세요.

NetApp 개체 스토리지의 파일 목록을 보여주는 그림

+

root@hadoopmaster:~# for i in hadoopmaster hadoopnode1 hadoopnode2 hadoopnode3 hadoopnode4; do ssh $i "date;hostname;du -hs /opt/dremio/data/spill/ ; df -h //dremionfsdata "; done
Fri Sep 13 04:13:19 PM UTC 2024
hadoopmaster
du: cannot access '/opt/dremio/data/spill/': No such file or directory
Filesystem                   Size  Used Avail Use% Mounted on
10.63.150.69:/dremionfsdata  2.1T  921M  2.0T   1% /dremionfsdata
Fri Sep 13 04:13:19 PM UTC 2024
hadoopnode1
12K	/opt/dremio/data/spill/
Filesystem                   Size  Used Avail Use% Mounted on
10.63.150.69:/dremionfsdata  2.1T  921M  2.0T   1% /dremionfsdata
Fri Sep 13 04:13:19 PM UTC 2024
hadoopnode2
12K	/opt/dremio/data/spill/
Filesystem                   Size  Used Avail Use% Mounted on
10.63.150.69:/dremionfsdata  2.1T  921M  2.0T   1% /dremionfsdata
Fri Sep 13 16:13:20 UTC 2024
hadoopnode3
16K	/opt/dremio/data/spill/
Filesystem                   Size  Used Avail Use% Mounted on
10.63.150.69:/dremionfsdata  2.1T  921M  2.0T   1% /dremionfsdata
Fri Sep 13 04:13:21 PM UTC 2024
node4
12K	/opt/dremio/data/spill/
Filesystem                   Size  Used Avail Use% Mounted on
10.63.150.69:/dremionfsdata  2.1T  921M  2.0T   1% /dremionfsdata
root@hadoopmaster:~#