Azure Machine Learning Studio(클래식) 함수를 사용하여 Stream Analytics 작업의 크기 조정Scale your Stream Analytics job with Azure Machine Learning Studio (classic) functions

성능 및 안정성 향상을 위해 Azure Machine Learning Studio(클래식) UDF 대신 Azure Machine Learning UDF를 사용하는 것이 좋습니다.It is highly recommended to use Azure Machine Learning UDFs instead of Azure Machine Learning Studio (classic) UDF for improved performance and reliability.

이 문서에서는 Azure Machine Learning Studio (클래식) 함수를 사용 하는 Azure Stream Analytics 작업을 효율적으로 확장 하는 방법을 설명 합니다.This article discusses how to efficiently scale Azure Stream Analytics jobs that use Azure Machine Learning Studio (classic) functions. Stream Analytics 작업의 크기를 조정하는 일반적인 방법은 작업 크기 조정을 참조하세요.For information on how to scale Stream Analytics jobs in general see the article Scaling jobs.

Stream Analytics의 스튜디오 (클래식) 함수는 무엇 인가요?What is a Studio (classic) function in Stream Analytics?

Stream Analytics의 Machine Learning Studio (클래식) 함수는 Stream Analytics 쿼리 언어의 일반 함수 호출 처럼 사용할 수 있습니다.A Machine Learning Studio (classic) function in Stream Analytics can be used like a regular function call in the Stream Analytics query language. 그러나 내부적으로 이러한 함수 호출은 실제로 Studio (클래식) 웹 서비스 요청입니다.Behind the scenes, however, these function calls are actually Studio (classic) Web Service requests.

동일한 웹 서비스 API 호출에서 여러 행을 함께 "일괄 처리" 하 여 Studio (클래식) 웹 서비스 요청의 처리량을 향상 시킬 수 있습니다.You can improve the throughput of Studio (classic) web service requests by "batching" multiple rows together in the same web service API call. 이러한 그룹화를 미니 매치라고 합니다.This grouping is called a mini-batch. 자세한 내용은 Azure Machine Learning Studio(클래식) 웹 서비스를 참조하세요.For more information, see Azure Machine Learning Studio (classic) Web Services. Stream Analytics에서 Studio (클래식)를 지원 합니다.Support for Studio (classic) in Stream Analytics.

Studio (클래식) 함수를 사용 하 여 Stream Analytics 작업 구성Configure a Stream Analytics job with Studio (classic) functions

Stream Analytics 작업에서 사용 하는 Studio (클래식) 함수를 구성 하는 두 가지 매개 변수가 있습니다.There are two parameters to configure the Studio (classic) function used by your Stream Analytics job:

  • Studio (클래식) 함수 호출의 일괄 처리 크기입니다.Batch size of the Studio (classic) function calls.
  • Stream Analytics 작업에 대해 프로비저닝된 SU(스트리밍 단위)의 수.The number of Streaming Units (SUs) provisioned for the Stream Analytics job.

SU의 적절한 값을 정하려면 Stream Analytics 작업의 대기 시간을 최적화할지 아니면 각 SU의 처리량을 최적화할지 판단하세요.To determine the appropriate values for SUs, decide whether you would like to optimize latency of the Stream Analytics job or the throughput of each SU. SU는 잘 파티션된 Stream Analytics 쿼리의 처리량을 개선하기 위해 작업에 항상 추가할 수 있습니다.SUs may always be added to a job to increase the throughput of a well-partitioned Stream Analytics query. 추가 SU가 있으면 작업 실행에 소요되는 비용이 늘어납니다.Additional SUs do increase the cost of running the job.

Stream Analytics 작업의 대기 시간 ‘허용 범위’를 정합니다.Determine the latency tolerance for your Stream Analytics job. 일괄 처리 크기를 늘리면 스튜디오 (클래식) 요청의 대기 시간과 Stream Analytics 작업의 대기 시간이 증가 합니다.Increasing the batch size will increase the latency of your Studio (classic) requests and the latency of the Stream Analytics job.

일괄 처리 크기를 높이면 Stream Analytics 작업에서 동일한 수 의 Studio (클래식) 웹 서비스 요청으로 더 많은 이벤트 를 처리할 수 있습니다.Increasing the batch size allows the Stream Analytics job to process more events with the same number of Studio (classic) web service requests. 스튜디오 (클래식) 웹 서비스 대기 시간은 일반적으로 일괄 처리 크기의 증가에 sublinear 됩니다.The increase of Studio (classic) web service latency is usually sublinear to the increase of batch size.

지정 된 상황에서 Studio (클래식) 웹 서비스에 대 한 가장 비용 효율적인 일괄 처리 크기를 고려 하는 것이 중요 합니다.It's important to consider the most cost-efficient batch size for a Studio (classic) web service in any given situation. 웹 서비스 요청의 기본 배치 크기는 1000입니다.The default batch size for web service requests is 1000. 이 기본값은 Stream Analytics REST API 또는 Stream Analytics용 PowerShell 클라이언트를 사용하여 변경할 수 있습니다.You can change this default size using the Stream Analytics REST API or the PowerShell client for Stream Analytics.

배치 크기를 정했으면 함수가 초당 처리해야 하는 이벤트 수를 기준으로 SU(스트리밍 단위)의 수를 설정할 수 있습니다.Once you've decided on a batch size, you can set the number of streaming units (SUs), based on the number of events that the function needs to process per second. 스트리밍 단위에 대한 자세한 내용은 Stream Analytics 크기 조정 작업을 참조하세요.For more information about streaming units, see Stream Analytics scale jobs.

6 개 SUs 마다 스튜디오 (클래식) 웹 서비스에 대 한 동시 연결 20 개를 가져옵니다.Every 6 SUs get 20 concurrent connections to the Studio (classic) web service. 그러나 1개의 SU 작업과 3개의 SU 작업은 20개의 동시 연결을 갖습니다.However, 1 SU job and 3 SU jobs get 20 concurrent connections.

애플리케이션이 초당 200,000개의 이벤트를 생성하고 배치 크기가 1000이라면 웹 서비스 대기 시간은 200ms가 됩니다.If your application generates 200,000 events per second, and the batch size is 1000, then the resulting web service latency is 200 ms. 이 요금은 모든 연결이 초당 Studio (클래식) 웹 서비스에 대 한 5 개의 요청을 만들 수 있음을 의미 합니다.This rate means that every connection can make five requests to the Studio (classic) web service each second. 연결이 20개이면 Stream Analytics 작업은 200ms 동안 20,000개의 이벤트를 처리할 수 있으므로 초당 100,000개의 이벤트를 처리할 수 있습니다.With 20 connections, the Stream Analytics job can process 20,000 events in 200 ms and 100,000 events in a second.

초당 200,000개의 이벤트를 처리하려면 Stream Analytics 작업에 동시 연결 40개가 필요하고, 12개의 SU가 필요하다는 결론이 나옵니다.To process 200,000 events per second, the Stream Analytics job needs 40 concurrent connections, which come out to 12 SUs. 다음 다이어그램은 Stream Analytics 작업에서 Studio (클래식) 웹 서비스 끝점으로 요청 하는 것을 보여 줍니다. 모든 6 개의 SUs에는 최대 Studio (클래식) 웹 서비스에 대 한 동시 연결 수가 20 개 있습니다.The following diagram illustrates the requests from the Stream Analytics job to the Studio (classic) web service endpoint – Every 6 SUs has 20 concurrent connections to Studio (classic) web service at max.

Studio (클래식) 함수를 사용 하 여 Stream Analytics 확장 두 작업 예제Scale Stream Analytics with Studio (classic) Functions two job example

일반적으로 배치 크기의 경우 B _, 일괄 처리 크기 B의 웹 서비스 대기 시간에 대 한 _L_ (밀리초)입니다. _ N SUs를 사용 하는 Stream Analytics 작업의 처리량은 다음과 같습니다.In general, B _ for batch size, _L_ for the web service latency at batch size B in milliseconds, the throughput of a Stream Analytics job with _ N SUs is:

Studio (클래식) 함수 수식을 사용 하 여 Stream Analytics 확장Scale Stream Analytics with Studio (classic) Functions Formula

스튜디오 (클래식) 웹 서비스에서 ' 최대 동시 호출 수 '를 구성할 수도 있습니다.You can also configure the 'max concurrent calls' on the Studio (classic) web service. 이 매개 변수는 최댓값(현재 200)으로 설정하는 것이 좋습니다.It's recommended to set this parameter to the maximum value (200 currently).

이 설정에 대 한 자세한 내용은 Machine Learning Studio (클래식) 웹 서비스에 대 한 크기 조정 문서를 참조 하세요.For more information on this setting, review the Scaling article for Machine Learning Studio (classic) Web Services.

예 – 정서 분석Example – Sentiment Analysis

다음 예제에는 Stream Analytics Machine Learning Studio (클래식) 통합 자습서에 설명 된 대로 감정 analysis Studio (클래식) 함수를 사용 하는 Stream Analytics 작업이 포함 되어 있습니다.The following example includes a Stream Analytics job with the sentiment analysis Studio (classic) function, as described in the Stream Analytics Machine Learning Studio (classic) integration tutorial.

다음 예제에 표시된 대로 완전히 분할된 간단한 쿼리 다음에 sentiment 함수가 옵니다.The query is a simple fully partitioned query followed by the sentiment function, as shown in the following example:

    WITH subquery AS (
        SELECT text, sentiment(text) as result from input
    )

    Select text, result.[Score]
    Into output
    From subquery

초당 10,000개의 트윗을 대상으로 감정 분석을 수행하는 Stream Analytics 작업을 만드는 데 필요한 구성을 살펴보겠습니다.Let's examine the configuration necessary to create a Stream Analytics job, which does sentiment analysis of tweets at a rate of 10,000 tweets per second.

1개의 SU를 사용할 경우 이 Stream Analytics 작업에서 트래픽을 처리할 수 있을까요?Using 1 SU, could this Stream Analytics job handle the traffic? 이 작업은 기본 배치 크기 1000을 사용하여 입력을 처리할 수 있습니다.The job can keep up with the input using the default batch size of 1000. 기본 일괄 처리 크기가 1000 인 감정 analysis Studio (클래식) 웹 서비스의 기본 대기 시간은 대기 시간 중 초를 초과 하지 않습니다.The default latency of the sentiment analysis Studio (classic) web service (with a default batch size of 1000) creates no more than a second of latency.

Stream Analytics 작업의 전체적인 또는 엔드투엔드 대기 시간은 일반적으로 몇 초입니다.The Stream Analytics job's overall or end-to-end latency would typically be a few seconds. 이 Stream Analytics 작업, 특히 Studio (클래식) 함수 호출에 대해 좀 더 자세히 살펴보겠습니다.Take a more detailed look into this Stream Analytics job, especially the Studio (classic) function calls. 배치 크기가 1000이면 10,000개의 이벤트를 처리하려면 웹 서비스로 약 10개의 요청을 보내야 합니다.With a batch size of 1000, a throughput of 10,000 events takes about 10 requests to the web service. 1SU를 사용하더라도 이 입력 트래픽을 처리하기에 충분한 동시 연결이 있습니다.Even with one SU, there are enough concurrent connections to accommodate this input traffic.

입력 이벤트 속도가 100배 증가하면 Stream Analytics 작업은 초당 1,000,000 트윗을 처리해야 합니다.If the input event rate increases by 100x, then the Stream Analytics job needs to process 1,000,000 tweets per second. 크기 증가를 위해 다음 두 가지 옵션을 사용할 수 있습니다.There are two options to accomplish the increased scale:

  1. 배치 크기를 늘립니다.Increase the batch size.
  2. 입력 스트림을 분할하여 이벤트를 병렬로 처리합니다.Partition the input stream to process the events in parallel.

첫 번째 옵션을 사용하면 작업 대기 시간 이 증가합니다.With the first option, the job latency increases.

두 번째 옵션을 사용 하는 경우 더 많은 동시 스튜디오 (클래식) 웹 서비스 요청을 사용 하려면 더 많은 su를 프로 비전 해야 합니다.With the second option, you will have to provision more SUs to have more concurrent Studio (classic) web service requests. 이처럼 SU 수를 늘리면 작업 비용 이 늘어납니다.This greater number of SUs, increases the job cost.

각 배치 크기의 대기 시간 측정값을 사용하여 크기 조정을 살펴보겠습니다.Let's look at the scaling using the following latency measurements for each batch size:

대기 시간Latency Batch 크기Batch size
200ms200 ms 1000개 이하의 이벤트로 구성된 배치1000-event batches or below
250ms250 ms 5,000개 이벤트로 구성된 배치5,000-event batches
300ms300 ms 10,000개 이벤트로 구성된 배치10,000-event batches
500ms500 ms 25,000개 이벤트로 구성된 배치25,000-event batches
  1. 첫 번째 옵션을 사용하면(더 많은 SU를 프로비전하지 않음)Using the first option (not provisioning more SUs). 일괄 처리 크기가 25,000 으로 늘어날 수 있습니다.The batch size could be increased to 25,000. 이러한 방식으로 일괄 처리 크기를 높이면 작업에서 Studio (클래식) 웹 서비스에 대 한 20 개의 동시 연결을 사용 하 여 100만 이벤트를 처리할 수 있습니다 (호출 당 500 밀리초 지연).Increasing the batch size in this way will allow the job to process 1,000,000 events with 20 concurrent connections to the Studio (classic) web service (with a latency of 500 ms per call). 따라서 Studio (클래식) 웹 서비스 요청에 대 한 감정 함수 요청으로 인해 Stream Analytics 작업의 추가 대기 시간이 200 밀리초 에서 500 밀리초 로 증가 합니다.So the additional latency of the Stream Analytics job due to the sentiment function requests against the Studio (classic) web service requests would be increased from 200 ms to 500 ms. 그러나 Studio (클래식) 웹 서비스에서 요청 하는 페이로드 크기는 4mb이 하 여야 하 고 작업의 100 초 후에 웹 서비스 요청 시간이 초과 되므로 일괄 처리 크기를 무한정 늘릴 수 없습니다 .However, batch size can't be increased infinitely as the Studio (classic) web services requires the payload size of a request be 4 MB or smaller, and web service requests timeout after 100 seconds of operation.
  2. 두 번째 옵션을 사용할 경우 배치 크기는 1000으로 유지되고 웹 서비스 대기 시간이 200ms이므로, 웹 서비스에 대한 동시 연결 20개마다 1000 * 20 * 5 이벤트 = 초당 100,000개 이벤트를 처리할 수 있습니다.Using the second option, the batch size is left at 1000, with 200-ms web service latency, every 20 concurrent connections to the web service would be able to process 1000 * 20 * 5 events = 100,000 per second. 따라서 초당 1,000,000 이벤트를 처리하려면 작업에 60SU가 필요합니다.So to process 1,000,000 events per second, the job would need 60 SUs. 첫 번째 옵션과 비교하면, Stream Analytics 작업에서 웹 서비스 배치 요청을 더 많이 만들며, 그로 인해 비용도 함께 증가합니다.Compared to the first option, Stream Analytics job would make more web service batch requests, in turn generating an increased cost.

아래는 SU 및 배치 크기(초당 이벤트 수)에 따른 Stream Analytics 작업의 처리량을 보여 주는 테이블입니다.Below is a table for the throughput of the Stream Analytics job for different SUs and batch sizes (in number of events per second).

배치 크기(ML 대기 시간)batch size (ML latency) 500(200ms)500 (200 ms) 1,000(200ms)1,000 (200 ms) 5,000(250ms)5,000 (250 ms) 10,000(300ms)10,000 (300 ms) 25,000(500ms)25,000 (500 ms)
1SU1 SU 2,5002,500 5,0005,000 20,00020,000 30,00030,000 50,00050,000
3SU3 SUs 2,5002,500 5,0005,000 20,00020,000 30,00030,000 50,00050,000
6SU6 SUs 2,5002,500 5,0005,000 20,00020,000 30,00030,000 50,00050,000
12SU12 SUs 5,0005,000 1000010,000 40,00040,000 60,00060,000 100,000100,000
18SU18 SUs 7,5007,500 15,00015,000 60,00060,000 90,00090,000 150,000150,000
24SU24 SUs 1000010,000 20,00020,000 80,00080,000 120,000120,000 200,000200,000
60SU60 SUs 25,00025,000 50,00050,000 200,000200,000 300,000300,000 500,000500,000

이제 Stream Analytics의 Studio (클래식) 함수가 작동 하는 방식을 이미 잘 알고 있어야 합니다.By now, you should already have a good understanding of how Studio (classic) functions in Stream Analytics work. 또한 Stream Analytics 작업이 데이터 원본에서 데이터를 “끌어오며” 각 “끌어오기”는 Stream Analytics 작업에서 처리할 이벤트 일괄 처리를 반환한다는 내용도 이해하셨을 것입니다.You likely also understand that Stream Analytics jobs "pull" data from data sources and each "pull" returns a batch of events for the Stream Analytics job to process. 이 끌어오기 모델은 Studio (클래식) 웹 서비스 요청에 어떤 영향을 미칩니까?How does this pull model impact the Studio (classic) web service requests?

일반적으로 Studio (클래식) 함수에 대해 설정 하는 일괄 처리 크기는 각 Stream Analytics 작업 "끌어오기"에서 반환 되는 이벤트 수로 정확 하 게 나눌 수 없습니다.Normally, the batch size we set for Studio (classic) functions won't exactly be divisible by the number of events returned by each Stream Analytics job "pull". 이 경우 Studio (클래식) 웹 서비스는 "부분" 일괄 처리를 사용 하 여 호출 됩니다.When this occurs, the Studio (classic) web service is called with "partial" batches. 부분 배치를 사용하면 끌어오기 간에 이벤트를 병합할 때 추가 작업 대기 시간 오버헤드가 발생하지 않습니다.Using partial batches avoids incurring additional job latency overhead in coalescing events from pull to pull.

Stream Analytics 작업의 모니터링 영역에 함수 관련 메트릭 세 개가 추가되었습니다.In the Monitor area of a Stream Analytics job, three additional function-related metrics have been added. 이 세 개 함수는 아래 그림에 나와 있는 것처럼 FUNCTION REQUESTS, FUNCTION EVENTSFAILED FUNCTION REQUESTS 입니다.They are FUNCTION REQUESTS, FUNCTION EVENTS and FAILED FUNCTION REQUESTS, as shown in the graphic below.

Studio (클래식) 함수 메트릭을 사용 하 여 Stream Analytics 크기 조정Scale Stream Analytics with Studio (classic) Functions Metrics

함수는 아래와 같이 정의됩니다.The are defined as follows:

FUNCTION REQUESTS: 함수 요청의 수FUNCTION REQUESTS: The number of function requests.

FUNCTION EVENTS: 함수 요청의 이벤트 수FUNCTION EVENTS: The number events in the function requests.

FAILED FUNCTION REQUESTS: 실패한 함수 요청의 수FAILED FUNCTION REQUESTS: The number of failed function requests.

핵심 내용Key Takeaways

Studio (클래식) 함수를 사용 하 여 Stream Analytics 작업의 크기를 조정 하려면 다음 요소를 고려 합니다.To scale a Stream Analytics job with Studio (classic) functions, consider the following factors:

  1. 입력 이벤트 속도The input event rate.
  2. 실행 중인 Stream Analytics 작업에 대해 허용 되는 대기 시간 (따라서 스튜디오 (클래식) 웹 서비스 요청의 일괄 처리 크기)입니다.The tolerated latency for the running Stream Analytics job (and thus the batch size of the Studio (classic) web service requests).
  3. 프로 비전 된 Stream Analytics su와 Studio (클래식) 웹 서비스 요청 수입니다 (추가 함수 관련 비용).The provisioned Stream Analytics SUs and the number of Studio (classic) web service requests (the additional function-related costs).

이 예에서는 완전하게 분할된 Stream Analytics 쿼리가 사용되었습니다.A fully partitioned Stream Analytics query was used as an example. 보다 복잡한 쿼리가 필요한 경우 Azure Stream Analytics용 Microsoft Q&A 질문 페이지에서 Stream Analytics 팀의 추가 도움을 받을 수 있습니다.If a more complex query is needed, the Microsoft Q&A question page for Azure Stream Analytics is a great resource for getting additional help from the Stream Analytics team.

다음 단계Next steps

Stream Analytics에 대한 자세한 내용은 다음 항목을 참조하세요.To learn more about Stream Analytics, see: