01-02-2023
Daun
Onyx | Level 15
Member since
11-11-2020
- 319 Posts
- 1 Likes Given
- 0 Solutions
- 0 Likes Received
-
Latest posts by Daun
Subject Views Posted 647 06-09-2022 02:07 AM 841 06-02-2022 02:22 AM 716 05-25-2022 09:47 PM 547 05-19-2022 11:02 PM 547 05-12-2022 02:37 AM 697 05-06-2022 03:56 AM 545 04-28-2022 02:15 AM 1438 04-24-2022 10:07 PM 592 04-13-2022 01:08 AM 640 04-06-2022 02:59 AM -
Activity Feed for Daun
- Posted Viya의 CAS로부터 경로 기반 데이터 액세스 on SAS Tech & Tip. 06-09-2022 02:07 AM
- Posted Azure DevOps 파이프라인을 통한 Azure + Viya 배포용 SAS Viya IaC on SAS Tech & Tip. 06-02-2022 02:22 AM
- Posted 새로운 SAS 정보 카탈로그를 사용하는 7가지 방법 on SAS Tech & Tip. 05-25-2022 09:47 PM
- Posted Azure Synapse SQL Pool(SQL DW)에 대한 SAS Viya(CAS) 액세스 on SAS Tech & Tip. 05-19-2022 11:02 PM
- Posted SAS 9.4에서 SAS Viya로의 마이그레이션에 대한 첫경험 on SAS Tech & Tip. 05-12-2022 02:37 AM
- Posted GCP의 SAS Viya 아키텍처 디자인: 기본 사항 on SAS Tech & Tip. 05-06-2022 03:56 AM
- Posted SAS Studio Flow을 일괄적으로 실행하는 방법 on SAS Tech & Tip. 04-28-2022 02:15 AM
- Posted Postman 컬렉션을 사용하여 SAS REST API 실행 on SAS Tech & Tip. 04-24-2022 10:07 PM
- Posted SAS 9.4에서 Azure Databricks 액세스 on SAS Tech & Tip. 04-13-2022 01:08 AM
- Posted 플로우 따르라: Enterprise Guide 프로젝트를 SAS Studio Flows로 마이그레이션 on SAS Tech & Tip. 04-06-2022 02:59 AM
- Posted 엣지에서 클라우드로의 IoT 분석 여정 on SAS Tech & Tip. 03-29-2022 04:43 AM
- Posted SAS Viya: 사용자 홈 디렉토리를 컴퓨팅에 사용 가능하게 설정하는 방법 on SAS Tech & Tip. 03-21-2022 09:20 PM
- Posted SCIM 및 SAS Viya on SAS Tech & Tip. 03-18-2022 05:07 AM
- Posted 새로운 SAS Viya에서 SAS 프로그램을 일괄적으로 실행하는 방법 on SAS Tech & Tip. 03-08-2022 02:03 AM
- Posted 맥 체제 내 SAS 사용방법 on SAS Tech & Tip. 03-03-2022 12:19 AM
- Posted SAS를 사용하여 이메일을 보내는 방법 on SAS Tech & Tip. 02-24-2022 12:59 AM
- Posted SAS 데이터 세트를 삭제하는 방법 on SAS Tech & Tip. 02-15-2022 01:22 AM
- Posted [SAS 활용 FAQ] Using SAS Enterprise Guide with your local SAS installation on SAS Tech & Tip. 11-21-2021 10:01 PM
- Posted [SAS 활용 FAQ] There is a new SAS Private JRE! on SAS Tech & Tip. 11-21-2021 09:51 PM
- Posted [SAS 활용 노하우] SAS Enterprise Guilde on SAS Tech & Tip. 11-21-2021 09:43 PM
-
Posts I Liked
Subject Likes Author Latest Post 1 -
My Library Contributions
Subject Likes Author Latest Post 0 0 0 0 0
06-09-2022
02:07 AM
새로운 SAS Viya는 사용자가 데이터를 읽고 쓸 수 있는 CAS에 변화를 가져왔습니다. 이 포스팅에서는 변경 사항과 그 의미에 대해 다루고자 합니다. CAS 서버에서 파일 시스템 경로에 대한 모든 액세스는 caslib를 통해 이루어집니다. 경로 기반 caslib는 파일 시스템의 디렉토리를 소스로 사용합니다. 보안 조치로 CAS는 관리자 외의 사람(CAS 수퍼유저)이 caslib를 생성하거나 편집할 때 사용 경로를 제한할 수 있습니다. 이 기능은 허용 목록 및 거부 목록에서 가능합니다.
이 두 목록은 상호 배타적이며 한 번에 하나만 구현할 수 있습니다. 작업 내용은 다음과 같습니다.
거부 목록: 일반 사용자가 사용할 수 없는 경로 목록을 지정합니다.
허용 목록: 일반 사용자가 사용할 수 있는 경로 목록을 지정합니다.
하위 버전의 SAS Viya(3.5)에서는 기본적으로 거부 목록(전 블랙리스트)이 활성화되어 있으며 사용자가 caslib를 생성 및 편집할 수 없는 경로 목록을 포함하고 있습니다. 이는 권한이 부여된 사용자가 경로 기반 caslib를 생성하고 편집할 수 있는 위치에 대해 시스템 대부분을 개방합니다.
새로운 SAS Viya에서는 기본적으로 보다 안전을 위해 거부 목록 대신 허용 목록을 활성화하며 허용 목록에는 하나의 경로 /cas/data/caslibs를 포함합니다. 새 SAS Viya의 해당 경로는 일반적으로 CAS 서버에서 사용하는 영구 볼륨에 위치합니다. 쉽게 말해 기본적으로 사용자는 다른 위치에서 caslib를 생성 및 편집이 불가합니다.
다른 위치에 caslib를 생성하려는 경우 두 가지 옵션이 있습니다.
1. CAS super user role을 맡은 Viya 관리자는 허용 목록이나 거부 목록에 국한되지 않으며 사용 가능한 모든 경로를 가리키는 caslib를 생성할 수 있습니다.
2.Viya 관리자는 허용 목록에 경로를 추가하여 추가 경로를 제공할 수 있습니다.
새로운 SAS Viya는 Kubernetes에서 실행되므로 CAS가 파일 시스템의 데이터에 액세스하려면 파일 시스템 위치를 CAS 포드에서 사용할 수 있어야 합니다. CAS에서 데이터를 사용할 수 있도록 하는 방법 중 하나는 CAS 포드에 디렉터리를 탑재하는 것입니다. 곧 출시 예정인 Viya 4 관리 클래스에서는 CAS에서 사용할 수 있도록 NFS 디렉터리를 마운트합니다. 기사를 통해 자세히 확인하실 수 있습니다.
기본적으로 NFS 마운트는 CAS 포드 내부의 마운트 포인트 /gelcontent에서 사용할 수 있는 데이터가 포함된 NFS 서버 /shared/gelcontent에 경로를 만들기 위한 목적입니다. 기본 허용 목록 설정을 위한 변경을 위해서는 새 위치에 caslib를 정의하려는 경우 수퍼유저로 이를 수행하거나 허용 목록에 경로를 추가해야 합니다.
예를 들어 하위 버전의 SAS Viya(3.5)에서는 다음과 같이 caslib를 생성합니다.
./sas-admin cas caslibs create path --caslib salesdl
gelcontent/gelcorp/sales/data --server cas-shared-default --description
"gelcontent salesdl
새 SAS Viya(2020.1 상위 버전)에서 동일한 코드를 실행하는 경우 정상 작동하지 않습니다. 실패 원인을 확인하기 위해서는 명령에 --verbose 옵션을 추가해야 합니다.
./sas-admin --verbose cas caslibs create path --caslib alesdl
/gelcontent/gelcorp/sales/data --server cas-shared-default --description
"gelcontent salesdl
{"errorCode":12299,"message":"The action was not successful. (2-0-2640595)",
"details":["traceId: bc84b4db0ccb1c09","path:
/casManagement/servers/cas-shared-default/caslibs"ERROR: Cannot add caslib salesdl. It uses a path that is not in the allowlist.
","ERROR: The action stopped due to
errors.","0x887fc253:PERM_ALLOWLISTED"],"links":[],"version":2," httpStatusCode":409}
The action was not successful. (2-0-2640595)
오류 메시지는 수정에 큰 도움이 됩니다. 사용 중인 계정이 Viya 관리자인 경우 수퍼유저 역할을 맡을 수 있으며 액세스 가능한 모든 위치에서 caslib를 생성할 수 있습니다. 커맨드 라인 인터페이스를 사용하는 위의 코드에서 -su 옵션을 추가하면 성공적으로 caslib이 생성됩니다. 수퍼유저는 CAS가 액세스할 수 있는 모든 곳에서 caslib를 생성할 수 있습니다.
caslib를 수퍼유저를 기본으로 설정하고 싶지 않다면 다른 접근 방식을 허용 목록에 경로를 추가하면 됩니다. 이는 SAS Environment Manager를 사용하거나 예제 오버레이를 사용하여 site.yaml에서 CAS Deployment 정의를 업데이트하는 대화식으로 수행할 수 있습니다.
환경 관리자의 허용 목록에 추가
대화형 작업을 수행합니다. SAS Environment Manager에 관리자로 로그온합니다.
서버 영역: 액세스할 허용 목록 또는 거부 목록이 있는 CAS 서버를 선택하여 수퍼유저 아이콘을 클릭하여 수퍼유저로 변경합니다.
서버를 우클릭하여 설정을 선택합니다.
설정 창에서 경로 목록 탭이 선택되어 있는지 확인합니다. 활성 목록을 수정하거나 목록 간에 전환하려면 서버 설정 창의 오른쪽에서 편집 아이콘을 클릭합니다. 허용 목록을 선택하여 목록에 경로를 추가하거나 제거할 수 있습니다.
변경 사항을 저장하려면 저장을 클릭합니다.
kustomize 및 kubectl을 사용하여 허용 목록에 추가
이전 포스팅에서 다뤘듯이 Viya 관리자는 Viya 배포를 관리하기 위해 kubectl 및 kustomize에 익숙해져야 합니다. 이러한 도구를 통해 Viya 환경을 설명하는 kubernetes 매니페스트(일반적으로 site.yaml)를 업데이트할 수 있습니다. 프로세스 흐름은 다음과 같습니다.
1.사용자 정의 yaml 파일을 만들어 kustomization.yaml 파일 위치의 하위 디렉터리인 디렉터리(site-config)에 저장합니다.
2.새로 생성된 yaml 파일을 참조하도록 kustomization.yaml 파일을 수정합니다.
3.kustomize build를 사용하여 Kubernetes 매니페스트(site.yaml)를 빌드합니다.
4.변경사항으로 환경을 업데이트하려면 kubectl apply를 사용합니다.
이해를 돕기 위해 SAS는 소프트웨어와 함께 구성 변경을 위한 시작점으로 사용할 수 있는 많은 예제 파일을 제공합니다. 허용 목록에 추가하는 예제 또한 존재합니다. "../deploy/gelcorp/sas-bases/examples/cas/configure/cas-add-allowlist-paths.yaml"의 프로젝트 디렉토리에서 확인하실 수 있습니다.
예제 오버레이를 사용하여 site-config 디렉토리 하위에 새 오버레이를 만들고 목록에 경로를 추가합니다. 이 경우 /gelcontent 경로를 추가합니다. 경로는 포드 내부에 구성한 마운트 지점입니다. 대상 정의는 CASDeployment 유형의 모든 개체에 이 패치를 적용하려는 것을 나타냅니다.
오버레이를 kustomize에 사용할 수 있도록 하기 위해 kustomization.yaml 파일의 변환기 섹션에 다음을 추가합니다.
[...]
transformers:
[... previous transformers items ...]
- site-config/cas-add-allowlist-paths.yaml
[... more transformers items ...]
[...]
kustomization.yaml 일부는 다음과 같습니다.
이를 통해 kustomize build를 사용하여 Kubernetes 매니페스트(site.yaml)를 빌드한 다음 kubectl apply를 사용하여 환경을 업데이트합니다.(변경된 리소스만 업데이트됨)
cd ~/project/deploy/gelcorp site.yaml sitebefore.yaml kustomize build -o site.yaml kubectl apply -f site.yaml
매니페스트 변경 전과 후를 비교하여 확인할 수 있습니다.
일반적으로 CAS가 변경되면 변경 사항을 적용하려면 다시 시작해야 합니다.
kubectl delete pod --selector='app.kubernetes.io/managed-by=sas-cas-operator'
CAS를 재시작하면 허용 목록이 업데이트되고 수퍼유저가 아닌 사용자는 목록의 모든 경로에서 caslib를 생성/편집할 수 있습니다. 미미한 변경사항이지만 Viya 4 및 기존 스크립트와 기능에 영향을 미칠 수 있습니다. 다행히도 손쉽게 수정할 수 있습니다.
추가 정보: How do I kustomize my Viya 4 deployment
... View more
Labels:
06-02-2022
02:22 AM
SAS는 글로벌 해커톤 #HackinSAS를 후원하고 있습니다. 해당 이벤트는 새롭고 창의적인 방식을 통해 공익을 위한 데이터 활용 방법을 모색하는 취지로 시작되었습니다. 이 포스팅에서 해커톤에 대한 세부정보를 다루지 않으며 자세한 내용은 #HackinSAS 페이지와 SAS 커뮤니티의 Hacker’s Hub를 통해 확인하실 수 있습니다. 이 게시물에서 다루고 싶은 것은 해커톤에 참여하는 각 팀에게 제공할 환경을 만드는 방법에 대한 것입니다.
주제
SAS Viya 배포 자동화에 있어 Azure DevOps Pipelines를 통한 작업 효율 향상
전제 조건
다음 두 가지의 sassoftware GitHub 레파지토리를 활용합니다.
SAS Viya 4 IaC for Azure
SAS Viya 4 Deployment
해당 레파지토리에는 Azure 환경 내 SAS Viya 배포를 위한 도구, 스크립트 및 코드를 제공하고 있습니다. 이러한 개념에 익숙해지는 것이 향후 작업에 도움이 됩니다.
기초
저는 SAS Viya 배포에 필요한 Azure 컴퓨팅 리소스를 생성하기 위해 강력한 SAS Viya IaC(Infrastructure as Code) 레파지토리(상단 참조)를 사용하고 있습니다. 이 프로젝트에는 SAS Viya 4 제품을 배포하는 데 필요한 Microsoft Azure Cloud 인프라 리소스를 프로비저닝하기 위한 Terraform 스크립트를 포함하고 있습니다. 인프라가 구축 후 다른 참조 레파지토리의 코드와 함께 SAS Viya를 배포합니다.
Azure DevOps 파이프라인
#HackinSAS용 Azure 인프라에는 100개 팀을 위한 환경을 조성해야 합니다. 각 팀은 고유한 SAS Viya 환경에 액세스할 수 있어야 합니다. 현재 가장 민첩하고 효율적인 방식으로 모든 인프라를 제공하기 위해 노력중이며 이 프로세스를 가능한 한 최대한 자동화하기 위해 A SAS Viya 4 IaC for Azure
SAS Viya 4 Deployment을 살펴보기로 결정했습니다.
Azure Pipelines는 continuous integration (CI) and continuous delivery (CD)를 결합하여 코드를 지속적이고 일관되게 테스트 및 빌드하여 모든 대상에 제공합니다. Jenkins와 유사한 자동화 서버라고 생각하시면 됩니다. 이러한 파이프라인에서 Viya4 IaC Terraform 및 Viya 4 배포 스크립트를 통합하는 방법을 공유하고자 합니다. 이를 위해서는 자동화 서버 및 SAS Viya IaC 프로젝트에 대해 어느 정도 지식이 필요합니다.
아래 그래픽은 설명된 전체 배포 프로세스를 나타냅니다. 파이프라인 초기화 섹션에서 다루도록 하겠습니다.
파이프라인 초기화
메인 파이프라인을 시작하기 전에 첫 번째 DevOps 파이프라인 초기화 프로세스를 다뤄야 합니다. 먼저 기존 Azure Storage 계정 내에 terraform.tfstate 파일을 저장할 공간을 만듭니다. 각 참여 팀은 각각 Azure Cloud Infrastructure에 대한 모든 정보가 포함되어 있는 고유한 terraform.tfstate 파일을 가지게 됩니다. 해당 스토리지 컨테이너의 생성은 파이프라인의 첫 번째 작업입니다.
두 번째 작업은 Docker Container Image를 빌드하고 팀 이름으로 태그를 지정하여 Azure Container Registry에 푸시하는 것입니다(3단계). 이 Docker 이미지는 Terraform 계획 및 적용을 위해 두 번째 파이프라인에서 몇 차례 실행됩니다. Docker 이미지를 위해 첫 번째 파이프라인에서 실행되는 Docker 명령은 다음과 같습니다.
docker build -t viya4-iac-azure-hack:$(team) .
docker tag viya4-iac-azure-hack:$(team) $(location).azurecr.io/viya4-iac-azure-hack:$(team)
docker push $(location).azurecr.io/viya4-iac-azure-hack:$(team)
보시다시피 팀과 위치를 식별하기 위해 변수를 사용합니다. 이러한 필수 매개변수 없이는 파이프라인은 작동하지 않습니다. 컨테이너 이미지 빌드에 사용되는 Dockerfile은(하단 참조) SAS IaC Github 프로젝트에 있는 것과 동일합니다. 더불어 추가 매개변수로서 ARM_ACCESS_KEY가 필요합니다. 이 값은 Azure Storage 계정에 대한 액세스를 제공합니다. 또한 terraform.tfstate 파일의 위치에 대한 일부 백엔드 매개변수를 추가하여 Terraform init 명령을 수정했습니다. 파이프라인 실행 도중에는 팀 문자열이 해커톤 팀의 이름으로 바뀝니다.
...
ENV ARM_ACCESS_KEY=__storagekey__
RUN apk --update --no-cache add git openssh \
&& terraform init -backend-config="key=__team__-terraform.tfstate" -backend-
config="container_name=__team__" /viya4-iac-azure
...
이 작업을 수행하려면 나머지 백엔드 세부 정보를 Terraform 스크립트의 main.tf에 추가해야 합니다.
terraform {
backend "azurerm" {
resource_group_name = "tstate"
storage_account_name = "tstatehackathon"
}
}
파이프라인 실행은(4단계) 일반적으로 약 2분 안에 완료됩니다. 다음은 파이프라인 실행 결과를 나타낸 것입니다.
주요 파이프라인
이제 Azure AKS Kubernetes 클러스터를 설정하는 작업의(5단계) 대부분이 설정되었으며 Viya를 배포할 차례입니다. 이전에 Azure Container Registry에 푸시한 Docker 이미지로 AKS 클러스터를 설정합니다. SAS Viya를 배포하기 위해 GitHub의 또 다른 매우 편리한 프로젝트인 SAS Viya4 deployment를 사용합니다.
첫 번째 파이프라인과 마찬가지로 핵심은 연결된 Azure Repos Git을 사용하여 Azure DevOps 프로젝트에서 모든 필수 및 매개 변수화된 파일을 체크인하는 것입니다.
azure_docker_creds.env
Terraform.tfvars
ansible-vars-iac-azure.yaml
TLS 인증서
첫 번째 파일은 파이프라인의 특정 단계에서 소싱할 인증 정보를 포함합니다. 이를 통해 Azure DevOps 파이프라인은 SAS Viya 4 IaC for Azure 프로젝트 설명과 같이 Azure 구독 액세스를 위한 Terraform을 인증할 수 있습니다. 반드시 azure_docker_creds.env 파일에 추가 변수를 추가해야 합니다. ARM_ACCESS_KEY는 백엔드 Azure 저장소에 대한 액세스를 제공하므로 Terraform 상태 파일을 저장할 수 있습니다. 파일 내용은 다음과 같습니다.
TF_VAR_subscription_id="00000000-0000-0000-0000-000000000000"
TF_VAR_tenant_id="00000000-0000-0000-0000-000000000000"
TF_VAR_client_id="00000000-0000-0000-0000-000000000000"
TF_VAR_client_secret="00000000-0000-0000-0000-000000000000"
ARM_ACCESS_KEY=__storagekey__
파이프라인은 실행 중에 적절한 자격 증명을 사용하여 스토리지 키 값을 쿼리합니다. terraform.tfvars 및 ansible-vars-iac-azure.yaml에서 실행 중에 값을 대체하기 위해 몇 가지 매개변수를 추가했습니다.
파일은 다음과 같이 나타납니다.
Terraform.tfvars
# **************** REQUIRED VARIABLES ****************
# These required variables' values MUST be provided by the User
prefix = "hackinsas-__team__
"location = "__location__" # e.g., "eastus2"
# **************** REQUIRED VARIABLES ****************
ansible-vars-iac-azure.yaml
## Cluster
NAMESPACE: hackinsas-__team__
....
JUMP_SVR_HOST: __jmpip__
JUMP_SVR_USER: jumpuser
JUMP_SVR_PRIVATE_KEY: /data/auto-private-key-__team__.pem
...
## Ingress
V4_CFG_INGRESS_TYPE: ingress
V4_CFG_INGRESS_FQDN: __team__-hackinsas.vectorlabs.sas.com
V4_CFG_TLS_MODE: full-stack # [full-stack|front-door|disabled]
V4_CFG_TLS_CERT: /data/vector.crt
V4_CFG_TLS_KEY: /data/vector.key
V4_CFG_TLS_TRUSTED_CA_CERTS: /data/vector-cacerts.crt..
이 모든 것이 준비되면 Azure DevOps 파이프라인을 실행합니다. 프로세스는 대략 약 30분이 소요됩니다. 실행하는 동안 인프라 설정 및 SAS Viya 배포가 자동으로 이루어집니다. 이를 통해 팀이 해커톤에 등록할 때 필요한 환경을 빠르게 가동할 수 있습니다. 여기(아래 그래픽 참조) 수동으로 파이프라인을 시작하거나 특정 트리거를 사용하여 시작할 수도 있습니다.
실행이 완료되면 파이프라인은 6개의 노드 풀이 있는 AKS 클러스터를 생성하고 전체 SAS Viya 배포를 시작합니다. 약 1시간 후에 해당 환경에서 작업을 시작할 수 있습니다.
AKS 클러스터 세부정보
시스템 노드 풀 default_nodepool_vm_type = "Standard_D4_v2"
Node Pool
Vm_type
Min nodes
Max Nodes
system
D4_v2
2
2
CAS
E16ds_v4
1
1
compute
E16ds_v4
1
1
connect
E8ds_v4
1
1
stateless
E16ds_v4
1
2
stateful
E16ds_v4
1
3
아래 스크린샷에서 볼 수 있듯이 파이프라인의 작업을 여러 단계와 작업으로 나눴습니다. 더 많은 구조와 더 나은 명명 규칙을 제공하기 위해 도전을 수락합니다. 해커톤이 끝나면 IaC를 제거하고 모든 Azure 리소스 또한 삭제하는 옵션도 추가했습니다.
그리고 아래 이미지의 세부 정보에서 보시다시피 두 개의 아티팩트를 게시합니다. Build artifact는 배포의 모든 매니페스트, kustomization.yaml 및 site-config 폴더가 포함된 build-team.zip 파일입니다. drop folder에는 IaC terraform 스크립트에서 생성한 Kubernetes 클러스터 및 점프 서버에 연결하는 데 필요한 파일이 저장됩니다. 마지막으로, 필요한 경우 SAS Viya 환경에 액세스하고 사용자 지정이 가능합니다.
마치며
다소 어려움이 있다면 Azure DevOps 파이프라인 설명 영상을 확인하시기 바랍니다.
... View more
Labels:
05-25-2022
09:47 PM
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
SAS Information Catalog가 드디어 출시되었습니다! 이 포스팅에서는 SAS Viya 2020.1.3버전부터 2020년 2월 17일 출시된 버전까지에 대해 소개합니다. 새롭게 출시된 제품을 활용하는 방법을 학습하실 수 있습니다. SAS Information Catalog는 사용 목적에 따른 데이터 검색에 도움을 줍니다. 더불어 데이터 소스에서 메타데이터를 수집할 수 만한 공간을 제공합니다. 메타데이터를 사용하여 비즈니스 목표에 대한 관련 데이터를 찾고 필요한 데이터 세트를 이해할 수 있도록 합니다.
SAS Information Catalog를 누가 어떻게 사용해야 하는지에 대한 고정된 플레이북은 없습니다. 사실, 모든 사람이 자신의 작업 라인에서 유용한 작품을 찾을 수 있습니다. 다음을 살펴보겠습니다.
SAS Information Catalog를 사용할 수 있는 7가지 방법
필요한 정보 검색
일반 검색
구문 검색
사용성 평가
세부 내용 이해
열 세부 정보
샘플 데이터
데이터 준비 평가
데이터 품질 평가
개인정보 식별
지식 공유 및 실행
필요한 정보 검색
SAS Information Catalog는 일반 및 구문 검색을 지원합니다. 이 두 방법 모두 가장 높은 점수를 받은 결과가 먼저 나열합니다. 데이터 사이언티스트로서 특정 지역의 가정용 수도 사용량을 예측해야 한다고 가정해 보겠습니다. 수도 미터 데이터, 입방 미터 단위의 소비량, 미터 위치 등과 같은 목적에 가장 적합한 데이터 세트를 찾아야 합니다. 데이터 소스를 정확히 알지 못하는 경우에는 방대한 양의 데이터를 다뤄야 할 수 있습니다. 모래 사장에서 바늘을 어떻게 찾을 수 있을까요? 바늘을 찾아낼 강력한 자석은 검색입니다.
일반 검색
일반 검색 영상의 첫 1분을 시청하시기 바랍니다.
https://youtu.be/jzlysUuxBpI
예를 들어 와일드카드 문자를 사용하지 않고 단어 일부를 검색합니다. 물, water이라는 단어의 오타인 wat를 입력하여 검색 결과에 포함된 물 관련 항목을 찾을 수 있습니다. 일반 검색은 퍼지 논리도 지원하며 오타 watr 등 밀접하게 관련된 문자열도 결과를 나타냅니다. Water*로 검색합니다.
watr(물의 오타) 검색
다양한 결과가 나타납니다. 테이블은 연관성 기준으로 하향식으로 나열됩니다. 물 데이터를 포함한 테이블을 검색하면 유사한 상위 3개 순위를 보여줍니다. 일반 검 은 임의의 단어나 구를 입력하여 쿼리를 구성할 수 있는 자유 텍스트 입력을 지원합니다. 또한 테이블 또는 열 수준을 검색할 수 있습니다. 이 접근 방식은 전문적인 구문이나 구문을 사용하지 않고도 대화식 언어를 사용하여 필요한 정보 자산을 설명합니다. Elasticsearch 는 간접적 혹은 추가적으로 사용됩니다. 세제곱 미터(m3)와 같은 특정 열을 찾기 위해 퍼지를 활용합니다. *m3*로 검색합니다.
관련도가 높은 결과가 표시됩니다. Daily_W_C_M3이라는 열이 포함된 테이블만 표시됩니다.
구문 검색
구문 검색의 이용 목적은 보다 구체적인 쿼리를 생성하기 위한 텍스트 인터페이스를 제공함에 있습니다. 검색은 테이블 단위로 이루어집니다. 구문 검색 영상의 첫 1분을 시청하시기 바랍니다.
https://youtu.be/jzlysUuxBpI
1월 12일과 14일 사이에 생성된 테이블을 검색합니다. 다음과 같이 시도해 보세요 dataCreated: [2021-01-12 TO 2021-01-14]
테이블 레이블에 키워드가 있는 테이블을 검색합니다. 다음과 같이 시도해 보세요. Label:”water”
테이블 레이블에 물, water가 포함된 테이블이 표시됩니다.
이름에 "water" 또는 "cluster"라는 키워드를 포함하여을 검색합니다. name:"water"^3 OR name:"cluster" "Water"는 여기에서 부스트되고 "cluster" 스코어의 3배를 받게됩니다.
쿼리를 다음과 같이 더 구체화할 수 있습니다: name:"water"^3 OR name:"cluster" AND type:casTable
이제 흐름을 파악하셨으리라 생각됩니다. 검색은 꽤 강력한 힘을 가지고 있습니다. 유용한 결과를 구체화하고 반환하려면 몇 가지 방법을 사용하면 됩니다. 구문 검색은 Lucene 쿼리 구문(LQS)을 기반으로 합니다. 자세한 내용은 SAS Information Catalog 2020.1.3 production documentation과 Apache Lucene - Query Parser Syntax을 통해 확인하실 수 있습니다.
Elasticsearch
SAS Information Catalog는 Elasticsearch 엔진을 사용합니다. Elasticsearch의 기본 구성은 대부분 모든 사용자에게 좋은 경험을 선사합니다. 관리자는 일부 옵션을 변경할 수 있습니다. Elasticsearch 구성 옵션에 대한 일반 정보는 Elasticsearch documentation의 SAS Viya deployment notes on Elasticsearch을 통해 확인하실 수 있습니다. Elasticsearch는 SAS Visual Investigator 내에서 활용되어 왔습니다. 공식적으로 데이터 관리 제품의 일부가 되었습니다.
계산된 지표
계산된 측정항목을 가장 잘 사용할 수 있는 방법을 이해하려면 동영상의 나머지 부분을 시청하시기 바랍니다.
https://youtu.be/jzlysUuxBpI
사용성 평가
검색은 시간을 단축하고 결과를 좁혔습니다. 이제 관련 데이터 식별 다루기로 합니다. 결과는 다음과 같습니다.
선택한 검색 결과를 열어 테이블 개요가 포함된 화면으로 드릴다운 합니다. Overview 탭에는 요약된 텍스트 및 그래픽을 보여줍니다.
선택한 검색 결과를 열고 테이블 개요가 포함된 화면으로 드릴다운 합니다. 개요 탭에는 항목의 메타데이터에서 파생된 요약된 텍스트 및 그래픽 정보가 포함되어 있습니다.
행 및 열의 개수와 테이블의 크기 46,720/ 21 /9.6MB.
테이블의 완성도 95%의 완성도
Overview는 다른 사용자로부터 수집된 일부 집단 지식을 포함할 수 있습니다.
이전 사용자의 비즈니스 설명
소스의 유용한 정도
이러한 정보는 추가 지식을 전달하며 사용 여부는 직접 판단하면 됩니다. 주의:
지식 공유, 공동 작업, 태그 지정과 같은 기능은 현재 버전은 제공하지 않습니다. 정돈된 계획은 없으나 상위 버전에서 지원 예정입니다.
현재 버전에서는 작성자, 마지막 수정 날짜 및 업체 설명 등을 확인할 수 없습니다.
세부 정보 이해
Column Analysis (Descriptive Measures에서 각 열은 내용에 대한 통계를 나타냅니다. 단 몇 초 만에 내용 평가 및 적정성 여부를 판단할 수 있습니다. 계산된 열 매트릭스를 보면 테이블은 다음과 같은 내용을 포함하고 있습니다
50가지 속성에 대한 수도 계량기(고유 값)
일일 물 소비량(m3). 예측하고자 하는 지표입니다. 처리해야 할 몇 가지 이상한 점을 조기 발견합니다.
소비는 2014년과 2015년(최소 및 최대 연도)의 날짜 범위에 대한 것입니다.
열 세부정보
선택한 열에 대한 자세한 정보를 드릴다운 할 수 있습니다. 예시: 숫자 열
문자열
두 번째 문자열
위도와 경도가 포함된 열
샘플 데이터
sample data 탭을 사용하면 SAS Data Explorer에서와 같이 몇 가지 샘플 행을 찾아볼 수 있습니다.
데이터 준비 평가
Column Analysis (Metadata Measures)은 다음을 평가하는 데 도움이 됩니다.
먼저 데이터 준비 또는 처리가 필요합니다. 예를 들어 데이터를 문자열에서 숫자로 변환해야 하는 경우입니다.
불필요한 데이터가 있을 수 있습니다. 예를 들어 논리적 유형은 "City"(Houston)와 같은 단항 변수를 강조 표시합니다. 이 열은 보고서에 도움이 될 수 있습니다. 데이터를 모델링할 때 변수 선택 단계에서 이를 제외할 수 있습니다.
데이터 품질 평가
Column Analysis (Metadata Measures)은 다음 질문에 답할 수 있습니다.
데이터가 완전하거나 고유한가?
데이터에 흥미로운 패턴이 존재하는가?
개인 정보 식별
동일한 Column Analysis (Metadata Measures) 탭에서 데이터 세트의 개인 데이터에 대해 정보를 보여줍니다. 데이터 식별은 간접적 혹은 추가적으로 사용됩니다. 시맨틱 유형은 데이터 세트에 비공개 또는 잠재적으로 비공개가 될 만한 데이터의 존재 여부를 알려줍니다. 이 예제에서는 주소, 우편 번호, 도시 및 좌표가 정보 개인 정보 보호 후보로 여겨집니다.
다른 테이블에서 이러한 열은 정보 프라이버시 개인 데이터로 평가됩니다. 현지 법률에 따라 기업은 소비자의 별도의 허가 없이 본 목적 이외에 개인 데이터를 사용할 수 없습니다. 상하수도 소비량을 예측하는 경우 이름과 전화번호 등은 불필요 한 경우도 있습니다. 항상 Data Protection Officer와 협력하는 것이 우선입니다.
지식 공유 및 실행
이상적으로는 데이터를 분석한 후 집단 지식을 형성해 새로운 발견을 다른 사람들과 공유할 수 있습니다.
비즈니스 설명을 추가합니다.
상태를 조율합니다.
비즈니스 설명에 추가하여 구문 검색을 개선할 수 있습니다.
설명: 세제곱 미터 또는 설명:"m3"을 검색하여 결과 값에 해당 키워드가 포함된 데이터 세트를 찾아냅니다. 위에 설명한 바와 같이 지식 공유, 공동 작업, 태그 지정과 같은 기능은 이번 버전에서는 지원하지 않습니다. 확정된 계획은 없으나 상위 버전에서 지원 예정입니다. 마지막으로 다음 단계로 이동하여 데이터를 추가 탐색 및 시각화, 준비 또는 관리하고, 모델을 구축하거나, 계보를 탐색할 수 있습니다.
메타데이터 및 검색 에이전트 수집
메타데이터를 수집하려면 SAS Information Catalog가 이러한 자산을 검색 또는 크롤링해야 합니다. 자체 caslib 및 SAS Compute 라이브러리를 크롤링하는 방법을 알고 싶으신가요? 혹은 해당 에이전트를 모니터링하고 싶으시다면 How to Collect Metadata with the SAS Information Catalog을 통해 자세한 사항을 확인하실 수 있습니다.
SAS Information Catalog SAS Viya 2020.1.4 버전의 새로운 기능
SAS Viya의 안정적인 최신 2020.1.4 버전은 SAS 정보 카탈로그에 개인 정보 보호, 기간, 자산 적용 영역, 디스커버리 에이전트의 로케일 선택을 추가했습니다. 자세한 사항은 여기를 클릭해서 확인하실 수 있습니다.
결론
SAS Viya 2020.1.3의 새로운 SAS Information Catalog는 필요한 데이터 자산을 위한 강력한 검색 엔진을 활용합니다. 카탈로그는 다양한 애플리케이션을 통해 계산된 일련의 메트릭을 함께 제공합니다. 인터페이스를 통해 데이터의 유용성을 평가하고, 내용을 이해하고, 열 세부 정보로 드릴다운하며, 샘플 데이터를 볼 수 있습니다. 또한 특정 테이블 사용 여부를 결정을 더욱 신속히 내릴 수 있습니다.
라이선싱
SAS Information Catalog 제품은 basic과 advanced 두 가지 타입으로 제공됩니다.
SAS Information Catalog: 보통 계산된 메트릭인 CASlib를 검색합니다.
SAS Information Governance: 위와 같은 의미 유형과(개인 데이터 식별 및 분류) SAS Compute 라이브러리를 검색합니다.
리소스
How to Collect Metadata with the SAS Information Catalog
The Easiest Way to Share Your Information Assets
3 Steps to Empower Your Information Catalog Users
What is New in the SAS Information Catalog
How to Use the SAS Information Catalog YouTube
Product Documentation Production
License features
SAS Information Catalog: Administrator’s Guide
감사 말씀: Nancy Rausch, Vincent Rejany, Kumar Thangamuthu 및 Ashish Sharma 께 감사드립니다.
포스팅을 읽어 주셔서 감사합니다. 마음에 드셨다면 ‘좋아요’를 눌러주세요.
신규 SAS Information Catalog에 대한 고견을 나눠주시면 감사하겠습니다.
여기에서 SAS Global Enablement and Learning에서 더 많은 기사를 찾아보실 수 있습니다.
... View more
Labels:
05-19-2022
11:02 PM
SAS Viya 4 버전에서 Viya(CAS) 사용자는 MS-SQL Server SAS Data Connector를 사용하여 Azure Synapse SQL-Pool(이전의 SQL DW) 데이터베이스 테이블에 액세스할 수 있습니다. 또한 SAS Viya 사용자는 Azure Synapse를 통해 ADLS2에 저장된 다양한 타입의 데이터 파일에서 (parquet, orc, Json 등) CAS를 로드할 수 있습니다. 사용자는 이러한 데이터 파일을 CAS에 로드하기 전에 Azure Synapse 하에 열 데이터 테이블로 읽을 수 있습니다.
이 포스팅은 SAS Viya 4(CAS) 환경에서 Azure Synapse SQL Pool(SQL DW) 데이터베이스에 접근하는 방법에 관해 소개하고자 합니다.
Azure Synapse SQL Pool이란?
Azure Synapse SQL Pool은 (전 SQL DW) Synapse SQL을 사용할 때 프로비저닝되는 분석 리소스 모음을 나타냅니다. Azure Synapse SQL Pool은 n개의 서버 및 머신에서 분산 모드로 클라우드에서 실행되는 MS-SQL 서버 데이터베이스입니다.
MS-SQL Server SAS Data Connector를 사용하여 Viya(CAS) 사용자가 Azure Synapse 데이터베이스에 액세스할 수 있습니다. 사용자는 직렬 또는 다중 노드 데이터 로드 방식을 통해 Azure Synapse 데이터베이스 테이블에서 CAS를 로드할 수 있습니다. 또한 중간 데이터 파일에 Azure Storage를 사용하여 CAS 테이블에서 Azure Synapse SQL Pool 테이블로의 벌크 데이터 저장을 지원합니다. 벌크 로드 프로세스는 COPY INTO 명령을 사용하여 데이터를 Synapse 데이터베이스 테이블로 푸시하기 전에 대용량 또는 대량 데이터를 ADLS2 Blob 컨테이너에 업로드합니다.
전제 조건
CAS 노드(POD)에 MS-SQL Server 데이터 커넥터가 있는 SAS Viya 4
중앙에 위치한 ODBC.ini 및 Azure 액세스 키의 저장 및 액세스를 위해 AKS Persistence Volume을 사용하여 CAS 노드에 탑재된 Azure 파일 공유
Azure Synapse 데이터베이스에 액세스하기 위한 odbc.ini의 사용자 지정 DSN 이름
Azure Synapse 데이터베이스에 대한 사용자 액세스
대량 로드의 경우:
Storage Blob Data Contributor 역할이 있는 Azure Storage 계정에 대한 사용자 권한
Azure Data Lake 및 Azure Storage에 액세스할 수 있는 권한이 있는 Azure 사용자 애플리케이션
Blob Storage에 액세스하기 위해 CAS 노드에서 사용할 수 있는 중앙 위치의 Azure 액세스 키
Blob Storage에 액세스하기 위해 관리 ID 또는 SAS(Shared Access Signature) 토큰으로 구성된 MS-SQL 서버
데이터 액세스 경로
다음 그림은 Azure Synapse SQL Pool(SQL DW) 데이터베이스 테이블에 대한 SAS Viya 4(CAS) 환경 액세스를 설명합니다. 또한 CAS에서 Azure Synapse Database 테이블로 대량 데이터 업로드를 위한 데이터 경로를 설명합니다. 사용자는 직렬 또는 다중 노드 데이터 로드 방법을 사용하여 Azure Synapse 데이터베이스 테이블로부터 CAS를 로드할 수 있습니다.
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
대량 로드에 대한 Azure Storage 계정 구성
CAS 테이블에서 Azure Synapse SQL Pool 데이터베이스로 데이터를 대량 로드하려면 사용자에게 읽기 및 쓰기 권한으로 정의된 Azure 스토리지 위치가 필요합니다. Azure 운영 애플리케이션은 통신을 통해 CAS 노드(POD)에서 Azure 액세스 키를 얻을 수 있습니다.
자세한 단계는 ALDS2 Blob 스토리지에 액세스하기 위해 Azure 사용자 애플리케이션 및 스토리지 계정을 구성하기 위한 내용을 다루는 문서인 Cas Accessing Azure Data-lake Files를 통해 확인하실 수 있습니다.
대량 로드를 위한 Azure MS-SQL Server 구성
Azure Synapse 데이터베이스를 대량 로드하려면 MS-SQL 서버에 읽기 및 쓰기 권한이 있는 Azure ADLS2 Blob Storage에 대한 액세스 권한이 필요합니다. CASLIB 명령문에서 SAS 토큰을 사용하거나 --assign-identity로 MS-SQL 서버를 구성하고 Blob Storage에 대한 원활한 액세스를 위해 Storage Blob Data Contributor 역할을 SQL 서버 principle id에 할당합니다. 다음 Azure CLI는 --assign-identity를 사용하여 MS-SQL Server 생성 및 Server Principle id에 대한 역할 할당에 대해 설명합니다.
CLI 코드:
STUDENT=”Myname”
AKS_MY_LOCATION=”eastus2”
AKS_MY_RESOURCE_GROUP="${STUDENT}viya4"
AKS_MY_USER=viyadep
srv=sqlsrv
sql_server_name=$AKS_MY_RESOURCE_GROUP$srv
sql_server_admin_user=$AKS_MY_USER
sql_server_admin_pwd=”XXXXXXXXX”
sqldw_name=geldwpool
### Create a SQL Server with –assign-identity ####
sql_serv_sts=`az sql server create \
--name $sql_server_name \
--admin-user $sql_server_admin_user \
--admin-password $sql_server_admin_pwd \
--resource-group $AKS_MY_RESOURCE_GROUP \
--location $AKS_MY_LOCATION \
--enable-public-network true \
--assign-identity \
-o tsv `
### Create an Azure Synapse MS-SQL POOL Database in SQL Server ###
sql_serv_dw_sts=`az sql dw create \
--name $sqldw_name \
--server $sql_server_name \
--resource-group $AKS_MY_RESOURCE_GROUP \
--service-objective DW100c \
--tags name=$STUDENT \
--zone-redundant false `
### Assign Storage Blob Data Contributor Role to MS-SQL server managed Identity at Resource group level scope .###
spID=`az resource list -n $sql_server_name --query [*].identity.principalId --out tsv `
rgID=`az group show -g $AKS_MY_RESOURCE_GROUP --query id -o tsv`
server_role_tst=`az role assignment create --assignee $spID --role 'Storage Blob Data Contributor' --scope $rgID`
맞춤형 DSN
호스트 이름, 데이터베이스 이름 및 SSL 라이브러리 경로 등을 사용하여 Azure SQL Pool 데이터베이스에 액세스하기 위한 odbc.ini 파일의 사용자 지정된 DSN 항목입니다.
…….…
……………
[sqls_gelws]
Driver=/opt/sas/viya/home/lib64/accessclients/lib/S0sqls28.so
Description=SAS ACCESS to MS SQL Server
AEKeyCacheTTL=-1
AEKeystorePrincipalId=
AEKeystoreClientSecret=
AlternateServers=
AlwaysReportTriggerResults=0
AnsiNPW=1
ApplicationIntent=0
ApplicationName=
ApplicationUsingThreads=1
AuthenticationMethod=1
BulkBinaryThreshold=32
BulkCharacterThreshold=-1
BulkLoadBatchSize=1024
BulkLoadFieldDelimiter=
BulkLoadOptions=2
BulkLoadRecordDelimiter=
BulkLoadThreshold=2
ColumnEncryption=Disabled
ConnectionReset=0
ConnectionRetryCount=0
ConnectionRetryDelay=3
CryptoProtocolVersion=TLSV1,TLSV1.1,TLSV1.2,SSLv3,SSLv2
Database=geldwpool
Domain=
EnableBulkLoad=0
EnableQuotedIdentifiers=0
EnableServerSideCursors=1
EnableScrollableCursors=4
EncryptionMethod=1
FailoverGranularity=0
FailoverMode=0
FailoverPreconnect=0
FetchTSWTZasTimestamp=0
FetchTWFSasTime=1
GSSClient=native
HostName=utkumaviya4sqlsrv.database.windows.net
HostNameInCertificate=
#IANAAppCodePage=
InitializationString=
KeepAlive=0
Language=
LoadBalanceTimeout=0
LoadBalancing=0
LoginTimeout=15
LogonID=viyadep
MaxPoolSize=100
MinPoolSize=0
MultiSubnetFailover=0
PacketSize=-1
Pooling=0
PortNumber=1433
PRNGSeedFile=/dev/random
PRNGSeedSource=0
ProxyHost=
ProxyMode=0
ProxyPassword=
ProxyPort=
ProxyUser=
QueryTimeout=0
ReportCodepageConversionErrors=0
SnapshotSerializable=0
TrustStore=
TrustStorePassword=
ValidateServerCertificate=0
WorkStationID=
XMLDescribeType=-10
SSLLibName=/usr/lib64/libssl.so.10
CryptoLibName=/usr/lib64/libcrypto.so.10
…….…
……………
Azure Synapse SQL Pool 테이블에서 CAS 직렬 로드 및 저장
odbc.ini의 사용자 지정 DSN 항목으로 구성된 Viya4(CAS) 환경에서는 다음 코드를 사용하여 CAS 데이터 테이블을 읽고 Azure Synapse Database에 쓸 수 있습니다. 코드는 직렬 방식을 사용하여 CAS 데이터를 로드하고 저장합니다.
코드:
CAS mySession SESSOPTS=(CASLIB=casuser TIMEOUT=99 LOCALE="en_US" metrics=true);
%let MYUID='viyadep';
%let MYPWD='XXXXXXX';
%let MYDSN='sqls_gelws' ;
%let MYSCHEMA='dbo';
caslib azsqlws desc='Microsoft SQL Server Caslib'
dataSource=srctype='sqlserver',
username=&MYUID,
password=&MYPWD,
schema=&MYSCHEMA,
sqlserver_dsn=&MYDSN );
/* ## Save CAS data to Azure Synapse pool database table */
proc casutil outcaslib="azsqlws" incaslib="azsqlws";
load data=sashelp.cars casout="cars" replace;
save casdata="cars" casout="cars" replace;
list files;
quit;
/* ## CAS load from Azure Synapse poll database table. */
proc casutil incaslib="azsqlws"
outcaslib="azsqlws";
load casdata="cars" casout="cars_new" replace;
list tables;
quit;
CAS mySession TERMINATE;
출력:
.........
..............
83
84 caslib azsqlws desc='Microsoft SQL Server Caslib'
85 dataSource=(srctype='sqlserver',
86 username=&MYUID,
87 password=&MYPWD,
88 sqlserver_dsn=&MYDSN );
NOTE: Executing action 'table.addCaslib'.
NOTE: 'AZSQLWS' is now the active caslib.
NOTE: Cloud Analytic Services added the caslib 'AZSQLWS'.
NOTE: Action 'table.addCaslib' used (Total process time):
NOTE: Action to ADD caslib AZSQLWS completed for session MYSESSION.
89
78 /* Save CAS data to Azure Synapse pool database table */
79 proc casutil outcaslib="azsqlws" incaslib="azsqlws";
NOTE: The UUID 'f1cbd14f-2b65-6842-b82d-581685eb4072' is connected using session MYSESSION.
80 load data=sashelp.cars casout="cars" replace;
NOTE: The INCASLIB= option is ignored when using the DATA= option in the LOAD statement.
NOTE: Executing action 'table.addTable'.
NOTE: Action 'table.addTable' used (Total process time):
NOTE: SASHELP.CARS was successfully added to the "AZSQLWS" caslib as "CARS".
81 save casdata="cars" casout="cars" replace;
NOTE: Executing action 'table.save'.
NOTE: Performing serial SaveTable action using SAS Data Connector to SQLNOTE: Cloud Analytic Services saved the file cars in caslib AZSQLWS.NOTE: Action 'table.save' used (Total process time):
NOTE: The Cloud Analytic Services server processed the request in 47.475573 seconds.
78 /* CAS load from Azure Synapse poll database table. */
79 proc casutil incaslib="azsqlws" outcaslib="azsqlws";
NOTE: The UUID 'f1cbd14f-2b65-6842-b82d-581685eb4072' is connected using session MYSESSION.
80 load casdata="cars" casout="cars_new" replace;
NOTE: Executing action 'table.loadTable'.
NOTE: Performing serial LoadTable action using SAS Data Connector to SQL Server.WARNING:
WARNING: [SAS][ODBC SQL Server Wire Protocol driver]Setting QuotedIdentifier to 'OFF' is not supported with this server. The value of EnabledQuotedIdentifiers has been changed to 1
NOTE: Cloud Analytic Services made the external data from cars available as table CARS_NEW in caslib azsqlws.
NOTE: Action 'table.loadTable' used (Total process time):
...........
..................
결과 :
Azure Synapse SQL Pool 테이블에서 CAS 다중 노드 로드 및 저장
odbc.ini의 사용자 지정 DSN 항목으로 구성된 Viya4(CAS) 환경에서는 다음 코드를 가지고 다중 노드 방법을 사용하여 Azure Synapse 테이블에서 CAS를 로드할 수 있습니다. CASLIB 매개변수 numreadnodes= 및 numwritenodes=는 다중 노드 데이터 로드 및 저장 방법을 트리거합니다. odbc.ini는 Azure 파일 공유의 중앙에 위치하며 모든 CAS 노드(POD)에서 사용할 수 있습니다.
코드:
CAS mySession SESSOPTS=(CASLIB=casuser TIMEOUT=99 LOCALE="en_US" metrics=true);
%let MYUID='viyadep';
%let MYPWD='XXXXXXXX';
%let MYDSN='sqls_gelws' ;
%let MYSCHEMA='dbo';
caslib azsqlws desc='Microsoft SQL Server Caslib'
dataSource=(srctype='sqlserver',
username=&MYUID,
password=&MYPWD,
schema=&MYSCHEMA,
sqlserver_dsn=&MYDSN,
numreadnodes=10,
numwritenodes=10
);
proc casutil incaslib="azsqlws" outcaslib="azsqlws";
load casdata="fish_sas" casout="fish_sas" options=(sliceColumn="weight") replace;
list tables;
quit;
CAS mySession TERMINATE;
로그 출력:
.........
............
84 caslib azsqlws desc='Microsoft SQL Server Caslib'
85 dataSource=(srctype='sqlserver',
86 username=&MYUID,
87 password=&MYPWD,
88 sqlserver_dsn=&MYDSN
89 numreadnodes=10,numwritenodes=10,
93 );
NOTE: Executing action 'table.addCaslib'.
NOTE: 'AZSQLWS' is now the active caslib.
NOTE: Cloud Analytic Services added the caslib 'AZSQLWS'.
NOTE: Action 'table.addCaslib' used (Total process time):
77
78 proc casutil incaslib="azsqlws" outcaslib="azsqlws";
NOTE: The UUID 'e6ff8b32-53b2-7548-8ea8-ae83d9734618' is connected using session MYSESSION.
결과 :
CAS 테이블에서 Azure Synapse SQL Pool 테이블로 대량 로드
odbc.ini의 사용자 지정 DSN 항목으로 구성된 SAS Viya 4(CAS) 환경을 통해 ADLS2 Blob Storage에 대한 액세스를 위한 MS-SQL Server 및 디바이스 코드 방법을 사용하여 리소스 액세스를 위한 Azure 사용자 애플리케이션등과 같은 두가지 방식을 통해 다음과 같은 코드로 CAS 테이블을 Azure Synapse 데이터베이스 테이블에 대량 로드합니다. odbc.ini 및 Azure 액세스 키는 Azure 파일 공유의 중앙에 있으며 모든 CAS 노드(Pod)에서 사용 가능합니다.
Azure Synapse에 대한 CAS 테이블 대량 로드는 다단계 프로세스를 거칩니다. 첫 번째 단계에서 CAS는 직렬 데이터베이스 연결을 사용하여 Azure 시냅스 데이터베이스에 빈 테이블를 구성합니다. 두 번째 단계에서 벌크는 모든 CAS 노드에서 ADLS2 스토리지로 데이터 파일을 로드합니다. 세 번째 단계에서는 COPY INTO 명령을 SQL 데이터베이스 서버에 올려 ADLS2 스토리지에서 Synapse 데이터베이스 테이블로 데이터를 푸시합니다.
BULK load 명령문과 함께 CASLIB를 처음 사용하는 경우라면 Azure 인증에 대한 오류 메시지가 나타납니다. SAS 로그에는 Azure 액세스 키를 인증하고 생성하기 위한 Microsoft 장치 인증 URL 및 장치 코드가 표시됩니다.
데이터 요소에 특수 문자가(예: "",',`,!,#,$,@ 등) 포함된 CAS 테이블을 대량 로드하려면 CASLIB 명령문에서 ESCAPE=YES를 작성합니다. 주의해야 할 점은 해당 옵션을 사용하게 되면 데이터 요소의 추가 스캔 및 처리가 필요하므로 성능이 저하될 수 있습니다.
디버깅을 위해 ADLS2 저장 위치 내 임시 파일을 확인하려면 CASLIB 명령에서 deleteDataFiles=false를 사용하면 됩니다.
코드:
%let MYSTRGACC="utkumaviya4adls2";
%let MYSTRGFS="fsdata";
%let MYFOLDER="bl_data";
%let MYAZUID="MANAGED IDENTITY";
%let MYDNSSUFFIX="dfs.core.windows.net" ;
%let MYTNTID="b1c14d5c-3625-45b3-XXXXXXXXXXXXXXXXXX";
%let MYAPPID="a2e7cfdc-93f8-4f12-XXXXXXXXXXXXXXXXXX";
%let MYUID='viyadep';
%let MYPWD='XXXXXXXXX';
%let MYDSN='sqls_gelws';
%let MYSCHEMA='dbo';
CAS mySession SESSOPTS=(azuretenantid=&MYTNTID CASLIB=casuser TIMEOUT=99
LOCALE="en_US" metrics=true);
caslib azsqlws desc='Microsoft SQL Server Caslib'
dataSource=(srctype='sqlserver',
username=&MYUID,
password=&MYPWD,
Schema=&MYSCHEMA,
sqlserver_dsn=&MYDSN ,
identity=&MYAZUID ,bulkload='true',
FOLDER=&MYFOLDER,
accountname=&MYSTRGACC,
filesystem=&MYSTRGFS,
dnsSuffix=dfs.core.windows.net,
applicationId=&MYAPPID,);
/* ## Save CAS data to Azure Synapse pool database table */
proc casutil outcaslib="azsqlws" incaslib="azsqlws";
load data=sashelp.prdsal2 casout="prdsal2" replace;
save casdata="prdsal2" casout="prdsal2" replace;
list files;
quit;
CAS mySession TERMINATE;
에러 로그:
………
……………………………..
ERROR: To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXXX to authenticate
………
……………………………..
로그 출력:
......
........
93
94 caslib azsqlws desc='Microsoft SQL Server Caslib'
95 dataSource=(srctype='sqlserver',
96 username=&MYUID,
97 password=&MYPWD,
98 Schema=&MYSCHEMA,
99 sqlserver_dsn=&MYDSN ,
100 identity=&MYAZUID ,
101 bulkload='true',
102 FOLDER=&MYFOLDER,
103 accountname=&MYSTRGACC,
104 filesystem=&MYSTRGFS,
105 dnsSuffix=dfs.core.windows.net,
106 applicationId=&MYAPPID
108 );
NOTE: Executing action 'table.addCaslib'.
NOTE: 'AZSQLWS' is now the active caslib.
NOTE: Cloud Analytic Services added the caslib 'AZSQLWS'
.....
............
117 /* ## Save CAS data to Azure Synapse pool database table */
118 proc casutil outcaslib="azsqlws" incaslib="azsqlws";
NOTE: The UUID '1b53fcc7-1f8e-1a48-8d22-5e90a0641bb1' is connected using session MYSESSION
.......
..................
120 save casdata="prdsal2" casout="prdsal2" replace;
NOTE: Executing action 'table.save'.
NOTE: Performing serial SaveTable action using SAS Data Connector to SQL Server.
WARNING: WARNING: [SAS][ODBC SQL Server Wire Protocol driver]Setting QuotedIdentifier to 'OFF' is not supported with this server. The value of EnabledQuotedIdentifiers has been changed to 1
WARNING: WARNING: [SAS][ODBC SQL Server Wire Protocol driver]Setting QuotedIdentifier to 'OFF' is not supported with this server. The value of EnabledQuotedIdentifiers has been changed to 1
NOTE: Cloud Analytic Services saved the file prdsal2 in caslib AZSQLWS.
NOTE: Action 'table.save' used (Total process time):
.....
......................
결과:
다음 스크린샷은 Synapse Database 테이블에 복사하기 전에 Azure ADLS2 Blob Storage에서 생성된 중간 파일을 보여줍니다. 중간 파일은 CASLIB 명령에서 deleteDataFiles =false를 사용하여 Blob Storage 폴더에서 삭제되지 않은 상태이며 기본값으로 true로 설정되어 있습니다.
Azure Synapse CASLIB를 만들기 위한 사용자 인터페이스 옵션
VA 어플리케이션은 새로운 데이터 원본을 연결할 때 "Azure Synapse SQL"이라는 새 원본 타입과 함께 제공합니다.
제약 및 제한 사항
CAS는 항상 BULK 로드 프로세스를 사용하여 새 Synapse 테이블에 데이터를 저장합니다. 기존 Synapse 데이터베이스 테이블에 CAS 데이터 추가는 지원되지 않습니다.
해결 방법으로 사용자는 데이터를 Synapse "Temporary/Staging" 테이블로 BULK 로드하고 별도로 명시적 데이터베이스 SQL을 실행하여 기존 데이터베이스 테이블에 데이터를 추가할 수 있습니다.
Synapse Bulk Load는 단방향 트래픽에서만 가능하며 즉 프로세스가 CAS로부터 Azure Synapse로 데이터를 업로드합니다. Azure Synapse로부터 CAS로의 대량 다운로드는 불가합니다.
링크:
참고 문헌:
Microsoft SQL Server Data Connector
Bulk Loading with Microsoft SQL Server
What is Azure Synapse SQL Pool ?
참고 논문:
Cas Accessing Azure Data-lake Files
Manage Azure Access Key with AZUREAUTHCACHELOC
여기에서 SAS Global Enablement and Learning에서 더 많은 기사를 찾아보실 수 있습니다.
... View more
Labels:
05-12-2022
02:37 AM
이전 포스팅에서 언급했듯이 SAS Viya는 SAS의 미래입니다. 따라서 SAS Viya(2020.1 상위 버전)에 친숙해져야 합니다. SAS Viya 3.x에서 새로운 SAS Viya로 전환하는 방법을 살펴본 바 있습니다. 이번 포스팅에서는 SAS 9.4에서 SAS Viya로 쉽게 마이그레이션할 수 있도록 하는 새로운 기능을 검토하고자 합니다.
콘텐츠 평가
SAS 9 Content Assessment는 SAS 9.4 시스템의 다양한 특성 이해를 위한 응용 프로그램 모음입니다. 이 유틸리티는 고객이 SAS Viya로의 전환을 하는데 용이하도록 돕기 위해 마련되었습니다. SAS 9 Content Assessment가 얼마 전 출시되었으며 개발 중에 있으며 도구 또한 지속해서 개선되고 있습니다. SAS 9.4에서 콘텐츠 마이그레이션에 도움이 되는 응용 프로그램은 다음과 같습니다.
inventoryContent: 시스템의 다양한 SAS 아티팩트 및 콘텐츠를 계산합니다.
profileContent: 시스템의 특정 SAS 아티팩트 및 콘텐츠를 프로파일링합니다. 프로필은 콘텐츠의 속성을 자세히 살펴봅니다.
codeCheck: SAS Viya 및 CAS와의 호환성을 위해 SAS 코드를 평가합니다. 또한 콘텐츠 평가에는 몇 가지 "도우미" 응용 프로그램이 추가되었습니다.
importEGProjects: 파일 시스템의 여러 SAS Enterprise Guide 프로젝트를 SAS Viya 4로 가져옵니다.
importPackages: 파일 시스템의 여러 .spk 파일 프로젝트를 SAS Viya 4로 가져옵니다.
참고: 네 번째 응용 프로그램 SystemEvaluation은 SAS 9.4 내에서 업그레이드를 지원합니다. SAS 9.4에서 SAS Viya로의 여정을 시작하는 사람들을 위한 계획 프로세스의 중요한 부분을 차지합니다. 기존에 관련 리소스가 많기 때문에 여기서는 콘텐츠 평가에 중점을 두지 않겠습니다.
Content Assessment YouTube
Content Assessment Documentation
Preparing for upgrade or modernization: understanding your deployment
이 포스팅에서는 콘텐츠 마이그레이션 도구와 SAS Viya의 새 인터페이스에서 지원하는 새로운 9.4 개체에 대해 중점적으로 설명하고자 합니다.
SAS 9.4 지원 콘텐츠
새로운 버전 출시 후 SAS 9.4 개체에 대한 Viya 지원이 대량 추가되었습니다. 하단 테이블은 현재를 나타냅니다. SAS 9.4 콘텐츠, 지원 수준 및 SAS Viya에서 사용하기 위해 마이그레이션될 때 9.4 콘텐츠가 어떻게 되는지를 보여줍니다.
표를 자세히 다루기 전에 일반적으로 개체 마이그레이션이 어떻게 작동하는지 살펴보도록 하겠습니다. Enterprise Guide Projects 및 Data Integration Studio Flows와 같은 프로세스 플로우를 포함하는 SAS 9.4 개체는 일반적으로 Viya의 SAS Studio Flows로 마이그레이션됩니다.
SAS 9 EBI 및 DI 개체가 SAS Viya 또는 Visual Analytic Data View의 작업으로 마이그레이션되는 것도 일반적입니다. 다음이 필요한 개체의 경우:
Joins and filtering SAS Viya 작업 정의 및 가능한 작업 요청 생성
Calculations, hierarchies, and aggregations 일반적으로 SAS Visual Analytics 데이터 보기 생성
이전 기사에서 다양한 작업 개체가 무엇인지 다루었으며, 자세한 사항은 여기를 클릭하여 확인하실 수 있습니다. 두 가지 주요 생성 개체는 작업 정의 및 작업 요청입니다.
작업 정의에는 코드, 작업 유형, 매개변수 또는 프롬프트를 포함한 작업에 대한 메타데이터가 포함됩니다.
작업 요청은 작업 정의에 런타임 정보를 추가했습니다. 작업 요청은 작업 정의를 실행 및 예약에 사용할 수 있도록 합니다. Visual Analytics 데이터 보기는 데이터 원본에 대해 재사용 및 공유 가능한 템플릿입니다.
확인가능한 다른 유형의 개체는 Visual Analytics 데이터 보기, 데이터 계획, SAS Studio Flows, SAS Studio 쿼리입니다.
플랫폼 개체
플랫폼 개체의 경우, 주요 변경 사항은 데이터베이스 Caslib에 대한 데이터베이스 라이브러리 지원입니다.
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
시각적 분석 개체
아래 표에는 Visual Analytics 개체를 보여줍니다. 대부분은 SAS Viya에서 한동안 사용 가능하며 이전 문서에서 다룬적 있습니다.
SAS Viya 3.5에서는 Visual Data Builder 추가 쿼리만 지원되었습니다. 최신 버전은 VDB SQL 및 Star Schema 쿼리에 대해 추가 지원합니다. 불러오기를 하는 경우 쿼리 추가와 마찬가지로 Star Schema 쿼리는 SAS Data Studio Data Plan으로 변환됩니다. SQL 쿼리는 CAS 테이블을 생성하는 코드가 포함된 SAS Viya SAS Studio 쿼리로 변환됩니다.
분석, 비즈니스 인텔리전스 및 데이터 통합 개체
가장 많은 변화가 일어난 것은 분석, 비즈니스 인텔리전스, 데이터 통합 콘텐츠 영역입니다. SAS Viya 3.5에는 저장된 프로세스에 대한 예비 지원이 추가되었으며 이 기사를 통해 세부 정보를 확인하실 수 있습니다.
SAS Viya에서는 두 가지 유형의 OLAP Cube 가져오기를 지원합니다. Detailed Data Cubes는 CAS 테이블에 연결된 Visual Analytics 데이터 보기로 변환됩니다. 데이터 보기에는 계층 구조, 수준, 측정값, 계산된 항목 등이 포함됩니다. 데이터는 CAS에서 별도로 마이그레이션하여 사용할 수 있어야 합니다.
Star Schema Cubes는 생성된 FedSQL 코드를 포함한 작업으로 변환되어 출력 테이블과 관련된 데이터 보기를 생성합니다. 데이터 보기에는 계층, 수준, 측정값, 계산된 항목 등이 포함됩니다. 관계 Information Maps 변환으로 다음과 같은 결과를 얻을 수 있습니다.
PROC SQL 코드를 사용하여 대상 테이블을 생성하고 CAS에 로드하는 코드가 포함된 작업 정의 제출 및 예약할 수 있도록 작업 정의를 래핑하는 작업 요청
최근 개선 작업을 통해 Data Integration Studio Jobs and Enterprise Guide Projects에 대한 지원이 추가되었습니다. 두 가지 ㅁ두 SAS Studio Flows로 마이그레이션됩니다. Enterprise Guide Project에 대한 자세한 사항은 을 이 포스팅을 통해 확인하실 수 있습니다.
새로운 가져오기 사용자 인터페이스
SAS Viya 최신 버전은 뛰어난 새 기능과 함께 콘텐츠 가져오기 인터페이스가 업데이트 되었습니다. 가져오기 인터페이스는 Environment Manager내 선택 항목으로 두 개의 탭이 있습니다. 하나는 콘텐츠 가져오기용이고 다른 하나는 매핑 세트 관리용입니다. 새로운 기능을 모두 살펴볼 수는 없지만 몇 가지 주요 사항은 다음과 같습니다.
매핑 세트 관리 인터페이스(자세한 내용 하단 참조)
패키지 내 선택전 콘텐츠 가져오기
가져오기 중 콘텐츠 재배치하기
새로운 기능을 통해 SAS Environment Manager의 가져오기에서 매핑을 관리할 수 있습니다. 매핑이 Infrastructure Data Server 내에 매핑 세트로 저장되므로 텍스트 편집기 내에서 json 또는 yaml 매핑 파일을 수동으로 편집하지 않아도 됩니다. 매핑 세트는 가져오기와 별도로 관리할 수 있습니다. 다음과 같은 작업을 수행합니다.
Infrastructure Data Server에서 로드 및 저장
JSON 파일에서 업로드
수정
병합
삭제
요약
9.4에서 SAS Viya로의 마이그레이션은 내년 핵심 주제가 될 것이고, 개발 중에 있으며 9.4 추가 콘텐츠 마이그레이션에 대한 지원이 매월 이루어집니다.
여기에서 SAS Global Enablement and Learning에서 더 많은 기사를 찾아보실 수 있습니다.
... View more
Labels:
05-06-2022
03:56 AM
GCP(Google Cloud Platform)에 대한 관심이 점점 높아짐에 따라 구글 퍼블릭 클라우드에서 SAS Viya를 실행하는 방법을 프랑스 고객들에게 전달한 내용 중 몇 가지 기본 권장 사항을 이 포스팅을 통해 공유하고자 합니다.
대부분의 권장 사항은 Margaret Crevar가 작성한 3개의 주요 퍼블릭 클라우드 공급업체에 관한 SAS의 훌륭한 문서인 SAS Paper 1866-2018: Important Performance Considerations When Moving SAS® to a Public Cloud를 기반으로 합니다.(SAS 9과 SAS Viya 모두 해당)
구글 클라우드에 대하여 완벽히 정리되어 있으므로 별도의 언급없이 넘어가도록 하며 필요한 경우 파일을 통해 확인하시기 바랍니다.
일부 GCP 특성을 강조하고, SGF 문서의 주요 권장 사항에 대한 인식을 높이고, 설계 결정에 영향을 미칠 수 있는 사실 및 관심거리를 공유하여 고객과 아키텍처에 대한 논의를 순조로이 진행할 수 있도록 하고자 합니다.
고객과 관련해서는 고객이 사용하고 있는 클라우드에 대한 이해도가 어느 정도인지를 파악해야 합니다. 전문가 수준이 아니더라도 팀과 적극적으로 소통하는 것이 훨씬 좋은 편이라 하겠습니다. 고객의 예상을 웃도는 비용 청구나 혹은 더 심한 경우 IT 정책을 위반하지 않아야 합니다. IT에 대해 협상 및 토론한 경우가 전무하다면 관련 이슈를 파악하기 어려울 수도 있습니다.
포스팅의 내용이 의도한 것보다 훨씬 더 길어져서 관심 주제로 바로 이동할 수 있도록 목차를 작성했습니다.
구글 컴퓨트 엔진(GCE)
머신 유형
코어는 코어가 아니다
사이징
네트워크 고려 사항
송신 및 수신 트래픽
기본 권장 사항
보안
GCP의 스토리지
가능한 솔루션
처리량
SAS Viya에 대한 스토리지 권장 사항
결론
구글 컴퓨트 엔진(GCE)
구글 문서에 따르면 “컴퓨트 엔진 인스턴스는 Google이 제공하는 Linux 및 Windows Server용 공개 이미지와 기존 시스템에서 만들거나 가져올 수 있는 비공개 맞춤 이미지를 실행할 수 있습니다."
GCE는 AWS의 EC2 서비스에 해당하는 구글 클라우드입니다. 현재 IaaS(Infrastructure as a Service)에 대해 이야기 나누고 있다는 점을 유념하시기 바랍니다. 이점은 OS가 있는 가상 서버라 이에 연결하여 운영 체제 수준에서 준하는 작업을 수행할 수 있습니다. (예: 바이너리 설치, 파일 편집, 명령 및 시스템 서비스 실행 등)
구글은 또한 완전한 머신 대신 컨테이너를 프로비저닝 할 수 있는 HTTP load-balancers, Managed Instance 그룹(자동 복구 및 자동 크기 조정 기능 포함), ODBC 호환 데이터베이스 및 GKE(Google용 Kubernetes Engine) 등에 사용이 가능한 다른 서비와 메커니즘을 제공합니다. 그러나 이번 포스팅에서는 다루지 않겠습니다.
머신 유형
GCE 인스턴스의 머신 속성을 선택할 수 있습니다. 머신 유형은 기본적으로 고정된 수의 "vCPU"와 지정된 양의 RAM으로 사전 정의로 구성된 가상 머신입니다.
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
GCE에는 현재 표준, 고성능 메모리, 고성능 CPU, 공유 코어 및 메모리 최적화의 5가지 사전 정의된 머신 유형 제품군이 존재합니다.
머신 유형 제품군의 주요 차이점은 CPU-RAM 비율(vCPU당 0.9~24GB)이며 물론 머신 유형에 따라 가격이 차이납니다.
AWS와 달리 GCP를 사용하는 경우 이 CPU/RAM 비율을 사용자 지정 및 조정 가능하며 GPU 프로세서를 추가할 수도 있습니다.
사전 정의된 머신 유형에는 이미 정해진 가상화된 하드웨어 속성과 그에 맞는 가격이 있는 반면 사용자가 조율이 가능한 커스텀 머신 유형은 가상 머신 인스턴스가 사용하는 vCPU 및 메모리 수에 따라 가격이 책정됩니다.
여기에서 머신 유형에 대한 세부정보를 찾을 수 있으며 Viya의 경우 Viya 배포 내 머신 역할에 따라 몇 가지 권장 사항이 존재합니다.
SAS Programming Run-time(SAS PRE 및 관련 서비스): 방대한 양의 분석 처리가 CAS에서 수행되는 경우 일반적으로 표준 시리즈 시스템이 적합합니다. 그렇지 않을 경우 더 많은 리소스가 있는 인스턴스가 필요합니다. SAS PRE는 워크로드 유형에 따라 높은 CPU 및 메모리 리소스를 요구할 수 있다는 점을 유념해야 합니다.
SAS Viya Services: 고성능 메모리 시리즈는 Viya 서비스들이 수많은 마이크로서비스 및 웹 애플리케이션을 실행하기 위해 더 많은 양의 메모리를 필요로 하기 때문에 좋은 선택이 될 수 있습니다. 이러한 머신에는 vCPU당 6.5GB의 시스템 메모리를 내장하고 있습니다. 모든 SAS Viya 서비스가 동일한 호스트에 있을 예정이라면 최소한 n1-highmem-16 머신 유형이 필요합니다(104GB RAM 포함).
CAS 노드: 이러한 서버에는 데이터 처리를 위한 빠른 CPU와 동시에 SAS Viya를 사용하는 모든 사용자가 분석할 모든 데이터 파일을 보관할 수 있는 충분한 물리적 RAM이 필요하다는 것을 알고 있습니다. CAS는 인메모리 분석 엔진입니다. 따라서 고성능 메모리(n1-highmem-16에서) 또는 새로운 메모리 최적화 시리즈(물리적 코어당 최대 48GB RAM)가 적합합니다*
(*) 참고: "ultramem" 및 "megamem" 인스턴스는 일부 Google Cloud 영역에서 사용할 수 없으므로 주의하시기 바랍니다.
코어는 코어가 아니다
또한 반드시 짚고 넘어가야 할 중요한 사항은 GCP가 처리 능력을 vCPU(가상 CPU의 약자)로 표현한다는 것입니다. GCP 머신은 Hyper-Threading(물리적 CPU 코어당 2개의 스레드)으로 구성됩니다. 즉, 상단의 테이블에 나열된 vCPU는 실제 코어가 아닌 스레드입니다.
요약하자면 GCP의 vCPU 1개 = 물리적 CPU 코어 0,5개에 해당합니다.
따라서 GCP 인스턴스 vCPU 수는 SAS 라이선스 모델에 사용된 코어 수와 일치하도록 2로 나누어야 계산해야 합니다. 호스트에서 HT 정보를 확인할 수 있으며 CAS 라이선스 제어 알고리즘이 제대로 적용될 수 있습니다.
"lscpu" 명령은 많은 정보를 제공합니다. n1-standard-8(vCPU 8개, 메모리 30GB) 인스턴스에 대한 출력은 하단의 내용을 참조하시기 바랍니다.
코어당 스레드 수 값이 2이면 Hyper-threading이 활성화된 것을 볼 수 있습니다.
한 가지 흥미로운 사실은 AWS와 달리 GCP가 기본 호스트에서 사용되는 정확한 CPU 칩셋을 노출하지 않는다는 것입니다. (VM 호스트가 2.3GHz Intel Xeon 프로세서를 실행하는 것으로만 확인됨)
GCP에서 제공하는 NUMA 정보는 특정 상황에서 부정확할 수 있습니다. GCP에 64vCPU 인스턴스를 설정한 테스트에서 물리적 코어 수는 32개로 보고되었지만 소켓 수는 1개로 보고되었습니다. 하지만 인텔 페이지 검색에서 GEL 팀은 현재 켓당 28개 이상의 물리적 코어가 있는 Xeon E5/E7 프로세서가 누락된 것을 확인했습니다. 자세한 내용은 이 Intel 페이지를 통해 확인하실 수 있습니다.
사이징
마지막으로, 일반적으로 GCE 머신 유형 선택 조건은 다음과 같습니다.
EEC 사이징: EEC 크기에서 CPU/RAM 비율 및 메모리 양
CAS 세계에서 메모리의 양은 작업하려는 데이터의 양과 직접적인 관련이 있습니다
라이선스 코어 수
이상적으로는 EEC 사이징에 제공된 숫자를 뜻합니다. 그러나 항상 그렇지만은 않습니다.
먼저 하셔야 할 일은 사이징 권장 사항 및 라이선스가 부여된 코어 수를 GCE 인스턴스 유형에 매핑하는 것입니다.
다른 응용 프로그램이 Viya 배포 시스템과 같은 위치에 있는 경우 해당 응용 프로그램 또한 고려사항이 됩니다.
예를 들어 CAS 노드가 Hadoop 클러스터와 같은 위치에 있는 경우에는 CAS 라이선스에 표시된 것보다 더 많은 리소스 RAM, 디스크 및 CPU 코어를 프로비저닝해야 합니다. (CAS는 자체 사용률을 라이선스가 부여된 코어 수로 제한할 수 있습니다.)
네트워크 고려 사항
송신 및 수신 트래픽
Google Cloud 네트워크 문서에서는 다음과 같은 개념 또는 '수신' 및 '송신' 트래픽을 사용합니다.
수신: Google Cloud Platform에 들어오거나 업로드한 트래픽
송신: Google Cloud Platform에서 나가거나 다운로드한 트래픽
수신 트래픽은 무료며 반면에 송신 트래픽은 해당 트래픽의 소스 및 대상에 따라 요금이 부과됩니다. 해당 문서를 읽어보시기를 추천합니다.
GCP에서 송신 트래픽 대역폭은 vCPU의 갯수로 제한됩니다. 각 vCPU에는 최대 성능을 위해 2Gbps로 상한선이 정해져있습니다. 코어를 추가할 때마다 가상 머신에 대해 이론상 최대 16Gbps까지 네트워크 상한선을 늘려줍니다.
따라서 vCPU가 8개 미만인 GCP 머신의 경우 더 큰 인스턴스 유형에 비해 최대 네트워크 대역폭이 제한됩니다.
여기에서 다룬 바 있듯이 GCP에는 수신 트래픽에 대한 제한이 없습니다. VM이 처리할 수 있는 트래픽량은 머신 유형 및 운영 체제에 따라 상이할 수 있습니다. 수신 데이터 속도는 VM에 있는 네트워크 인터페이스 개수 또는 VM이 사용하는 별칭 IP 주소 등으로 부터 영향을 받지 않습니다.
CAS MPP 환경 성능를 위한 중요한 매개변수는 네트워크 속도입니다. CAS 인프라의 네트워크 처리량과 대기 시간을 측정하기 위해서는 Viya 설치 전에 "iperf" 또는 "qperf"와 같은 도구를 설치하여 사용하는 것이 추천합니다.
기본 권장 사항
일반적으로 네트워크에 관한 몇 가지 권장 사항은 다음과 같습니다.
통신에는 항상 내부 IP를 사용합니다
Viya 내부 (모든 Viya 머신 간 – 특히 CAS 노드 간)
CAS와 데이터 소스 머신 간(GCP에도 있는 경우)
인스턴스를 적정한 영역에 배치
Viya 플랫폼을 호스팅하는 GCP 영역과 Data Lake 사이에 물리적 거리가 멀면 성능에 영향을 미칩니다.
사용자에게 큰 영향을 미치지는 않지만 Viya 환경으로부터 거리가 먼 경우 추가 대기 시간으로 인해 웹 액세스가 느려질 수 있습니다.(GCP 내 가상 데스크톱 인프라를 사용하는 소규모 사용자 그룹의 경우 흥미로운 옵션이 될 수 있습니다.).
올바른 코어 수 선택
CAS 노드의 경우 vCPU가 8개 미만의 인스턴스를 사용하지 않아야 합니다. 그렇지 않을 경우 인스턴스 간의 네트워크 대역폭이 제한됩니다.
물리적인 기기를 사용한다면 ethtoo과 같은 명령어를 실행하는 NIC(Network Card Interface) 속도를 확인해야 합니다. 그러나 다른 가상화 혹은 클라우드 환경과 마찬가지로 GCP에서 인스턴스는 가상 NIC(네트워크 인터페이스 카드)를 사용합니다. 물리적 NIC는 VM에 직접 연결되지 않더라도 KVM 하이퍼바이저 호스트에서 실행되는 가상 스위치에 대한 업링크를 제공합니다.
마지막으로 특정 물리적 NIC(네트워크 카드 인터페이스)를 연결하도록 선택할 수는 없지만 단일 GCE 인스턴스에 여러 NIC를 연결하여 가능한 기술이 있다면 통신을 위한 특정 네트워크 인터페이스를 사용하도록 애플리케이션을 구성할 수 있습니다.
그러나 GCP에서는 16Gbps의 네트워크 속도 제한이 인스턴스 내에서 결정되므로 다수의 NIC는 그닥 도움이 되지 않을 수도 있습니다.
보안
기본적으로 모든 GCP 인스턴스에는 내부 IP 주소와 임시 외부 IP가 각각 하나씩 있습니다. 물론 Viya 배포의 경우 공개 서비스(예: HTTP Apache 서버)를 호스팅하는 컴퓨터의 IP 주소를 생성하여 필요한 포트를 여는 방화벽 규칙을 추가합니다.
SAS 컨설턴트의 주업무는 아니지만 사이트 간 VPN이 액세스 측면에서 가장 중요한 표준이라는 사실을 알고 있어야 합니다.
기업 환경부터 클라우드까지
클라우드 자산의 온프레미스 동시 접근 가능성
혹은 인터넷의 랜덤 시스템으로 AD 또는 데이터베이스와 통신할 수 있습니다.
마지막으로, 모든 VPC에는 기본적으로 네트워크에서 송수신 되는 트래픽 모두에 적용되는 묵시적 방화벽 규칙이 함께 제공됩니다.
기본적으로 외부에서는 SSH 및 RDP 액세스만 허용되며 동일한 서브넷에 있는 인스턴스 간의 내부 통신은 제한 없이 허용됩니다.
묵시적인 기본 규칙을 사용하여 모든 송신 트래픽이 허용되므로 임의로 변경할 수 없습니다. 제한적으로 이를 재정의할 수 있습니다.
또한 GCP는 방화벽 규칙에 관계없이 항상 일부 트래픽을 차단합니다.
GCP의 스토리지
사용 가능한 솔루션
CAS 성능의 다른 중추 영역은 I/O 속도입니다. SAS 런타임은 항상 I/O 디스크 집약적인 애플리케이션이었고 Viya SPRE 및 CAS에서도 여전히 그렇습니다. SAS가 데이터를 읽고 쓸 수 있는 속도가 개선될 수록 분석 처리 소요시간 또한 단축됩니다.
현재 GCP에는 Compute Engine 인스턴스에 사용할 수 있는 4가지 스토리지 솔루션이 있습니다.
영역 내 표준 영구 디스크 및 영역 내 SSD 영구 디스크: 효율적이고 안정적인 블록 스토리지
지역 영구 디스크 및 지역 SSD 영구 디스크: 두 영역 내 복제된 지역 블록 저장소
로컬 SSD: 고성능 임시 로컬 블록 스토리지
클라우드 스토리지 버킷: 저렴한 객체 스토리지
출처: https://cloud.google.com/compute/docs/disks/
SAS 배포의 경우 표준 영구 디스크, SSD 영구 디스크 및 로컬 SSD를 유심히 살펴보아야 합니다. 지역 영구 디스크는 특정 DR 요구 사항을 충족하도록 설계되었으며 클라우드 스토리지 버킷(AWS S3 상당)은 아직 SAS 또는 Viya가 지원되지 않습니다.
처리량
SAS의 I/O 패턴은 대규모 읽기 및 쓰기에 속하며 제한 요소는 처리량입니다.
영구 디스크 작업에는 vCPU 수에 따라 송신 네트워크 트래픽이 제한됩니다. 그러므로 영구 디스크 쓰기 작업은 인스턴스의 네트워크 송신 한도로 제한됩니다. SSD 영구 디스크는 vCPU 수가 많은 인스턴스에서 IOPS 및 처리량의 더 높은 성능을 보입니다.
또한 처리 성능은 특히 대용량 읽기 및 쓰기의 경우 디스크 크기에 따라 상이합니다. 예를 들어 7200RPM SATA 드라이브와(일반적으로 120MB/s 달성) 동일한 성능을 보유하려면 최소 1TB의 표준 영구 디스크 또는 SSD 영구 디스크용 250GB가 필요합니다.
하단 테이블은 GCP 문서에서 발췌하였으며 최대 지속 처리량에 대한 아이디어를 제공합니다(.큰 볼륨 크기 및 가장 높은 인스턴스 유형 사용)
CAS는 디스크 I/O에 덜 민감하지만(데이터 로드 단계 중 CAS 디스크 캐시 상호 작용, 중간 테이블 생성 또는 메모리가 과도하게 커밋될 때 페이징을 제외하고 대부분 메모리에서 작동함) 이러한 값은 분명 한계점을 만들 수 있습니다. SAS 9 I/O 집약적 솔루션의 경우 코어당 100 또는 150MB/s에 해당하는 가본 요구 사항이 충족되지 않을 가능성이 높습니다.
로컬 SSD 드라이브는 가상 머신 인스턴스를 호스팅하는 서버에 물리적으로 연결됩니다. 표준 영구 디스크 또는 SSD 영구 디스크보다 처리량이 높고 지연 시간이 짧습니다.
각 로컬 SSD의 크기는 375GB이지만 인스턴스당 총 로컬 SSD 스토리지 공간 3TB에 대해 최대 8개의 로컬 SSD 장치를 연결할 수 있습니다. 디스크 인터페이스는 SCSI(기본값) 또는 NVMe(신규)일 수 있습니다. NVMe는 일반적으로 더 빠르나 모든 이미지에 최적화된 드라이버가 있지 않을 수 있습니다.
따라서 로컬 SSD 드라이브는 SASWORK/SASUTIL 및 잠재적으로 CAS_DISK_CACHE와 같이 높은 I/O 처리량이 필요한 임시 저장 위치에 적합합니다. 비록 시스템이 재부팅될 때마다 임시 드라이브를 포맷, 스트라이프, 및 마운트 역할을 위한 스크립트를 작성해야 할지라도 말입니다.
그러나 현재 GCP에는 로컬 SSD 드라이브를 사용할 때 큰 단점이 있습니다. 문서에 명확하게 명시된 바와 같이 로컬 SSD가 있는 인스턴스를 중지하고 다시 시작할 수 없습니다. 따라서 클라우드 비용을 절약하기 위해 야간이나 가동 중지 시간에 컴퓨터를 중지할 계획이 있었다면 이는 불가능합니다.. 머신을 삭제해야만 중지가 가능합니다.
머신을 삭제하는 경우, SSD 드라이브 콘텐츠뿐 아니라 컴퓨터 설정, IP 주소 및 부팅 디스크 콘텐츠도 잃게 됩니다.
임시 스토리지일 뿐만 아니라 전체 인스턴스를 임시로 설정하도록 만듭니다. 고객에게 큰 데미지가 될 수 있습니다.
빠른 SSD 드라이브를 사용하는 방법은 (사용하지 않을 때 비용을 절감할 수 있는 유연성을 유지하면서) 재구축/재배포를 완전히 자동화하는 것입니다. Ansible 배포 플레이북 덕분에 CAS 작업자와 같은 작업에서는 가능하지만 SPRE 또는 SAS 9 서버와 같은 작업에서는 쉽지 않습니다.
(해당 내용에 대해 알려주신 Ekaitz Goienola에게 감사드립니다)
SAS Viya에 대한 스토리지 권장 사항
일반적으로 스토리지 선택은 필요한 공간과 애플리케이션에 필요한 성능 특성에 따라 결정됩니다.
다음은 I/O 프로필 환경에 따라 SAS Viya 배포를 위한 SAS Viya의 다양한 스토리지 권장 사항입니다.
스토리지 공간
머신
GCP 스토리지 솔루션
참고
SAS 바이너리 및 구성 (/opt/sas/viya)
모두
영역 내 표준 영구 디스크
빠른 저장은 필요하지 않고 지속성은 필요한 경우
SASDATA 위치
SAS Programming Runtime (SPRE)
영역 내 SSD 영구 디스크
디스크 및 vCPU가 추가 된 vCPU를 자긴 인스턴스는 최대 처리량 또한 증가합니다.
CAS Data directory
CAS Controller
영역 내 SSD 영구 디스크
SASWORK, SASUTIL
SAS Programming Runtime (SPRE)
로컬 내 SSD / 영역 내 Zonal SSD 영구 디스
로컬 SSD의 경우 각 인스턴스에 대한 IO 처리량을 얻으려면 최소 4개, 가급적이면 8개를 함께 스트라이프해야 합니다.* 스트라이프 SSD에 배치할 때 SAS WORK 및 SAS UTILLOC는 단일 파일 시스템을 공유해야 합니다.
CAS 디스크 캐시
CAS Nodes
로컬 SSD
(*) 로컬 SSD 디바이스에서 패리티를 사용하거나 RAID 수준을 미러링하는 것은 실질적인 안정성이나 중복성에 따른 장점을 가져오지 않기 때문에 RAID0을 사용합니다. 자세한 사항은 여기를 클릭하여 확인하실 수 있습니다.
마지막으로, 인프라가 SAS IO 테스트 도구를 실행하는 SAS I/O 처리량 요구 사항을 충족하는지 확인하거나 CAS 작업자의 병렬 IO 읽기 및 쓰기를 실제로 벤치마킹하는 더 나은 ansibilized 버전인지 항상 확인하는 것이 좋습니다.
결론
고객이 구글 클라우드에 SAS Viya를 배포할 계획인 경우 이 포스팅이 도움이 되었기를 바랍니다.
클라우드 세계의 좋은 점 중 하나는 도전할 과제가 있다는 것입니다.
예를 들어, 잘못된 머신 유형을 선택한 것은 큰 문제가 아니며 머신을 폐기하거나 고객에게 새 머신을 주문하도록 요청하고 데이터 센터에서 배송되어 케이블로 연결될 때까지 기다릴 필요가 없습니다. 이미 설치된 Viya 서비스를 중지한 다음 VM을 멈춘 후에 인스턴스 유형을 변경한 다음 재시작하면 됩니다.
(특히 GCP에서) 할 수 있는 쉬우면서도 멋진 작업은 전체 배포 프로세스를 자동화하는 것입니다. 머신 프로비저닝('gcloud' 명령, Cloud Deployment Manager 또는 ansible 'gce' 모듈 사용), 배포(예: 사전 요구 사항 및 Viya 설치의 경우 Viya ARK 포함), 최대 데이터 로드 및 "콘텐츠" 전달 단계까지 전부말입니다.
자동화된 프로세스 구현은 인프라 유연성을 크게 개선하고 다음과 같은 클라우드 모델의 이점을 누릴 수 있습니다.
다양한 사이징 조정 옵션을 벤치마킹합니다. 예를 들어 제품 및 사용 사례에 따라 CAS 작업자는 적지만 더 강력할 수 있습니다. CAS 셔플 작업 중 네트워크 데이터 전송량을 줄일 수 있습니다
필요하지 않은 경우 전체 인프라를 삭제하고, 필요할 때만 자동으로 재구축하여 인프라 비용을 줄입니다 (예: 많은 작업자에 대한 월간 예측 실행)
SAS Viya 요구 사항과 일치하는 새 인스턴스 유형이 출시되면 이를 쉽게 활용할 수 있습니다
기타 등등
긴 글을 읽어주셔서 감사드리며 리뷰 및 귀중한 말씀을 나눠주신 Erwan Granger, Mike Goddard, Simon Williams, Margaret Crevar, Mark Schneider께 특별한 감사 인사 드립니다.
... View more
04-28-2022
02:15 AM
SAS Studio Flow를 일괄적으로 실행하는 방법과 관련해 다음과 같은 접근 방식과 스크립트를 소개합니다.
SAS Studio Flow 생성
SAS Studio Flow 예약
작업 요청 스크립트 실행
변경 내용 관리
가정
Gerry Nelson은 포스팅에서 SAS 관리 커맨드 라인 인터페이스를 최신 상태로 유지하는 방법에서 자세한 내용을 소개하고 있습니다.
그의 포스팅은 SAS Viya 2020.1 상위 버전에서 sas-viya로 대체된 sas-admin 실행 파일에 대해 다룹니다. Nelson이 소개하듯이 sas-admin을 sas-viya로 바꿔도 문제가 되지 않습니다.
배치 명령을 수행하려면 명령을 실행할 시스템에 SAS Viya CLI가 설치되어 있어야 합니다.
설치와 관련돤 설명은 SAS® Viya®: Using the Command-Line Interface에서 확인하실 수 있습니다.
최상위 명령어 sas-viya는 사용자를 초기화하고 인증하며 job 플러그인을 실행하는 데 사용됩니다.
전체 플러그인 목록은 Command-Line Interface: Plug-Ins을 참조하시기 바랍니다.
SAS Studio Flow로 돌아가기:
SAS Studio Flow 생성
플로우란 무엇을 뜻할까요? 데이터에 대한 일련의 작업을 의미합니다. 플로우은 SAS Viya 2020.1부터 SAS Studio에서 사용할 수 있습니다.
자세한 내용은 SAS® Studio with SAS® and SAS® Viya® Programming Documentation / SAS® Studio Flows.을 통해 확인하실 수 있습니다.
동료들은 향후 몇 주 또는 몇 달 동안 플로우 및 활용 밥법에 대한 추가 콘텐츠 업로드 할 예정입니다.
다음 예제에서 플로우는 데이터 세트를 쿼리하고 결과 테이블을 생성하여 CASLIB에 로드합니다.
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
SAS Studio Flow 예약
인터페이스에서 플로우를 사전 지정할 수 있습니다. 미리 예정 시간을 지정할 수 있습니다. 이 단계에서 일정은 작업 요청의 플로우을 변환합니다.
SAS Environment Manager > Jobs and Flows > 작업 요청 및 ID 예약에서 확인할 수 있습니다. 이 ID는 플로우를 배치로 실행하는데 핵심입니다.
인터페이스에서 플로우을 실행하고 예약할 수 있더라도 앞서 언급한 스크립트와 SAS Viya CLI를 사용하여 SAS Studio 플로우를 실행하는 방법에 중점을 두고자 합니다.
작업 요청 실행
작업 요청에는 SAS Studio 플로우 코드를 포함하고 있습니다. Kubernetes 관리자로 터미널에 로그인하고 다음을 수행합니다.
SAS Viya 인증 및 프로필 생성
# get namespace and host, adapt the value below to your environment
current_namespace=gelenv
INGRESS_SUFFIX=$(hostname -f)
INGRESS_URL=https://${current_namespace}.${INGRESS_SUFFIX}
echo ${INGRESS_URL}
# get certificates (TLS support) ## run just once mkdir -p ~/.certs kubectl cp $(kubectl get pod -l app=sas-logon-app -o=jsonpath='{.items[0].metadata.name}'):security/trustedcerts.pem ~/.certs/${current_namespace}_trustedcerts.pem ## run as many times as you authenticate
export SSL_CERT_FILE=~/.certs/${current_namespace}_trustedcerts.pem
export REQUESTS_CA_BUNDLE=${SSL_CERT_FILE}
# go to sas-viya CLI folder
clidir=/opt/sas/viya/home/bin
cd $clidir
# create a profile
export SAS_CLI_PROFILE=${current_namespace}
./sas-viya --profile ${SAS_CLI_PROFILE} profile set-endpoint "${INGRESS_URL}"
./sas-viya --profile ${SAS_CLI_PROFILE} profile toggle-color off
./sas-viya --profile ${SAS_CLI_PROFILE} profile set-output fulljson
# Login and get a token, change the password
./sas-viya --profile ${SAS_CLI_PROFILE} auth login -user sasadm -password *****
출력 예시:
로그인하고 토큰을 얻는 훌륭한 안전한 접근 방식이 있습니다. 마지막 부분에서 다룰 예정입니다.
기존 작업 요청 나열
작업 이름으로 필터링하여 변수 jid에서 ID를 검색합니다.
# List the existing job requests
/opt/sas/viya/home/bin/sas-viya -output text job requests list -limit 25
# Read the id of the created job, filter by name
jid=$( /opt/sas/viya/home/bin/sas-viya --output json job requests list --filter 'eq(name,"CarMakeFlow.flw")' | jq -r '.items[]["id"]')
echo $jid
작업 요청 실행
/opt/sas/viya/home/bin/sas-viya job requests execute --id $jid
SAS Studio 플로우를 실행합니다. SAS Environment Manager > Jobs and Flows > Scheduling에서 마지막 실행 업데이트 시간을 확인할 수 있습니다.
변경 내용 관리
SAS Studio 플로우에서 무언가를 변경하고 저장하면 어떻게 될까요? 작업 요청이 새 플로우 코드로 자체 업데이트될까요? 안타깝게도 아닙니다. 새 작업 요청으로 플로우을 다시 설정해야 합니다. 이름은 같지만 ID가 다른 두 개의 작업이 생성됩니다.
더 이상 해당 버전이 필요하지 않다고 생각되는 경우 이전 작업을 삭제하고 새 작업을 실행해야 합니다.
# Delete previous job using old jid
/opt/sas/viya/home/bin/sas-viya -output text job requests delete --id $jid
## Relist the jobs
/opt/sas/viya/home/bin/sas-viya -output text job requests list -limit 25
# Read the id of the new job, filter by name
jid=$( /opt/sas/viya/home/bin/sas-viya --output json job requests list --filter 'eq(name,"CarMakeFlow.flw")' | jq -r '.items[]["id"]')
echo $jid
# Execute the job request based on the id of the job
/opt/sas/viya/home/bin/sas-viya job requests execute --id $jid
보안을 고려한 방법
보다 안전한 방법은 자격 증명을 인코딩하지 않는 것입니다. pyviya 도구와 함께 .authinfo 파일을 사용하시기 바랍니다. Gerry의 포스팅 Introducing the GEL pyviyatools을 통해 확인하실 수 있습니다.
# Instead of
# ./sas-viya --profile ${SAS_CLI_PROFILE} auth login -user sasadm -password *****
# Create .authinfo - replace ***** with real credentials
tee ~/.authinfo > /dev/null << EOF
default user sasadm password *****
EOF
chmod 600 ~/.authinfo
# Browse to PyViya Tools folder and use the loginviauthinfo command for authentification
cd ~/admin/pyviyatools.
/loginviauthinfo.py -f ~/.authinfo
pyviatools 설치 설명서는INSTALL.md에서 확인하실 수 있습니다.
결론
SAS Viya 2020.1 이상에서 SAS Studio Flows를 실행하려면 sas-viya 일괄 CLI 사용을 고려해보시기 바랍니다.
감사 말씀
Gerry Nelson과 Mary Kathryn Queen에게 감사드립니다.
리소스
자세한 내용은 다음 정보를 통해 확인하실 수 있습니다.
Introducing the GEL pyviyatools
Run SAS programs in batch in Viya 4
포스팅을 읽어 주셔서 감사합니다. 도움이 되셨다면 ‘좋아요’를 눌러주세요. 포스팅과 관련하여 의견을 제시해 주시거나 코멘트를 달아주시면 감사하겠습니다.
이곳에서 SAS Global Enablement and Learning에서 더 많은 기사를 찾아보실 수 있습니다.
... View more
Labels:
04-24-2022
10:07 PM
Joe Furbee의 웨비나 Using SAS APIs를 통해 SAS REST API 작업 관련 Postman의 지대한 영향력에 큰 영감을 받았습니다. 이 포스팅에서는 Search for Tags(Annotations)를 위해 만든 Postman 컬렉션의 예제를 활용해 웨비나에서 다룬 내용을 자세히 다루고자 합니다.
SAS Viya에서는 태그를 사용하여 테이블, 열 및 기타 개체에 단순한 메타데이터 이상의 기타 정보를 추가할 수 있습니다. 사용자 인터페이스에서 이러한 태그는 데이터를 프로파일링할 때 자동으로 열에 추가되거나 수동으로 추가할 수 있습니다. 현재까지는 사용자 인터페이스에서 특정 태그가 있는 항목을 검색할 수 없습니다. 그러나 Annotations REST API를 사용한다면 가능합니다. Postman 기능을 활용한 SAS REST API 사용법에 대한 내용을 복습하는데 사용할 예제입니다.
Postman 컬렉션 작업
Postman은 REST API 작업에 유용한 도구입니다. 컬렉션을 통해 개별 요청을 그룹화 및 저장할 수 있습니다. 추가 구성을 위해 컬렉션 내에 폴더 생성도 가능합니다. 이 포스팅에서 다룰 예제 컬렉션은 다음과 같습니다.
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
Postman 컬렉션을 작업할 때 다음 구성 요소가 필요합니다.
1. 환경 변수
환경 변수를 사용하여 Postman 요청을 보다 일반적이고 재사용 가능하도록 합니다. 환경에 따라 변수 값을 변경할 수 있습니다. SAS REST API 요청의 경우는 선택사항입니다.
이러한 변수는 사용될 위치에 따라 두 가지 방식으로 Postman에서 다뤄집니다. 요청 URL, 매개변수, 승인, 헤더 또는 본문 섹션에서 사용하는 경우 {{Environment_Variable_Name}} 을 사용합니다. 사전 요청 스크립트 또는 테스트 섹션의 경우 pm.environment.get("Environment_Variable_Name") 을 사용합니다.
요청
2. 요청 방법
요청의 HTTP 메소드를 선택합니다. SAS REST API에서 일반적으로 GET, POST 및 DELETE를 사용합니다. SAS REST API 요청에 필수입니다.
3. 요청 URL
SAS REST API documentation를 기반으로 요청 URL을 입력합니다. SAS REST API 요청에 필수입니다.
4. 매개변수
경로 및 쿼리 매개변수를 보내는 데 사용합니다. 요청 URL에서 다음에 오는 항목입니다. 일반적으로 SAS REST API 요청에 선택사항입니다.
5. 승인
유형 승인을 선택하여 적절한 정보를 제공합니다. 대개 SAS REST API 요청에 필수이며 대부분의 SAS REST API 요청에 대해 Bearer 토큰 유형을 사용하고 Access 토큰을 제공합니다.
6. 헤더
요청 작업을 수행하는 데 필요한 추가 메타데이터를 제공합니다. 일반적으로 SAS REST API 요청에 필수입니다.
7. 바디
요청과 함께 보내야 하는 데이터를 입력합니다. 일반적으로 SAS REST API 요청에 필수입니다.
8. 사전 요청 스크립트
요청 실행 전 실행할 JavaScript 코드를 작성합니다. 이는 변수 값 설정과 같은 필요한 전처리를 수행하는 데 사용할 수 있습니다. SAS REST API 요청의 경우 선택사항입니다.
9. 테스트
요청이 실행된 후 실행할 JavaScript 코드를 작성합니다. 응답 데이터의 시각화와 같은 필요한 모든 후처리를 수행하는 데 사용할 수 있습니다. SAS REST API 요청의 경우 선택사항입니다.
응답
요청에 대한 Send 버튼을 클릭하면 요청에 대한 응답이 화면 하단에 표시됩니다.
10. 상태
요청에서 응답의 상태 코드를 반환합니다. 일반적으로 상태 코드 200은 OK(성공) 응답에 해당합니다. 특정 SAS REST API 요청에 대한 응답 코드는 해당 문서를 통해 확인하실 수 있습니다.
11. Pretty
이 모드는 더 쉽게 볼 수 있도록 응답 형식을 지정합니다.
12. Raw
이 모드에는 서식이 없는 응답 텍스트가 포함됩니다.
13. 미리보기
이 모드는 샌드박스 처리된 iframe에서 응답을 렌더링합니다.
14. 시각화
요청의 응답에 대해 코딩된 시각화를 볼 수 있습니다. 참고: 이러한 응답 시각화를 위해서 Postman 7.11 이상이 필요합니다. API 응답 시각화에 대한 자세한 내용은 Postman 문서를 통해 확인하실 수 있습니다.
이전에 Postman을 사용한 경험이 있는 경우, 대부분 친숙한 용어라 짐작됩니다. 만약 처음 사용하여 재사용이 가능한 Postman 요청 컬렉션을 구축하는 데 도움이 되는 구성 요소는 다음과 같습니다.
환경 변수
사전 요청 스크립트
테스트
시각화
태그 검색 포스트 컬렉션 예제
Search Tags Postman Collection은 다음 세 가지 요청으로 구성됩니다.
Register_Client_ID_and_Get_Access_Token
Search_Tags
Delete_Client_ID
및 관련 환경 변수
환경 변수
이 컬렉션은 GEL_Shared-SearchTags 환경 변수를 사용합니다. 경우에 따라 환경 변수 설정을 확인 및 변경합니다.
시스템 변수
참고: 기본값은 GEL Viya 3.5 Shared Image RACE Collection에서 작동하도록 설정되어 있습니다.
postman_version: 사용 중인 Postman의 버전 번호(예: 7.25.0). Postman 애플리케이션 메뉴에서 파일 > 설정 > 정보를 선택하여 확인할 수 있습니다
client_id: 생성 중인 토큰을 식별하는 데 사용하는 값입니다. 참고: 다른 사람이 공유 이미지에서 데모를 실행 중인 경우 이 값을 변경해야 할 수 있습니다
secret_word: 제공된 client_id의 비밀번호입니다
viya_server_host: Viya 서버의 호스트 이름 또는 IP 주소 (예: sasviya01.race.sas.com)
token: 관리자는 /opt/sas/viya/config/etc/SASSecurityCertificateFramework/tokens/consul/default/에 있는 client.token 파일에서 이 값을 가져올 수 있습니다.
viya_username: SAS Viya에 액세스할 수 있는 사용자 이름
viya_password: viya_username의 비밀번호
요청 변수
다른 태그 이름을 검색하려면 이 변수를 바꿉니다.
tag_name: 이 태그 이름을 가진 항목 검색
요청
이 Postman 컬렉션에는 특정 태그 이름이 있는 항목에 대한 검색을 수행하기 위한 일련의 요청이 포함되어 있습니다.
Register_Client_ID_and_Get_Access_Token
이 요청은 Client_ID를 등록하고 Viya 및 CAS REST API 호출에 대한 액세스 토큰을 얻기 위한 일련의 REST API 호출입니다. Viya 또는 CAS REST API 호출을 위해 필요합니다. 자세한 내용은 SAS REST APIs: Authentication & Authorization documentation.을 통해 확인하실 수 있습니다.
사전 요청 스크립트 탭에서 액세스 토큰 가져오기를 수행하여 클라이언트 만들기를 수행합니다. access_token의 임시 환경 변수도 이 탭에서 설정합니다.
클라이언트 만들기 요청을 기본 요청으로 수행합니다. 승인은 임시 저장된 환경 변수인 access_token을 Bearer 토큰 유형과 함께 사용합니다. 이 요청에 대해 적절한 헤더 및 바디도 설정합니다.
테스트 탭에서 비밀번호를 사용하여 액세스 권한 부여를 수행합니다. 이 요청을 수행하려면 기본 인증을 위해 base-64로 인코딩된 client_id 및 secret_word가 전송되어야 하므로 이를 수행하여 해당값으로 my_encoded_cs의 환경 변수를 일시적으로 설정하는 데 사용되는 코드가 있습니다. 이 탭에서 access_token의 임시 환경 변수가 리셋됩니다. 이 값은 인증에 대한 후속 요청에서 사용됩니다. 또한 받은 응답 코드에 따라 Visualize 응답 탭의 텍스트를 설정하는 시각화 코드가 있습니다.
다음은 Register_Client_ID_and_Get_Access_Token 요청을 실행한 Pretty 응답입니다.
다음은 Register_Client_ID_and_Get_Access_Token 요청 실행의 Visualize 응답입니다.
Search_Tags
이 요청은 특정 태그 이름을 가진 항목을 검색하기 위한 일련의 REST API 호출입니다. 예제에서는 tag_name 환경 변수는 Individual로 설정되어 있습니다.
사전 요청 스크립트 탭에서 태그 이름 요청에 대한 모든 주석 가져오기 필터링을 합니다. 임시 변수 annotation_id는 이 요청의 응답을 기반으로 설정됩니다. 제공된 tag_name이 존재하지 않으면 Visualize 응답 탭의 output_text가 '태그 이름이 존재하지 않음'으로 설정됩니다.
주석 요청에 대한 구성원 개체 가져오기를 합니다. 참고: 요청은 지정된 태그 이름을 가진 모든 항목이 요청에 의해 반환되도록 하기 위해 매개변수에서 1000000 제한을 걸도록 설정되어 있습니다. 승인은 임시 저장된 환경 변수인 access_token을 Bearer 토큰 유형를 동시에 사용합니다. 이 요청에 대해 적절한 헤더 정보도 설정됩니다. 참고: 이 요청에는 바디 정보가 필요하지 않습니다.
테스트 탭의 시각화 도우미 코드는 수신된 응답 코드를 기반으로 응답 시각화 탭의 텍스트를 설정합니다. 기본 요청에서 반환된 행이 없으면 Visualize 응답 탭의 output_text가 '제공된 태그 이름으로 태그가 지정된 항목 없음'으로 설정됩니다. 그렇지 않으면 제공된 tag_name이 있는 항목의 응답을 표시하도록 HTML 테이블이 작성됩니다.
다음은 Search_Tags 요청을 실행한 Pretty 응답입니다.
다음은 Search_Tags 요청을 실행한 Visualize 응답입니다.
Delete_Client_ID
이 요청은 Viya 및 CAS REST API 호출에 대해 설정된 Client_ID를 삭제하기 위한 일련의 REST API 호출입니다. 인증 및 권한 부여 프로세스를 정리하고 Client_ID를 나중에 다시 사용할 수 있게 합니다.
사전 요청 스크립트 탭에서 클라이언트 자격 증명을 사용하여 액세스 권한 부여 요청을 합니다. 참고: 이는 클라이언트를 삭제할 수 있도록 적절한 자격 증명이 부여되었는지 확인하기 위한 임시 권한입니다. 새로운 임시 access_token 변수는 요청 응답에 따라 저장됩니다.
클라이언트 삭제 요청을 수행합니다. 승인은 임시 저장된 환경 변수인 access_token을 Bearer 토큰 유형을 동시에 사용합니다. 참고: 이 요청에는 헤더 및 바디 정보가 필요하지 않습니다.
테스트 탭의 시각화 도우미 코드는 수신된 응답 코드를 기반으로 응답 시각화 탭의 텍스트를 설정합니다. 참고: Delete Client 요청은 성공을 뜻하는 200 응답 대신 Client_ID를 찾을 수 없다는 상태를 나타내는 코드 404를 보여줍니다. 또한 환경 변수 access_token 및 my_encoded_cs가 삭제됩니다.
다음은 Delete_Client_ID 요청을 실행한 pPretty 응답입니다. 참고: 404 Not Found는 Client_ID가 삭제되었거나 찾을 수 없는 경우 받게 되는 응답입니다.
다음은 Delete_Client_ID 요청을 실행한 Visualize 응답입니다.
요약
결론적으로 Postman 컬렉션을 생성해 환경 변수, 사전 요청 및 테스트를 사용하는 것은 요청을 그룹화하고 서로 다른 환경에서도 빈번히 재사용할 수 있도록 만드는 효과적인 방법입니다.
Postman에 대한 자세한 내용은 해당 문서를 통해 확인하실 수 있습니다. SAS Viya REST API에 대한 자세한 내용은 해당 문서를 통해 확인하실 수 있습니다.
참고문헌
Joe Furbee의 웹 세미나: Using SAS APIs
Postman documentation
감사 말씀
귀감이 되는 webinar를 제공해주신 Joe Furbee(@joeFurbee)님 Postman의 기능에 대해 자세한 설명 및 SAS REST API 사용법에 도움을 주셔서 감사합니다.
... View more
Labels:
04-13-2022
01:08 AM
Azure Databricks는 데이터 분석 사용자를 위해 Databricks와 Microsoft가 공동으로 개발한 데이터 및 AI 서비스입니다. Azure Databricks는 Azure 데이터 레이크에 최적화되어 있으며 환경을 설정하고 데이터 사이언티스트 간 협업이 가능한 대화형 작업 영역을 제공합니다. Azure Databricks는 SPARK 엔진을 사용하여 데이터를 처리합니다. Azure Databricks란 무엇입니까?
SAS 9.4 사용자는 JDBC 드라이버를 사용하여 Azure Databricks 작업 영역 및 데이터 테이블에 액세스할 수 있습니다. 현재 Databricks 데이터베이스에 대한 전용 SAS/ACCESS 인터페이스는 존재하지 않습니다. Databricks를 위한 새로운 SAS/ACCESS 엔진은 8월 혹은 9월에 출시 예정입니다. 출시 전까지는 SAS/ACCESS to JDBC 인터페이스를 사용하여 Azure Databricks 데이터 테이블에 액세스할 수 있습니다. JDBC 액세스 엔진을 사용하여 Azure Databricks에서 데이터를 읽을 수만 있습니다. 이 포스팅은 SAS 9.4 환경에서 Azure Databricks 데이터 테이블에 액세스하는 방법을 소개합니다.
전제 조건
SAS Compute 서버에서 JDBC에 대한 SAS/ACCESS 인터페이스
SAS Compute 서버에서 사용 가능한 JDBC Jar 파일
Azure Databricks Workspace의 액세스 토큰
SPARK 클러스터 JDBC URL 정보
스토리지 계정 ADLS2에 액세스하도록 구성된 SPARK 클러스터
SPARK 데이터 프레임을 테이블로 저장하여 SAS 애플리케이션과 공유
데이터 액세스 경로
다음은 Azure Databricks 데이터베이스 테이블에 대한 SAS 9.4 환경 액세스를 설명합니다.
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
Azure Databricks 작업 영역 설정
Azure Databricks에서 데이터 테이블에 액세스하려면 먼저 Azure Databricks 작업 영역이 이미 있거나 생성해야 합니다. Databricks 작업 영역은 외부 응용 프로그램이 Databricks의 개체 및 데이터에 액세스할 수 있는 진입점입니다. 타사 애플리케이션에서 SPARK 클러스터에 연결하려면 Databricks 작업 영역 자격 증명이 필요합니다.
다음 화면에서는 SPARK 클러스터에 액세스하기 위한 Azure Databricks Workspace 및 사용자 자격 증명을 설명합니다.
작업 영역의 Azure Databricks SPARK 클러스터
Databricks 작업 영역이 있다면 SPARK 클러스터를 만들어 Azure 스토리지에서 수집한 데이터를 처리할 수 있습니다. 다음은 Azure Databricks Workspace에서 SPARK 클러스터를 만드는 방법을 설명합니다.
Azure Databricks SPARK 클러스터 연결 정보는 클러스터 구성 탭에서 확인하실 수 있습니다.
Azure Databricks JDBC 드라이버
타사 응용 프로그램은 JDBC 드라이버를 사용하여 Databricks 테이블에 액세스할 수 있습니다. JDBC 드라이버 하단 링크를 통해 다운로드 하실 수 있습니다.
Databricks JDBC Driver 다운로드
Azure Databricks SPARK 클러스터로 데이터 수집
Azure Databricks 작업 영역에 SPARK 클러스터가 있다면 ADLS2 스토리지 또는 Databricks 파일 시스템 파일에서 SPARK 클러스터로 데이터를 수집할 수 있습니다. Databricks 작업 영역에는 SPARK 클러스터와 상호 작용하기 위해 Python 코드를 실행하는 Notebook 편집기가 있습니다. 다음 Python 명령은 JSON 파일의 데이터를 SAPRK 클러스터로 수집하고 SPARK 데이터 프레임의 데이터를 표시합니다.
파이썬 코드:
#Read a sample data file (iot_devices.json) from Databricks DBFS location.
df = spark.read.json("dbfs:/databricks-datasets/iot/iot_devices.json")
#Create temporary view on Spark Data Frame "DF"
df.createOrReplaceTempView('source')
#Display top 10 ros from the source file.
print('Displaying top 10 rows: ')
display(spark.sql('SELECT * FROM source LIMIT 10'))
외부 응용 프로그램에서 데이터에 액세스하려면 먼저 SPARK 데이터 프레임을 Databricks 테이블로 작성해야 합니다. Python 명령 및 스크린샷은 Databricks 테이블에 기록되어 외부 응용 프로그램에 사용할 수 있는 데이터를 설명합니다.
파이썬 코드:
#Write a parmanent table to share with other users and application.
permanent_table_name = "iot_device"df.write.format("parquet").
saveAsTable(permanent_table_name)
SAS 9.4에서 Azure Databricks 테이블에 액세스
Azure Databricks Workspace, SPARK 클러스터, 데이터베이스 테이블 및 JDBC 드라이버가 있는 경우 다음 코드를 사용하여 Azure Databricks 테이블에서 데이터를 읽을 수 있습니다. Azure Databricks Workspace 토큰(키)은 환경에 인증하기 위한 암호로 사용됩니다.
암호:
options sastrace=',,,d' sastraceloc=saslog ;
/* Note : variable value in quotes generate errors, So keep it without quotes.
*/%let MYDBRICKS=adb-7060859955656306.6.azuredatabricks.net;
%let MYPWD=dapiaa66843abadb51775a9dd7858d6980aa-2;
%let MYHTTPPATH=sql/protocolv1/o/7060859955656306/0210-155120-shop163;
%let MYUID=token;
libname dbricks jdbc driverclass="com.simba.spark.jdbc.Driver" url="jdbc:spark://&MYDBRICKS:443/default;transportMode=http;ssl=1;httpPath=&MYHTTPPATH;AuthMech=3;UID=&MYUID;PWD=&MYPWD" classpath="/mnt/myazurevol/config/access-clients/JDBC/" schema="default" ;
Proc SQL outobs=20;;
select * from dbricks.iot_device ;
run;
quit;
로그 추출:
.....
..............
78
79 options sastrace=',,,d' sastraceloc=saslog ;
80
81 /* Note : variable value in quotes generate errors, So keep it without quotes. */
82 %let MYDBRICKS=adb-7060859955656306.6.azuredatabricks.net;
83 %let MYPWD=dapiaa66843abadb51775a9dd7858d6980aa-2;
84 %let MYHTTPPATH=sql/protocolv1/o/7060859955656306/0210-155120-shop163;
85
86 %let MYUID=token;
87
88
89 libname dbricks jdbc driverclass="com.simba.spark.jdbc.Driver"
90 url="jdbc:spark://&MYDBRICKS:443/default;transportMode=http;ssl=1;httpPath=&MYHTTPPATH;AuthMech=3;UID=&MYUID;PWD=&MYPWD"
91 classpath="/mnt/myazurevol/config/access-clients/JDBC/"
92 schema="default" ;
NOTE: Libref DBRICKS was successfully assigned as follows:
Engine: JDBC
Physical Name:
jdbc:spark://adb-7060859955656306.6.azuredatabricks.net:443/default;transportMode=http;ssl=1;httpPath=sql/protocolv1/o/7060859
955656306/0210-155120-shop163;AuthMech=3;UID=token;PWD=dapiaa66843abadb51775a9dd7858d6980aa-2
93
94
95
96 Proc SQL outobs=20;
96 ! ;
97 select * from dbricks.iot_device ;
24 1612975267 no_name 0 SQL
JDBC_1: Prepared: on connection 0 25 1612975267 no_name 0 SQL
SELECT * FROM default.IOT_DEVICE WHERE 0=1 26 1612975267 no_name 0 SQL
27 1612975267 no_name 0 SQL
28 1612975267 no_name 0 SQL
JDBC_2: Executed: on connection 0 29 1612975267 no_name 0 SQL
SELECT * FROM default.IOT_DEVICE 30 1612975267 no_name 0 SQL
31 1612975267 no_name 0 SQL
WARNING: Statement terminated early due to OUTOBS=20 option.
98 run;
NOTE: PROC SQL statements are executed immediately; The RUN statement has no effect.
99 quit;
..........
.................
결과 출력:
필독: What is Azure Databricks ?
이곳에서 SAS Global Enablement and Learning에서 더 많은 기사를 찾아보실 수 있습니다.
... View more
Labels:
04-06-2022
02:59 AM
SAS 9.4에서 EG(Enterprise Guide)는 다양한 SAS 관련 작업을 위한 평판이 매우 좋은 도구입니다. EG는 데이터 준비, 데이터 분석, 분석, 보고와 더불어 SAS 코드를 기반으로 하는 거의 모든 작업에 널리 사용됩니다. 이번 포스팅에서는 SAS 9.4 EG 프로젝트를 SAS Viya 4로 마이그레이션하는 방법을 살펴보겠습니다. EG 프로젝트는 SAS Studio Flow로 원활이 마이그레이션됩니다.
지원 범위
안정적인 SAS Viya 2020.1.4 버전은 EG 프로젝트 마이그레이션을 지원하는 첫 번째 버전입니다. 훌륭한 수준으로 지원 되는 적용 범위는 다음과 같습니다.
EG 프로젝트에서 SAS Studio Flow로 호환
Enterprise Guide 7 이상에서 생성된 프로젝트 호환
EG 프로젝트는 하나 이상의 Process Flow를 포함할 수 있습니다. 각 Process Flow는 일련의 작업으로 구성됩니다. 만약 여러 Process Flow가 포함된 경우 불러오는 도중 Viya 폴더가 생성되고 각 플로우는 폴더의 SAS Studio Flow로 마이그레이션됩니다. 각 EG 프로젝트는 SAS Studio Flow Code Step으로 마이그레이션됩니다.
컨텐츠 평가
SAS 9 Content Assessment는 EG 프로젝트의 마이그레이션에 도움을 줍니다. SAS Enterprise Guide용 SAS 9 Profile은 SAS 9 환경에서 SAS Enterprise Guide 프로젝트를 식별하도록 돕습니다. 보고서는 Enterprise Guide 프로젝트의 파일 시스템 구성 및 시간 기반 사용 패턴이을 포함하고 있습니다.
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
SAS 9 Code Check for EG Projects는 EG 프로젝트의 어떤 코드가 SAS Viya로 마이그레이션이 가능한 대상인지 파악하도록 돕습니다. SAS 9 Code Check는 .sas 파일을 인식하며 S SAS 코드에 저장된 SAS 9 메타데이터를 수집하거나 Enterprise Guide 프로젝트에 포함된 SAS 9 Gather SAS Code 응용 프로그램의 결과를 확인합니다. SAS 9 Code Check for EG Projects를 사용하면 SAS Viya 환경에서 작동할 것으로 예상되는 코드를 이해함으로써 SAS 9 시스템을 스캔하고, 결과를 검토하고, 마이그레이션 계획을 세울 수 있습니다.
보고서 내 호환 가능한 SAS Enterprise Guide 프로젝트 테이블을 활용하여 호환 가능한 프로젝트의 전체 가져오기를 실행할 수 있는 csv(쉼표로 구분된 값 파일) 파일 형식으로 내보낼 수 있습니다. 자세한 것은 나중에 설명하기로 합니다.
불러오기
EG 프로젝트는 가장 일반적인 파일 시스템 또는 메타데이터에 존재합니다. 각 위치에서 EG 프로젝트를 불러올 수 있습니다. 불러오기 방법은 다음과 같습니다:
메타데이터에 저장된 EG 프로젝트는 다른 SAS 9.4 콘텐츠와 마찬가지로 먼저 9.4 패키지(.spk) 파일로 내보낸 다음 Viya로 가져옵니다.
개별 프로젝트(.egp 파일)는 SAS Environment Manager의 가져오기 인터페이스 또는 sas-viya CLI의 전송 플러그인을 사용하여 .egp 파일을 가져옵니다.
여러 프로젝트(.egp 파일)는 SAS 9 Content Assessment와 함께 제공되는 importEGProjectsapplication을 사용합니다.
importEGProjects 애플리케이션을 사용하는 경우 가져올 프로젝트를 지정하는 두 가지 방법이 있습니다.
폴더 경로 사용
--source-location을 사용하여 SAS Enterprise Guide 프로젝트가 포함된 디렉터리의 경로를 지정합니다.
./importEGProjects.exe --sas-viya-path "D:\\ViyaHome\\CLI\\sas-viya.exe" --source-location "D:\workshop\gelcorp\finance\projects"
csv 파일 사용
가져올 SAS Enterprise Guide 프로젝트 목록이 포함된 CSV 파일의 확실한 경로를 지정하려면 --source-file을 사용합니다. CSV 파일에는 호환 가능한 프로젝트 목록이 포함되어 있으며 이는 EG 코드 검사 보고서의 계획 단계에서 생성됩니다.
일괄적으로 프로젝트를 가져올 때 프로젝트의 루트 폴더를 선택 지정할 수 있습니다(기본값은 (SAS Content > ConvertedEGProjects). 해당 폴더 하위에는 소스 파일 시스템에 있던 프로젝트의 전체 경로가 Viya 폴더에 생성됩니다. 프로젝트에 여러 Process Flow가 포함된 경우에는 각 Process Flow에 대한 SAS Studio Flow를 포함한 폴더가 해당 프로젝트 이름으로 생성됩니다.
SAS Studio Flow
컨텐츠 마이그레이션 분야의 경우 상황이 빠르게 변화하고 있습니다. EG 마이그레이션의 첫 번째 버전에서는 EG Process Flow의 각 작업은 SAS Studio Flow의 SAS Program Step으로 변환됩니다. SAS Program Step에는 EG 작업의 기능을 위한 SAS 코드가 포함되어 있습니다.
향후 개발에서는 쿼리 빌더 작업에서 쿼리 스텝으로 변동과 같은 동일한 범주내 기능으로 나뉜 작업별 마이그레이션 지원을 추가할 예정입니다. 특정 Enterprise Guide 작업에 대한 자세한 내용은 Viya Administration guide를 통해서 확인하실 수 있습니다. 해당 문서에는 다음과 같은 것들이 포함되어 있습니다:
Viya에서 업데이트 라이브러리 메타데이터와 같은 기능 부재로 인한 지원이 어려운 경우
결과 프로그램 단계의 수동 업데이트가 필요한경우 예: 데이터 세트에서 형식 생성
플로우가 어려운 환경에서는 로그 및 Environment Manager UI에 기록됩니다.
추가 단계
코드, 데이터 파일, SAS 데이터셋과 같이 EG 프로젝트에 필요한 리소스는 적절한 Viya 환경에서 액세스가 가능해야 합니다. SAS Studio Flows로 마이그레이션된 EG 프로젝트의 데이터는 Viya 컴퓨팅 서버에서도 정상 작동해야 합니다. 이를 위해서SAS Studio 컴퓨팅 컨텍스트 시작에 libname 명령을 추가하는 것이 바람직합니다. 자세한 방법은 Modifying Server Startup Configuration in SAS Viya을 통해 확인하실 수 있습니다. Content Assessment 보고서는 프로젝트가 SAS Viya 내 다른 위치에 있는 파일 시스템 리소스에 액세스하는 방법을 안내합니다.
확인 테스트
Enterprise Guide 마이그레이션 요약 보고서의 또 다른 새로운 기능은 SAS Viya에서 SAS 9 Enterprise Guide 프로젝트를 SAS Studio Flows로 마이그레이션한 결과를 지원합니다. 결과는 SAS Studio Flows의 결과 단계에 어떠한 주의가 필요한지를 나타내는 EG 프로젝트의 각 노드에 사용할 수 있습니다. 보고서는 Content Assessment Applications과 함께 제공되며 관련 데이터는 전송 CLI에서 검색할 수 있습니다. SAS Viya cli의 전송 플러그인을 사용하여 Import History CSV 파일을 생성할 수 있습니다.
sas-viya transfer import-history --all -f /tmp/importHist.csv
CSV 파일을 SystemData Caslib로 가져오기
sas-viya cas tables import csv --server cas-shared-default --caslib SystemData --contains-header-row --scan-rows 99999 --replace --force --table ImportedItems --source-file /tmp/importHist.csv --su
보고서는 SAS Content > Products > SAS Environment Manager > Dashboard Items > Enterprise Guide Migration Summa에 저장됩습니다. 주요 정보는 다음과 같습니다.
프로젝트별 불러오기
프로젝트 내 단계의 마이그레이션 상태
단계 유형 및 불러오기 사용자별 요약
이것은 EG 프로젝트 마이그레이션을 지원하는 첫 번째 버전입니다. 컨텐츠 마이그레이션 기능은 매 버전 마다 개선되고 있습니다. 향후 몇 달 안에 새롭게 추가된 훌륭한 기능을 포함할 것으로 보입니다.
더 보기:
A first look at Migration from SAS 9.4 to SAS Viya
SAS Help Center: SAS 9 Content Assessment
SAS Help Center: SAS Viya: Content Migration from SAS 9.4
SAS Help Center: SAS Studio Working with Flows
이 포스팅에 도움을 주신 Christiana Lycan, Gary Mehler, Amy Peters, Brian Johnson and Scott McCauley. 에게 감사의 말씀을 전하고 싶습니다.
이곳에서 SAS Global Enablement and Learning에서 더 많은 기사를 찾아보실 수 있습니다.
... View more
Labels:
03-29-2022
04:43 AM
우리는 제조에서 자동차, 금융업에서 소매, 스마트 도시에서 의료에 이르기까지 다양한 산업의 엣지 디바이스에서 페타바이트 규모의 데이터가 생성되는 시대에 살고 있습니다. 기업은 사물 인터넷(IoT) 실시간 분석을 사용하여 데이터에서 가치를 도출함으로써 혁신을 도모하며 총 비용을 최소화하며 경쟁력을 유지할 수 있는 방법을 지속적으로 찾고 있습니다. IoT는 우리가 비즈니스를 수행하는 방식에 대한 근본적인 재고를 요구하며 올바른 디지털 인프라와 운영 전략을 사용하는 데 영향을 미치고, 최고의 애플리케이션 세트를 사용하여 빠르고 분석적인 통찰력을 제공합니다. 기업은 데이터를 활용하여 비즈니스 효율성과 최적화를 높이고 고객 만족도를 높이며 시장에서 차별화되는 새로운 서비스 및 기타 가치 제안에 투자하는 엄청난 가치를 목격하고 있습니다. 물론 기업이 전통적인 비즈니스 모델에서 데이터 중심의 사업 체계로 이동해 나아가는 것은 쉽지 않게 느껴지더라도 분명 도전할 만한 가치가 있습니다. 강력한 기능을 만들어내며 최상의 결정을 내리고 다른 대안으로는 발견하지 못했을 기회를 선사합니다.
SAS는 IoT, 인공 지능(AI) 및 머신 러닝(ML) 분야의 끊임없는 혁신을 이뤄내며 고급 예측 분석 소프트웨어 솔루션의 선구자로서 기업이 데이터에서 발견, 배포에 이르는 분석의 전체 수명 주기를 포괄하는 혁신적인 결과를 달성할 수 있도록 지원합니다. SAS Analytics와 Microsoft Azure를 통합하면 타의 추종을 불허하는 클라우드 네이티브 기능, 고급 대규모 인프라에 대한 온디맨드 액세스, 보장된 고성능, 엣지-클라우드 및 클라우드-엣지 통신을 위한 다양한 통합 관리형 서비스 및 향상된 가시성 및 보안 및 규정관리 대한 설명 등을 제공합니다.
고장난명
SAS와 Microsoft Azure는 이상적인 엣지-클라우드 IoT 실시간 스트리밍 분석 플랫폼을 제공하여 IoT 데이터를 활용하고 엣지, 게이트웨이 또는 클라우드에서 바로 분석을 수행합니다. 이들은 엣지 디바이스에 연결하기 위해 엔드투엔드 확장이 가능하고 강력한 플랫폼을 제공합니다. IoT 데이터를 준비, 정리 및 관리합니다. 가치 있는 인사이트를 얻어 지능적인 결정을 내리기 위해 온디멘드 컴퓨팅으로 분석 모델을 개발 및 배포합니다. 기업이 데이터를 비즈니스 자산으로 수익화하고 Microsoft Azure 클라우드에서 실행되는 중앙 관리 분석을 활용할 수 있는 엄청난 잠재력을 선보입니다.
엣지 투 클라우드 IoT 실시간 스트리밍 분석
그림 1은 Azure Edge 스트리밍 데이터에서 Azure에 배포된 SAS 스트리밍 분석에 이르기까지 SAS 및 Microsoft Azure로 구동되는 엣지 투 클라우드 IoT 실시간 스트리밍 분석 파이프라인을 보여줍니다. 파이프라인은 세 가지 주요 목록(빌딩 블록)과 각 기능을 설명합니다.
<그림 1: SAS 및 Microsoft Azure를 기반으로 하는 엣지 투 클라우드 IoT 실시간 스트리밍 분석 파이프라인>
1. Edge Analytics: 다양한 엣지 디바이스에서 데이터 수집, 엣지 내 분석, 클라우드 게이트웨이를 통한 클라우드 연결을 통해 스트리밍 데이터를 전송
2. 클라우드 분석: 엣지를 통해 수신한 스트리밍 데이터 수집, 스트리밍 및 저장 데이터를 사용하여 실시간 스트리밍 분석 수행, 클라우드 네이티브 서비스 활용
3. 조치: 소비자가 데이터 기반 통찰력을 제공하고 필요한 작업을 수행할 수 있도록 비즈니스 애플리케이션을 보호
이 세 가지 사안과 관련된 SAS 및 Microsoft Azure의 다양한 구성 요소에 대해 소개합니다.
Edge Analytics
엣지 디바이스의 수천 개에 달하는 센서가 모든 단일 시점에서 데이터 및 이벤트를 생성하고 있습니다. Edge Analytics는 이벤트가 발생하는 즉시 처리 및 조치를 취할 수 있도록 합니다. 웨어러블 디바이스, 스마트 차량, 카메라 등과 같은 다양한 엣지 디바이스에는 컴퓨팅 리소스가 장착되어 있지만 일부 엣지 디바이스는 연결된 엣지 게이트웨이로 데이터를 전송해야 합니다. 엣지 게이트웨이는 모든 엣지 디바이스의 허브로 간주됩니다. 엣지 게이트웨이는 엣지에 관한 통신 및 보안을 관리합니다. 엣지 게이트웨이를 통한 통신으로 엣지 디바이스의 보안 노출을 줄일 수 있습니다. 엣지 게이트웨이는 또한 엣지와 클라우드 리소스 간의 간헐적인 연결을 관리합니다. SAS ESP(Event Stream Processing)는 엣지 디바이스와 엣지 게이트웨이 모두에 배포되여 실시간으로 업무를 처리합니다. Azure는 다양한 게이트웨이 프로토콜을 사용하여 디바이스 연결을 지원하는 강력한 IoT Edge 플랫폼을 제공합니다.
엣지-투-클라우드 IoT 실시간 스트리밍 분석의 상위 수준 참조 아키텍처 내 Edge Analytics 블록은 그림 2과 같습니다.
엣지 내 SAS ESP(Event Stream Processing)
SAS Event Stream Processing (ESP)는 실시간 스트리밍 분석을 수행하여 엣지와 클라우드에서 귀중한 인사이트를 발굴하여 실시간으로 지능적인 결정을 내립니다. 짧은 대기 시간으로 초당 수백만 개의 이벤트를 대량으로 처리할 수 있습니다. SAS ESP는 클라우드 및 엣지와 완전히 통합되어 대용량, 속도 및 다양한 스트리밍 데이터를 처리하고 몇 초 만에 우수한 결정을 내리는 강력한 실시간 스트리밍 분석 솔루션입니다. 엣지에서 분석 및 머신러닝 모델을 실행할 수 있는 기능을 제공하므로 대역폭 비용을 줄이고 모든 이벤트를 클라우드로 스트리밍하는 것을 방지하며 더욱 빠른 의사 결정을 내릴 수 있습니다. 분석 및 머신러닝 모델은 클라우드에서 관리되고 Azure IoT Hub를 통해 엣지로 푸시됩니다. SAS ESP Edge는 다양한 엣지 디바이스에서 이벤트를 가져오기 위해 필요한 모든 라이브러리, 바이너리 종속성, 플러그인, 커넥터 및 어댑터와 함께 컨테이너에 배포됩니다.
Azure IoT Edge
간단히 말해서 Azure IoT Edge는 클라우드로 전송되기 전에 데이터를 연결하고 스트리밍하는 IoT 엣지 게이트웨이의 엣지 컴퓨팅 성능을 활용하는 솔루션을 구축하는 기술입니다. 클라우드의 엣지 디바이스 및 Azure IoT Hub와의 양방향 통신을 위해 설계되었습니다. Docker와 함께 엣지 게이트웨이에 설치되는 IoT Edge Runtime으로 구성되어 있습니다. Azure Services 및 타사 서비스를 실행하는 컨테이너인 IoT Edge 모듈을 실행하기 위해 docker를 활용하며, 여기에서 SAS ESP Edge 또한 docker 컨테이너에서 실행됩니다. IoT Edge 모듈이 최신 상태로 정상 작동 중이며 클라우드와의 통신이 원활하게 이루어지도록 합니다. IoT Edge Runtime은 디바이스 관리, 자동 프로비저닝, 자동 배포 및 통신 작업을 위해 Azure IoT Hub와 연결됩니다. IoT 엣지 디바이스와 클라우드의 가교 역할을 합니다.
<그림 2: IoT 실시간 스트리밍 분석의 상위 수준 참조 아키텍처>
클라우드 분석
Cloud Analytics는 클라우드 지원 IoT를 위한 공간입니다. Azure는 SAS 고급 분석을 실행하여 대량의 이벤트를 처리하며 저장 및 데이터 관리를 수행하고, 모니터링 및 시각화가 가능한 플랫폼을 제공합니다. 그림 2에서 볼 수 있듯이, 클라우드 분석 블록 아키텍처에는 다음을 포함하고 있습니다.
1. Azure IoT 허브
2. 스트리밍 수집
3. SAS ESP(Event Stream Processing)를 통한 실시간 스트림 처리
1. Azure IoT 허브
Azure IoT Hub는 IoT 엣지 디바이스, 엣지 게이트웨이, 클라우드에서 실행되는 서비스 및 애플리케이션 간에 안정적이며 안전한 씽방향 통신을 제공하는 확장 가능한 관리형 클라우드 서비스입니다. 엣지에 엣지 게이트웨이가 장착되어 있는 것과 같은 역할을 합니다. IoT Hub는 클라우드에서 보안 및 통신 관리를 하기 위해 Edge의 모든 통신을 위한 브로커 역할을 합니다.
IoT Hub는 클라우드에서 디바이스를 제어하며 디바이스 상태를 모니터링하기 위해 다양한 메시징 패턴을 지원합니다. 모든 디바이스를 IoT Hub에 연결할 수 있습니다. 그 중 일부 기능은 다음과 같습니다.
1.확장성: IoT Hub는 초당 수백만 건의 IoT 워크로드를 지원하고 처리할 수 있도록 확장
2.고가용성: 99.9% SLA(Service Level Agreement) 보장 제공
3.보안 통신: 디바이스별 토큰 기반 인증 또는 X.509 인증서를 사용하여 디바이스를 IoT Hub에 안전히 연결
4.라우팅: 별도의 추가 비용 없이 여러 엔드포인트로 기본 제공되는 노 코드 규칙 기반 메시지 라우팅
5.다른 서비스와의 통합: Event Hub, Machine Learning, Event Grid 등과 같은 Azure 서비스와의 원활한 통합
6.디바이스 구성 및 모니터링: 디바이스의 메타데이터 및 상태 정보를 저장하고 쿼리하며 디바이스 구성 및 연결 및 메시지 라우팅 모니터링
7.언어 지원: 다양한 언어 및 플랫폼을 지원하는 라이브러리 포함
8.연결 디바이스 프로토콜 지원: HTTPS, AMQP, WebSocket을 통한 AMQP, MQTT, WebSocket을 통한 MQTT 및 Azure IoT Edge 및 Azure IoT 프로토콜 게이트웨이 등의 사용자 지정 프로토콜에 대한 옵션을 제공하며 device streams을 통해 다른 프로토콜에 프록시
2. 스트리밍 수집
스트리밍 수집의 경우 Azure IoT Hub는 다중 이벤트 스트림을 다음 중 하나로 전송하도록 구성됩니다.
1.Azure Event Hub 동적 파이프라인을 구축하기 위한 확장 가능하고 안정적이며 훌륭한 처리량을 가진 분산 실시간 데이터 수집 통합 관리형 서비스
2.Apache Kafka 완전 관리형 또는 원격 관리형 서비스
3 AKS(Azure Kubernetes Services) 클러스터에서 실행되는 SAS ESP 서버에 직접 연결
항상 SAS ESP는 pub/sub 커넥터를 통해 데이터를 수집합니다. 즉, IoT Hub, Event Hub 또는 Kafka에 연결하여 SAS ESP 서버 Kubernetes 포드로 이벤트를 전달합니다. ESP 커넥터를 사용하면 클라우드 리소스와의 기본 통합이 가능합니다. Azure IoT Hub, Azure Event Hub 및 Kafka는 대용량 스트리밍 이벤트를 SAS ESP 서버에 수집, 처리 및 배포합니다. 데이터 손실 없는 안정적인 전송 보장, 정확히 처리, 일일 테라바이트의 이벤트를 처리하도록 확장 및 축소되는 탄력적 클러스터로 고가용성을 제공합니다. 또한 주제, 파티션 및 소비자 그룹과 같은 주요 아키텍처 구성 요소는 SAS ESP 서버가 런타임에 자동 확장되도록 합니다.
3. SAS ESP(Event Stream Processing)를 통한 실시간 스트림 분석
SAS ESP(Event Stream Processing)를 Edge와 클라우드 모두에 배포할 수 있다는 것을 이미 유명합니다. 다양한 AI 혹은 ML 및 스트리밍 알고리즘을 완벽히 지원하여 엣지 및 클라우드 전반에 걸친 다단계 모델 배포 분석을 제공합니다. 개발을 위한 다양한 언어를 지원하는 시각적 인터페이스가 있는 유연하고 개방된 모델링 로우 코드 환경을 갖추고 있습니다.
SAS ESP는 클라우드에서 Kubernetes와 통합되며 탄력성, 유연성, 탄력성, 장애 조치를 통한 고가용성 및 기타 분산 서비스와 같은 클라우드 네이티브 서비스를 활용합니다. SAS ESP with Kubernetes repository는 즉시 사용 가능합니다. 이 아키텍처에서 SAS ESP 및 모든 웹 클라이언트는 통합 관리형 AKS(Azure Kubernetes Services) 클러스터에 배포됩니다. 멀티 테넌시는 Kubernetes 네임스페이스를 통해 이뤄지며 다중 사용자 계정 및 액세스의 경우 CloudFoundry User Account and Authentication (UAA) 또는 타사 도구를 구성할 수 있습니다. SAS ESP 패키지에는 UAA 배포가 디폴트로 포함됩니다.
<그림 3: SAS ESP 패키지 구성>
SAS ESP 패키지에는 AKS 클러스터에 배포된 구성을 포함하여 그림 3에 표시된 구성 요소가 포함되어 있습니다.
1.SAS ESP Operator는 SAS ESP 서버 포드의 오케스트레이터입니다. Kubernetes 클러스터에서 실행 중인 ESP 서버 포드를 시작, 중지, 업데이트, 삭제 등과 같은 작업을 합니다. 오픈 소스 Kubernetes Operator API를 사용하여 구축됩니다.
2.세 가지 그래픽 사용자 인터페이스 -
SAS Event Stream Processing Studio ESP 프로젝트 설계, 개발 및 테스트
SAS Event Stream Manager (ESM) 통합 ESP 프로젝트 배포 및 관리. SAS ESP Metering Server는 AKS 클러스터의 ESP 서버 포드에서 발생하는 모든 이벤트를 자동 기록. SAS ESM에서 액세스됨
SAS Streamviewer 맞춤형 대시보드를 통해 ESP 프로젝트를 통해 스트리밍되는 이벤트를 모니터링하고 시각화
모든 웹 기반 클라이언트는 Kubernetes 클러스터와 실행되는 ESP 서버 포드를 파악합니다. CPU 및 메모리 요구 사항과 같은 ESP 서버 포드의 배포 설정과 ESP 프로젝트의 영구 볼륨은 SAS ESP Studio 및 SAS ESM에서 구성할 수 있습니다. SAS ESM을 통해 각 ESP 프로젝트에 대한 자동 크기 조정 매개변수를 정의할 수 있습니다. 커맨드 라인에서 직접 해당 설정을 수정할 수 있습니다. 각 ESP 서버 Kubernetes 포드는 ESP 프로젝트를 하나만 단독 실행합니다.
Nginx Ingress Controller 및 Azure Load Balancer 는 신규 요청 트래픽을 Kubernetes 클러스터의 올바른 애플리케이션 포드로 쉽게 전달합니다.
SAS ESP는 AI 및 ML, 고급 분석, 비즈니스 인텔리전스 기능이 모두 포함된 확장 가능한 IoT 솔루션인 SAS Analytics for IoT (AIoT)와 상호작용합니다. 센서 데이터에 대한 유연한 데이터 모델을 제공합니다. 비즈니스 중심 데이터 선택 사용자 인터페이스를 통해 더 빠른 가치 창출을 위한 간소화된 ETL 작업과 더불어 저장 데이터와 스트리밍 데이터 모두에 대한 분석 모델을 등록, 수정, 추적, 배포, 스코어링, 통제, 모니터링 및 보고하기 위한 간소화된 모델 관리 및 실행을 하기도 하며 기타 SAS 솔루션, SAS Visual Analytics, SAS Visual Data Mining & Machine Learning, SAS Studio 및 쉼표로 구분된 파일용 런처와도 관련이 있으며, SAS 또는 타사 솔루션과 통합하기 위한 공용 API 등이 해당됩니다. SAS AIoT는 또한 완전한 클라우드 통합과 함께 컨테이너를 배포합니다.
시각화 및 모니터링을 위한 스토리지 및 실시간 대시보드
SAS ESP는 Azure의 완전 관리형 영구 볼륨에서 타사 데이터베이스에 이르기까지 다양한 스토리지를 사용합니다.
1. SAS ESP 서버 포드는 공유 Azure 파일 시스템을 사용하여 ESP 프로젝트에 필요한 입출력 파일, ASTORE 모델 등을 실행
2. ESP 프로젝트 메타데이터 관리용 PostgreSQL DB에서 사용하는 Azure 디스크
3. SAS ESP는 또한 커넥터, 어댑터 및 플러그인을 통해 Aerospike, Teradata, DB2, ODBC, Oracle 등과 같은 데이터베이스와 연결하여 다양한 요구 사항을 충족할 수 있습니다. 예를 들어, NoSQL Aerospike는 조회 데이터를 저장하고, 유지율이 높은 대용량 데이터에 대한 집계를 계산하고, ESP 서버 포드의 상태를 일시적으로 유지하는 데 활용됩니다.
Microsoft Azure는 리소스와 관련하여 수준 높은 보고, 시각화, 추적 및 모니터링을 위한 다양한 실시간 대시보드 도구를 위한 플랫폼을 제공합니다. Power BI, SAS Streamviewer, Grafana 및 Prometheus가 그에 속합니다. Power BI는 데이터를 분석하고 통찰력을 공유하기 위한 비즈니스 분석 도구 모음입니다. AKS 클러스터의 리소스를 모니터링하기 위해 실시간 메트릭을 Prometheus에 노출하도록 SAS ESP를 구성할 수 있습니다. 메트릭을 수집하여 향후에 사용하도록 시계열 데이터베이스에 저장합니다. Grafana가 Prometheus에서 직접 데이터를 수집할 수 있도록 하는 내장 데이터 소스 플러그인이 있는 Prometheus Operator를 사용합니다. Grafana를 다루어 공유 가능한 맞춤형 대시보드를 생성할 수 있습니다.
작업
작업을 통해 모바일 또는 웹 애플리케이션을 통해 비즈니스 사용자가 데이터 기반의 귀중한 인사이트를 손쉽게 사용할 수 있습니다. 모든 SAS 솔루션에는 공용 REST API가 포함되어 있어 다른 애플리케이션과 원활히 통합됩니다. 비즈니스 사용자는 배포된 모델의 성능과 비즈니스 영향을 지속적으로 모니터링하여 개선된 비즈니스 결과를 도출하도록 합니다.
기능
클라우드 지원 탄력성 및 확장성
SAS ESP는 수신되는 스트리밍 데이터의 수신 볼륨과 속도를 개선하기 위해 사용 가능한 리소스를 사용하여 확장하도록 구축되었습니다. SAS ESP는 수평 및 수직 런타임 탄력성, 즉 Azure의 즉각적인 자동 조정 기능을 활용합니다. Azure의 분산된 데이터 센터는 고객에게 더 가까이 분석을 배포하도록 개선하여 대기 시간을 줄이고 서비스 품질을 개선하며 고성능을 보장합니다. 확장 가능한 SAS 모델은 더욱 폭넓은 분석을 제공합니다.
확실한 장애 조치를 통한 복원력
SAS ESP 아키텍처는 고가용성과 안정성을 제공하도록 설계되었습니다. 장애 조치 및 복구 시스템은 쉽고 빠른 설정을 가지고 있으며 관리 또한 용이합니다.
전체 컨테이너 지원
SAS 분석 솔루션은 클라우드 서비스 통합으로 완전히 컨테이너화되어 클라우드 인프라에서 강력한 분석을 실행할 수 있는 속도, 민첩성 및 지원을 제공합니다. Docker 사용을 지원하는 모든 플랫폼에서 빠르고 쉽게 배포할 수 있습니다. 단 한 번의 빌드를 통해 수 차례 배포가 가능합니다. SAS는 특정 SAS 제품의 기본 이미지를 기반으로 사용자 정의 구성을 지원합니다.
거버넌스 및 운영
SAS는 엣지-투-클라우드 및 클라우드-투-엣지 강력한 실시간 스트리밍 분석 솔루션을 제공하는 반면 Azure는 적절한 인프라, 서비스 및 애플리케이션의 연결성, 상호 운용성 및 유지 관리성을 선사합니다. 두 서비스의 협력으로 비용 효율적인 분석 플랫폼을 마련했으며 비즈니스 사용자에게 컨텍스트 데이터와 결합된 스트리밍 데이터에 직접 액세스하고 전체 분석 수명 주기를 제공할 수 있게 되었습니다. 의사 결정 지원을 위한 비즈니스 규칙에 분석 모델을 포함하여 분석 기반의 자동화된 의사 결정을 내립니다.
추가 리소스
SAS Event Stream Processing
SAS Analytics for IoT
SAS & Microsoft Partnership
SAS and Microsoft partner to further shape the future of analytics and AI
SAS Event Stream Processing Documentation
SAS Event Stream Processing Kubernetes Repository
SAS Event Stream Processing with Kubernetes Video
SAS Event Stream Processing Kubernetes Operator Framework Video
SASSoftware YouTube Channel
SAS Developers Community
... View more
Labels:
03-21-2022
09:20 PM
집 보다 편한 곳은 없다.
SAS Studio 및 기타 SAS Viya 프로그래밍 클라이언트의 사용자는 작업할 때 운영 체제 홈 디렉토리를 사용하는 데 익숙합니다. Viya 3.4의 SAS Studio 이전 버전에서는 추가 구성 없이 가능했습니다. 2020.1 이후 버전에서는 추가 구성이 필요합니다. kubernetes의 Viya에서 홈 디렉토리를 사용할 수 있도록 하기 위해 몇 가지 설정이 필요합니다. 이 포스팅에서는 새로운 SAS Viya(2020.1 이상)의 SAS Studio 컴퓨팅 세션에서 홈 디렉토리를 사용할 수 있도록 하는 단계별 프로세스를 살펴보겠습니다.
유저는 nfs 서버와 같은 공유 저장소 형태에서 사용자의 홈 디렉토리를 사용할 수 있습니다. 새로운 SAS Viya(2020.1 이상)에서 이러한 홈 디렉토리를 사용할 수 있도록 하는 프로세스는 다음과 같습니다.
1. 컴퓨트 파드 템플릿에 주석을 달아 홈 디렉토리를 사용하여 nfs 서버가 있는 위치를 알려줍니다.
2. ID 서비스 구성을 업데이트하여 nfs의 홈 디렉토리 경로인 identifier.homeDirectoryPrefix를 설정합니다.
3. 파일 시스템 액세스를 위해 SAS Studio를 구성합니다.
컴퓨트 파드에 NFS 디렉토리 마운트
새로운 SAS Viya(2020.1 이상)에서 컴퓨팅 세션은 런처에 의해 실행됩니다. 런처 서비스는 Kubernetes 작업 요청을 구성하는 데 사용되는 정보가 포함된 Kubernetes PodTemplate을 찾습니다. PodTemplate 정보는 Pod에서 실행되는 컨테이너를 생성하는 데 사용됩니다. 파드의 컨테이너는 SAS 처리를 수행합니다. 컴퓨팅 파드 템플릿은 외부 콘텐츠를 사용할 수 있도록 구성을 추가해야 하는 장소입니다. 첫 번째 변경할 설정은 홈 디렉토리에 있어 반드시 필요한 부분은 아닙니다. 그러나 /shared/gelcontent에 있는 nfs에 저장된 데이터에 액세스하려면 이 정보가 필요합니다.
POD 템플릿에 공유 스토리지 마운트 추가
site-config/compute-server-add-nfs-mount.yaml에 볼륨(공유 스토리지의 경로)과 볼륨 마운트(컨테이너 내부에 볼륨을 마운트할 위치)를 추가하는 kustomize overlay를 생성합니다.
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
kustomization yaml에서 패치 섹션에 패치를 추가하고 sas-compute-job-config를 대상으로 지정합니다.
이제 /gelcontent 위치에 있는 파드의 /shared/gelcontent에 저장된 데이터에 액세스할 수 있습니다.
컴퓨팅 POD 템플릿에 주석 달기
현재 환경에서 홈 디렉토리는 nfs 서버의 /shared/gelcontent/home에 있습니다.
컴퓨팅 파드 템플릿에 주석을 추가하는 kustomize overlay를 site-config/compute-server-annotate-podtempate.yaml에 생성니다. 주석 값은 nfs 서버의 fqdn입니다.
참고: 오버레이의 ~1은 / 문자에 사용되므로 kustomize는 /를 경로의 일부가 아니라 경로의 일부로 해석합니다.
주석. 생성된 yaml에서 경로는 다음과 같습니다. launcher.sas.com/nfs-server: rext03-0135.race.sas.com
kustomization yaml에서 패치 섹션에 패치를 추가하고 sas-compute-job-config를 대상으로 지정합니다.
이제 kustomization.yaml이 업데이트가 완료되었므로 site.yaml을 빌드하여 적용할 수 있습니다.
cd ~/project/deploy/gelcorp kustomize build -o site.yaml kubectl apply -f site.yaml
kustomization 프로세스에 대한 자세한 내용은 기사를 통해 확인하실 수 있습니다.
이제 컴퓨팅 POD에 사용할 수 있는 공유 스토리지를 사용할 수 있습니다. 하지만 더 많은 것을 다뤄야합니다. 컴퓨팅 파드는 현재 마운트할 nfs 서버의 경로가 아닌 nfs 서버만 인식하는 단계입니다. 홈 디렉토리 위치에 대한 경로는 다음 단계를 확인하시길 바랍니다.
ID 서비스 구성 업데이트
ID 서비스에서 속성 identifier.homeDirectoryPrefix를 설정해야 합니다. 일단 설정되면 소프트웨어는 identifier.homeDirectoryPrefix를 /shared/gelcontent/home/Henrik 등과 같은 ID 서비스에서 반환된 사용자 이름과 연결하여 주석에 지정된 nfs 서버에서 각 사용자의 홈 디렉토리를 마운트합니다. 자세한 내용은 이 문서를 통해 확인하실 수 있습니다.
환경 관리자의 Configuration > All Services에서 ID에 대한 구성 속성을 설정하려면 ID를 선택하고 sas.identities를 수정합니다. nfs 위치에 홈 디렉토리가 저장되는 상위 경로로 identifier.homeDirectoryPrefix를 설정합니다.
이 구성을 변경하려는 경우 ID 서비스를 다시 시작해야 합니다. 이를 위해 POD ID를 삭제하여 kubernetes는 새 ID를 시작합니다.
모든 단계가 완료되면 실행되는 다음 컴퓨팅 POD에서 홈 디렉토리를 사용할 수 있습니다.
kubectl delete pods -l app=sas-identities
SAS 스튜디오 구성
마지막 단계는 SAS Studio 구성을 업데이트하는 것입니다. 새로운 SAS Viya(2020.1 이상)에서 SAS Studio는 기본적으로 파일 시스템에 액세스할 수 없습니다. SAS Studio는 본래 파일 시스템에 대한 액세스 없이 구성됩니다. 그러나 파일 시스템에 액세스하고 NFS 마운트에서 사용 홈 디렉토리를 만들도록 Studio를 구성할 수 있습니다.
다음 단계에서는 환경 관리자를 사용하여 SAS Studio가 이를 수행하도록 구성합니다. 이러한 단계는 sas-viya 구성 CLI를 사용하여 일괄적으로 완료할 수도 있습니다.
환경 관리자의 Configuration > All Services에서 SAS Studio를 선택하고 sas.studio를 수정합니다. 대화창에서 다음과 같이 변경합니다.
"showServerFiles": Studio에서 파일 시스템에 액세스할 수 있도록 허용하려면 true
"serverDisplayName": Studio에서 노드 이름을 지정하려면 "NFS gelcontent”으로 변경합니다.
"fileNavigationRoot": "USER"는 사용자 홈 디렉토리에서 탐색을 시작하도록 합니다.
Studio 구성 설정에 대한 자세한 내용은 이 문서를 통해 확인하실 수 있습니다.
CAS에 대하여
이 포스팅은 Compute에 대해 다루었지만 CAS에서도 작동합니다. CAS에서 공유 홈 디렉터리를 사용할 수 있도록 하려면 두 가지 요구 사항이 있습니다.
homeDirectoryPrefix 설정
사용자는 CASHostAccountRequired 맞춤 그룹의 일부여야 합니다.
정상적으로 작동하나요?
사용자 Henrik를 테스트하기 위해 다음 프로그램을 /shared/gelcontent/home/Henrik/gel_launcher_details.sas의 홈 디렉토리에 복사할 수 있습니다. SAS 및 CAS의 홈 디렉토리 설정을 보기 위해 일부 코드를 사용하여 Compute 및 CAS를 테스트할 수 있습니다.
/* list the attributes of this compute session*/ data _null_; %put NOTE: I am &_CLIENTUSERNAME; %put NOTE: My home directory is &_USERHOME; %put NOTE: My Launcher POD IS &SYSHOSTNAME; run; /* is my CASUSER directory mounted from NFS */ cas mysession; proc cas; builtins.userinfo; table.caslibinfo / caslib='CASUSER' verbose=true; run; quit;cas mysession terminate; run;
SAS Studio에 Henrik 사용자로 로그온하고 Henrik의 홈 디렉토리에 있는 프로그램에 액세스하고 실행할 수 있는지 확인하시기 바랍니다. 결과는 다음과 같아야 합니다.
Studio에서 사용 가능한 홈 디렉토리
홈 디렉토리에서 사용 가능한 SAS 프로그램
프로그램이 실행 및 홈 디렉토리 설정 표시
홈 디렉토리의 공유 스토리지에 생성된 CASUSER 디렉토리
참고: gif를 클릭하면 전체 크기로 볼 수 있습니다.
이 포스팅이 도움이 되었기를 바랍니다.
추가 정보:
How do I kustomize my Viya 4 deployment?
Annotate the Launcher.
여기에서 SAS Global Enablement and Learning에서 더 많은 기사를 찾아보실 수 있습니다.
... View more
Labels:
03-18-2022
05:07 AM
SCIM(System for Cross-domain Identity Management)은 ID 도메인 또는 IT 시스템 간의 사용자 ID 정보 교환을 자동화하기 위한 표준을 의미합니다. SCIM을 SAS Viya에 도입하여 LDAP 제공자로부터 ID 정보를 가져오는 대신 ID 정보를 Identities 마이크로서비스로 푸시할 수 있습니다. SCIM을 사용할 때 Identities 마이크로 서비스는 SCIM 서버가 되며 ID 제공자는 SCIM 클라이언트라고 이해하시면 됩니다. 이 포스팅에서는 SCIM을 사용하기 위한 조건과 SCIM 사용에 대한 몇 가지 고려 사항을 다루고자 합니다. 다른 포스팅에서 SAS Viya 환경과 dentity Provider의 구성을 자세히 살펴보겠습니다.
지원 범위
SAS Viya 3.5 및 SAS Viya 2020.1 상위 버전은 모두 SCIM을 지원하고 있습니다. SAS Viya는 SCIM ver.2만 지원합니다. SCIM 2.0은 SCIM 1.1 또는 더 이상 사용되지 않는 SCIM 1.0과 역호환되지 않습니다.
SAS Viya는 현재 Azure Active Directory 또는 OKTA를 SCIM 클라이언트로 지원합니다. Azure Active Directory는 클라우드 기반 Identity Provider입니다. OKTA는 클라우드 기반 Identity Provider이기도 합니다. OKTA는 온프레미스 프로비저닝 에이전트를 제공하나 SCIM 1.1만 지원하므로 SAS Viya에서는 지원하지 않습니다.
LDAP와 SCIM은 단일 SAS Viya 환경에서 동시에 사용될 수 없습니다. SCIM을 사용하려면 LDAP를 비활성화해야 합니다. LDAP가 비활성화된 경우 SAS Logon Manager는 더 이상 사용자 이름 및 암호 연결을 인증할 수 없습니다. 따라서 SCIM을 사용하는 경우 SAS Logon Manager에 대해 SAML 또는 OpenID Connect를 구성해야 합니다.
Kerberos 인증은 SCIM에서 의미가 없습니다. Kerberos 인증의 경우 KDC가 필요하며 대부분의 경우 KDC는 LDAP 서버와 함께 실행됩니다. Kerberos 사용자 계정 이름은 Identities 마이크로 서비스 내의 사용자 이름과 일치해야 합니다. 따라서 Kerberos 인증을 사용할 때 LDAP를 ID 공급자로 사용하는 것이 합리적입니다.
단일 SAS Viya 환경에서 여러 SCIM 클라이언트를 사용하는 것을 금지하지 않습니다. 주의해야 할 점은 한 SCIM 클라이언트가 다른 SCIM 클라이언트로 생성된 사용자 또는 그룹을 덮어쓰는 것을 방지하지도 않습니다. 따라서 다중 SCIM 클라이언트의 사용은 신중히 다뤄야하며 충돌을 방지하기 위해 대체 메커니즘을 사용해야 합니다.
SCIM 조건
무엇보다도 Identities 마이크로 서비스는 SCIM 서버입니다. 이는 Azure Active Directory 또는 OKTA과 같은 SCIM 클라이언트가 SCIM 서버에 연결할 수 있어야 함을 의미합니다. 자세한 조건은 다음과 같습니다.
1.SAS Viya 환경을 가리키는 공용 인터넷에서 확인이 가능한 외부 DNS 이름이 있어야 합니다. SCIM 클라이언트는 이 DNS 이름을 확인할 수 있어야 하며 SCIM 클라이언트는 자체 네트워크의 일부가 아니여야 합니다.
2.SCIM 클라이언트는 보안 연결을 통해서만 작동됩니다. 즉, Identities 마이크로 서비스에 대한 연결에 HTTPS를 사용해야 합니다. 외부 SCIM 클라이언트는 SCIM 서버에서 제공한 인증서를 신뢰할 수 있어야 합니다. 즉, 인증서는 산업용 인증 기관에 등록된 기업에서 구입해야 합니다. Azure Active Directory와 관련한 인증 기관은 여기를 클릭하셔서 확인하실 수 있습니다.
3.SCIM 클라이언트는 SAS Viya 환경에 대한 액세스를 허용하기 위해 방화벽이 있는 Identities 마이크로서비스에 연결할 수 있어야 합니다. Azure Active Directory와 OKTA는 모두 다양한 IP 주소에서 실행됩니다. Azure Active Directory IP addresses와 OKTA IP addresses을 확인하실수 있습니다.
다음으로 SCIM 클라이언트는 SCIM 서버에 인증해야 합니다. Identities 마이크로 서비스는 OAuth 2.0 Bearer 토큰 인증을 지원합니다. SCIM 클라이언트가 SAS Logon Manager에 등록되어 있어야 하며 클라이언트 자격 증명으로 생성된 유효기간이 긴 토큰이어야 합니다. SCIM 클라이언트 구성을 자주 업데이트하지 않으려면 토큰의 수명이 반드시 길어야 합니다.
SCIM 클라이언트는 Identities 마이크로 서비스의 SCIM 엔드포인트에 액세스할 수 있는 권한이 있어야 합니다. SCIM 클라이언트가 /identities/scim/v2/**에 액세스할 수 있도록 승인 규칙을 만들어야 합니다. 인증 및 권한 부여에 대한 자세한 내용은 차후에 다루도록 하겠습니다.
RFC 7643에서 정의한 표준 SCIM 코어 스키마에는 UID 및 GID 정보가 포함되어 있지 않습니다. 따라서 SAS Viya는 최종 사용자로서 프로세스를 실행할 수 있도록 일부 다른 프로세스를 활용해야 합니다. 이는 SAS Viya 2020.1(이상)과 SAS Viya 3.5 환경에서 상이하며 하단에서 확인하실 수 있습니다.
SAS Viya 2020.1 및 상위 버전에 대한 SCIM 고려 사항
SAS Viya 2020.1 및 상위 버전은 최종 사용자가 운영 체제를 자유자재로 다룰 것이라는 것을 전제로 하지 않습니다. 기본 구성에서 Identities 마이크로 서비스는 최종 사용자에 대한 UID/GID 정보를 생성하며 이러한 정보는 LDAP 제공자로부터 반환되지 않을 경우를 뜻합니다. 이 UID/GID 정보는 SAS Compute Server, SAS Connect Spawner 및 SAS Cloud Analytic Services 컨트롤러에서 최종 사용자 프로세스를 시작하는 데 사용됩니다.
Identities 마이크로 서비스는 사용자 및 그룹의 고유 식별자를 해싱하여 UID/GID 정보를 생성합니다. 이 SHA-256은 UID/GID를 생성하기 위해 수치에 매핑됩니다. 해시가 더 작은 숫자 공간에 매핑되기 때문에 낮은 확률로 충돌이 발생할 수도 있습니다. 문서를 통해 충돌이 발생한 경우 처리하는 방법을 확인하실 수 있습니다.
개별 최종 사용자의 경우 UID 및 GID는 Identities 마이크로서비스가 생성할 때 동일한 값이 됩니다. UID/GID 값은 DEV, TEST 및 PROD와 같은 여러 환경에서도 동일합니다. 또한 요청 시에만 생성되며 사전에는 알 수 없습니다. 이로 인해 공유 스토리지에 운영 체제 수준 권한을 제공하는 방식이 복잡해질 수 있습니다.
SCIM을 사용할 때 SAS Viya 2020.1 및 상위 버전에 대한 사용자 이름 및 암호 연결은 지원되지 않습니다. 이는 SAS Viya CLI와 SAS Cloud Analytic Services에 대한 직접 연결하는 방식에 모두에 영향을 미칩니다. SAS Viya 2020.1 및 상위 버전은 CLI는 인증 코드로 인증을 지원합니다. 최종 사용자가 브라우저에서 SAS Logon Manager로 인증하여 SAS Viya CLI에 대한 인증 코드를 얻을 수 있도록 합니다.
마찬가지로 SAS Cloud Analytic Services에 대한 직접 연결하는 방식은 SAS Logon Manager에서 얻은 ID 토큰을 사용한 인증을 지원합니다. 이 ID 토큰은 별도로 획득해야 합니다. 예를 들어 Jupyter Hub는 SAS Logon Manager와 통합이 가능하며 인증 시 얻은 ID 토큰은 이 문서에서 확인하실 수 있듯이 CAS에 대한 직접 연결에 활용됩니다.
마지막으로 CAS 및 SAS Compute Server의 공유 계정 또는 SAS Compute Server 서비스 계정은 SCIM용으로 구성된 SAS Viya 2020.1 및 상위 버전에서 작동하지 않습니다.
SAS Viya 3.5에 대한 SCIM 고려 사항
SAS Viya 3.5는 최종 사용자 친화적인 환경을 제공합니다. 예를 들어, 기본적으로 SAS Compute Server 세션을 시작할 때 내부 OAuth 토큰의 사용자 이름이 운영 체제에 알려져 있다고 가정합니다. SCIM 최종 사용자를 유효한 운영 체제 최종 사용자로 변환하고 매핑하면 SAS Viya 3.5에서 SCIM을 활용하는 것이 훨씬 더 복잡해집니다.
주로 SAS Visual Analytic 및 SAS Cloud Analytic Services만 활용하는 보고 환경의 경우 최종 사용자로 프로세스를 실행할 필요가 없기 때문에 그다지 문제가 되지 않습니다. 그러나 SAS Studio 5.2 Enterprise 또는 SAS Compute Server를 사용하는 다른 솔루션을 활용하는 환경은 다소 어려울 수 있습니다.
SAS Cloud Analytic Services 또는 SAS Viya CLI에 대한 동일한 직접 연결은 SAS Logon Manager에서 사용자 이름 및 암호가 유효하지 않기 때문에 문제가 됩니다. SAS Viya 2020.1 및 상위 버전과 마찬가지로 SAS Viya CLI와 CAS는 모두 SAS Logon Manager가 있는 브라우저에서 별도의 인증을 활용하여 인증 코드 또는 ID 토큰을 획득해야 합니다. 최신 버전의 SAS Viya CLI만 인증 코드를 사용한 인증을 지원하므로 업데이트가 필요할 수 있습니다.
결론
이번 포스팅에서는 SAS Viya로 SCIM을 구성하는 환경에 대한 내용을 살펴보았습니다. SCIM 사용에 대한 조건과 몇 가지 고려 사항에 도움이 되었기를 바랍니다. 다음 포스팅에서는 SAS Viya 구성을 자세히 살펴보겠습니다. 향후 게시될 포스팅에서는 Azure Active Directory 또는 OKTA와 같은 SCIM 클라이언트의 구성을 다룰 계획입니다.
... View more
Labels:
03-08-2022
02:03 AM
새로운 SAS Viya(2020.1 상위 버전)에 새로운 커맨드 라인 인터페이스가 있다는 것을 아셨나요?
필수 사항
1.sas라는 .sas 프로그램을 일괄적으로 실행하려는 경우
새로운 SAS Viya(2020.1 상위 버전)에서는 CLI(커맨드 라인 인터페이스) 배치 플러그인을 사용할 수 있습니다.
/opt/sas/viya/home/bin/sas-viya --profile ${SAS_CLI_PROFILE} batch jobs submit-pgm --pgm-path /tmp/1.sas --context default --watch-output --wait-log-list --results-dir /tmp
과거 SAS Viya 3.5에서는 다음과 같이 작성해야 했습니다.
/opt/sas/spre/home/SASFoundation/sas -autoexec "/opt/sas/viya/config/etc/workspaceserver/default/autoexec_deployment.sas" /tmp/1.sas -log /tmp/1.log
세부 사항
SAS Batch Command Line Utility는 일괄 처리를 위해 Kubernetes 클러스터에서 실행되는 SAS Viya 환경으로 커맨드 라인에서 SAS 프로그램 또는 명령을 제출할 수 있는 커맨드 라인 인터페이스입니다. 원리는 Command-Line Interface: Overview.를 통해 확인하실 수 있습니다.
최상위 명령문은 sas-viya입니다. Batch 플러그인을 초기화, 인증 및 실행하는 데 사용됩니다. 전체 플러그인 목록은 커 Command-Line Interface: Plug-Ins.을 통해 확인하실 수 있습니다.
예시
sas-viya batch submit-pgm 명령 전 몇 가지 추가 작업이 필요합니다.
프로필 설정
Kubernetes 네임스페이스를 확인합니다. 이 예시에서 SAS Viya는 gelcorp 네임스페이스에서 실행됩니다. Viya가 실행 중인 네임스페이스를 모르는 경우 다음을 입력합니다.
kubectl get ns
SAS Viya 애플리케이션(예: SAS Environment Manager, SAS Drive 등)은 기본적으로 $INGRESS_URL에 설명된 위치에서 액세스할 수 있습니다.
current_namespace=gelcorp
INGRESS_SUFFIX=$(hostname -f)
INGRESS_URL=http://${current_namespace}.${INGRESS_SUFFIX}
echo ${INGRESS_URL}
TLS 케이스
CAS는 서버와 클라이언트 간의 암호화된 연결을 지원합니다. TLS를 활성화하여 서버와 클라이언트 간의 통신을 보호할 수 있습니다. 클라이언트 서버 통신에 사용되는 인증서는 모든 잠재적 클라이언트가 신뢰하는 인증 기관의 확인이 필요합니다.
따라서 TLS가 활성화된 SAS Viya 배포가 있는 경우 인증서를 한 번만 불러오면 됩니다. kubectl 관리자 역할이 필요합니다.
mkdir -p ~/.certs
kubectl cp $(kubectl get pod -l app=sas-logon-app -o=jsonpath='{.items[0].metadata.name}'):security/trustedcerts.pem ~/.certs/${current_namespace}_trustedcerts.pem
인증
sas-viya 프로필 및 auth 명령 전 매번 다음 명령이 필요합니다. 이는 CLI에서 인증서 및 TLS(인증 기관 번들)의 위치를 가리킵니다.
export SSL_CERT_FILE=~/.certs/${current_namespace}_trustedcerts.pemexport REQUESTS_CA_BUNDLE=${SSL_CERT_FILE}
SAS VIYA CLI가 설치된 폴더로 전환합니다. $clidir에 설치되어있다고 가정한 경우입니다.
clidir=/opt/sas/viya/home/bin
cd $clidir
${SAS_CLI_PROFILE}이라는 기능 프로필을 만듭니다. gelcorp을 통해 진행하면 됩니다.
echo ${current_namespace}
export SAS_CLI_PROFILE=${current_namespace}
./sas-viya --profile ${SAS_CLI_PROFILE} profile set-endpoint "${INGRESS_URL}"
./sas-viya --profile ${SAS_CLI_PROFILE} profile toggle-color off
./sas-viya --profile ${SAS_CLI_PROFILE} profile set-output fulljson
# login and create a token
./sas-viya --profile ${SAS_CLI_PROFILE} auth login -user sasadm -password *******
기본적으로 인증은 12시간 동안 유지됩니다. sas-viya batch auth logout 명령어를 사용하여 로그아웃할 수 있습니다.
.sas 프로그램 실행
/tmp 폴더에 1.sas를 생성합니다.
예시:
echo 'proc setinit; run; quit;' | tee /tmp/1.sas
프로그램 실행:
cd /tmp/
/opt/sas/viya/home/bin/sas-admin --profile ${SAS_CLI_PROFILE} batch jobs submit-pgm --pgm-path /tmp/1.sas --context default --watch-output --wait-log-list --results-dir /tmp
cas 문 실행
SAS Environment Manager에서 CAS controller host 및 port를 확인합니다.
크게 보시려면 이미지를 클릭하시기 바랍니다. 모바일 버전: 이미지를 보시려면 페이지 하단의 풀 버전을 선택하세요.
sas 프로그램을 생성한 후 다음을 통해 실행합니다.
echo 'cas casauto host="controller.sas-cas-server-default.gelcorp.svc.cluster.local"
port=5570;' | tee /tmp/2.sas
echo 'cas casauto terminate;' | tee -a /tmp/2.sas
cat /tmp/2.sas
프로그램 실행:
cd /tmp/
/opt/sas/viya/home/bin/sas-viya --profile ${SAS_CLI_PROFILE} batch jobs submit-pgm --pgm-path /tmp/2.sas --context default --watch-output --wait-log-list --results-dir /tmp
로그는 다음과 같습니다.
>>> File set created, ID="JOB_20201009_045619_929_1"
>>> Uploading "2.sas"
>>> Job submitted, ID="64139ca3-84aa-4d6c-bed8-d7c25a3647fd".
>>> Waiting for job to complete...
>>> Job started
.….
1 cas casauto host="controller.sas-cas-server-default.gelcorp.svc.cluster.local" port=5570;
NOTE: The session CASAUTO connected successfully to Cloud Analytic Services
controller.sas-cas-server-default.gelcorp.svc.cluster.local using port 5570. The UUID is
fc406c5b-3ec4-914c-97b2-48c99121eb1c. The user is sasadm and the active caslib is
CASUSER(sasadm).
NOTE: The SAS System used:
real time 0.40 seconds
cpu time 0.06 seconds
…
<<< Job ended.
<<< Downloading files in fileset to "/tmp/JOB_20201009_045619_929_1".
<<< Downloading "2.log"
<<< Downloading "2.sas"
<<< Copying log and list files from "/tmp/JOB_20201009_045619_929_1" to current directory
<<< Copying "2.log"
<<< Deleting results directory.
<<< Deleting batch job.
<<< Deleting fileset.
sas-viya 배치 CLI는 SAS/Connect의 RSUBMIT 명령과 유사합니다. 실행된 작업만 서버 세션에 저장되는 것이 아니라 Kubernetes 클러스터 또한 저장되며 결과와 출력은 클라이언트 세션으로 전달됩니다. .
사용된 옵션
--profile은 획득한 토큰과 사전에 정의한 기본 설정을 사용합니다.
--context는 프로그램이 실행되는 일괄 처리 컨텍스트를 지정합니다.
--pgm-path Kubernetes 노드 시스템의 프로그램 경로입니다. 지정된 프로그램은 파일 세트에 업로드되어 작업 디렉토리에 다운로드하고 실행 포드에서 액세스할 수 있습니다.
--watch-output 프로그램 실행을 출력합니다.
—wait-log-list 성공 여부에 관계 없이 작업 실행이 완료될 때까지 기다립니다
--results-dir은 --wait 옵션도 지정한 경우 명령 또는 SAS 프로그램의 결과를 저장할 디렉터리를 지정합니다.
Submit SAS Programs in Batch.을 통해 자세한 사항을 확인하실 수 있습니다.
전제 조건
SAS Viya CLI 설치
배치 명령을 수행하려면 명령을 실행할 시스템에 SAS Viya CLI가 설치되어 있어야 합니다. Gerry Nelson은 자 Keeping the SAS Administration Command-Line interfaces up-to-date에서 자세히 다룬 바 있습니다. 이 포스팅은 SAS Viya 2020.1 상위 버전에서 sas-viya로 대체된 sas-admin 실행 파일에 대해 설명합니다. Nelson에 따르면 sas-admin을 sas-viya로 호환해도 문제가 되지 않습니다.
pyviyatools 설치
authinfo 파일로 인증하려면 pyviyatools가 필요합니다. pyviatools 설치 안내는 INSTALL.md을 통해 확인하실 수 있습니다.
보안
보다 안전한 방법은 자격 증명을 인코딩하지 않는 것입니다. pyviya 도구와 함께 .authinfo 파일을 사용할 수 있습니다. Gerry의 게시물: GEL pyviyatools 소개를 참조하세요.
# Instead of
# ./sas-viya --profile ${SAS_CLI_PROFILE} auth login -user sasadm -password *****
# Create .authinfo - replace ***** with real credentials
tee ~/.authinfo > /dev/null << EOF
default user sasadm password *****
EOF
chmod 600 ~/.authinfo
# Browse to PyViya Tools folder and use the loginviauthinfo command for
authentification
cd ~/admin/pyviyatools
./loginviauthinfo.py -f ~/.authinfo
pyviatools 설치 지침은 INSTALL.md .에서 찾을 수 있습니다.
결론
새로운 SAS Viya(2020.1 상위 버전)에서 sas 프로그램을 한번에 실행하려면 sas-viya 일괄 CLI 사용을 추천드립니다. 유일한 옵션은 아니며 관리, 이전, 자동화할 수 있는 다른 CLIs를 사용하셔도 됩니다.
감사 말씀
Ajmal Farzam, Gerry Nelson, Mark Thomas and Stephen Foerster.께 감사 드립니다.
참고문헌
SAS Viya Administration Command-Line Interface: Plug-Ins List
Batch Plug-In to sas-viya: Setup
Submit SAS Programs in Batch
Related topic: SAS administration command-line interface in a container: Part 1 Docker
이 포스팅을 읽어주셔서 감사합니다. 도움이 되셨다면 ‘좋아요’를 눌러주세요.
SAS Viya에 대한 경험과 고견을 나눠주시면 감사하겠습니다.
이곳에서 SAS Global Enablement and Learning에서 더 많은 기사를 찾아보실 수 있습니다.
... View more
Labels:
03-03-2022
12:19 AM
SAS는 Apple Macintosh에서 기본적으로 실행되는 소프트웨어 버전을 제공하지 않지만 많은 SAS 사용자는 Mac에서 SAS을 훌륭히 사용하고 있습니다. 이 문서에서는 SAS 활용 방법을 소개합니다
웹 브라우저에서 무료 클라우드 기반 SAS 사용
아마 이 방법이 SAS 학습자를 위한 최선입니다. 웹 브라우저를 통해 액세스할 수 있는 무료 클라우드 호스팅 SAS 소프트웨어를 사용하시면 됩니다. 별도로 추가 설치를 하지 않아도 됩니다.
SAS OnDemand for Academics or SAS Viya for Learners와 같은 두 가지 환경을 제공합니다.
SAS OnDemand for Academics는 (참조) SAS Studio를 통해 SAS에 대한 액세스를 제공합니다. (SAS 버전: SAS 9.4 및 SAS Studio v3.8) 전 세계 수십만 명의 학습자가 사용하고 있습니다. 최대 5GB의 개인 데이터를 업로드하고 대부분의 SAS 프로그래밍 및 통계 과정 등을 활용할 수 있습니다. 대학과 제휴 또는 허가 없이 사용 가능합니다. 비상업적 용도인 경우 모든 학습자는 무료로 이용하면 됩니다. Python과 같은 오픈소스 언어에서 사용할 수도 있습니다.
SAS Viya for Learners는 (참조)는 데이터 준비, 머신러닝 및 모델 개발, 시각화 등을 위한 최신 SAS 제품에 대한 액세스를 제공합니다. 교육용으로만 사용할 수 있습니다.
지원되는 브라우저를 사용하여 Mac을 사용해서도 이러한 제품에 액세스할 수 있습니다. 크롬이나 파이어폭스 등을 사용하기를 추천합니다.
참고: SAS OnDemand for Academics는 SAS Enterprise Miner, SAS Enterprise Guide 및 SAS Forecast Studio와 같은 특수 도구와 함께 사용할 수도 있습니다. 이러한 프로그램은 수강 중인 과목의 교수 지도하에 사용됩니다. 이러한 도구는 기본 Mac 환경에서 지원되지 않지만 Mac에서 실행되는 가상 Windows 환경에서 사용할 수 있습니다.
Windows 친화적인 SAS
Apple Macintosh에서 Windows용 SAS를 사용할 수 있지만 패러럴즈를 통해 실행 중인 Windows OS 또는 보유하고 있는 SAS 버전에 대해 지원되는 Windows 운영 체제를 호스팅하는 다른 가상 머신 기술을 통해서만 가능합니다. SAS의 공식 지원은 아니지만 대부분의 Mac 유저는 이러한 방식을 선택합니다.
가상 환경에서 SAS 사용에 대한 지원을 확인하실 수 있습니다. Parallels, VMWare 및 Boot Camp는 모두 SAS를 설치하는 Windows 환경을 호스팅할 수 있는 가상화 소프트웨어입니다. 가상화 도구에 지원되는 Windows 시스템을 설치하면 기본 Windows에서와 마찬가지로 SAS를 설치하고 사용할 수 있습니다. SAS 기술 지원은 SAS를 Mac에서 실행하도록 구성하는 것과 관련된 질문에 대해서는 도움을 드릴 수 없습니다.
... View more
Labels: