책 '빅데이터를 지탱하는 기술' 에서 발췌한 '영어로 표현해보고 싶은 문장들' 임

- 빅데이터를 지탱하는 기술 공부 필기 : https://eyeballs.tistory.com/m/574

 

 

< 3. 빅데이터의 분산 처리 >

 

별도의 언급이 없는 한, 구조화 데이터는 항상 열 지향 스토리지에 보관한다.
→ Unless otherwise stated, structured data is always stored in column-oriented storage.

Hadoop 의 기본 구성 요소는 MR, HDFS, YARN 3 가지다.
→ The core components of Hadoop are MapReduce (MR), HDFS, and YARN.

모든 분산 시스템이 Hadoop 에 의존하는 것은 아니다. Hadoop 의 일부만 사용하거나, 전혀 이용하지 않는 구성도 있다.
→ Not all distributed systems rely on Hadoop. Some use only parts of it, while others don’t use it at all.

다양한 소프트웨어 중에서 자신에게 맞는 것을 선택하고 그것들을 조합하여 시스템을 구성한다.
→ You choose the software that fits your needs and combine them to build your system.

다수의 컴퓨터에 파일을 복사하여 중복성을 높인다.
→ Files are replicated across multiple machines to increase redundancy.

HDFS 는 분산 시스템의 스토리지를 관리하며, 데이터가 항상 여러 서버에 복사되도록 한다.
→ HDFS manages storage in distributed systems and ensures that data is always copied to multiple servers.

HDFS 와 YARN 은 서로 연계하여 동작하기 때문에, 되도록 데이터와 가까운 노드에서 작업을 실행한다.
→ Since HDFS and YARN work together, jobs are preferably executed on nodes close to the data.

분산 시스템에서는 호스트 수에 따라 사용 가능한 리소스의 상한/하한이 결정된다.
→ In distributed systems, the number of hosts determines the upper limit/lower limit of available resources.

한정된 리소스로 다수의 분산 작업들이 동시에 실행되므로, 작업들 간 리소스 쟁탈(경쟁)이 발생한다.
→ Because many distributed jobs run simultaneously with limited resourcesresource contention(competition) occurs between jobs.

리소스 관리자는 어느 작업에 얼마만큼의 리소스를 할당할 지 관리한다.
→ The resource manager controls how much resource is allocated to each job.

리소스 관리자를 사용하면 작업마다 실행의 우선순위를 결정할 수 있다.
→ By using a resource manager, you can set the execution priority for each job.

중요하지 않은 배치처리에 낮은 우선순위를 부여하여, 아무도 리소스를 사용하지 않은 경우에 실행되도록 한다.
→ You can assign low priority to non-critical batch jobs so they run only when no one else is using the resources.

MapReduce 로 작은 프로그램을 실행하면 오버헤드가 너무 크기 때문에, 몇 초 안에 끝나는 쿼리 실행에는 적합하지 않다.
→ Running small programs with MapReduce causes too much overhead, so it’s not suitable for queries that finish in just a few seconds.

Spark 는 대량의 메모리를 활용하여 작업의 고속화를 실현한다.
→ Spark achieves high-speed processing by utilizing large amounts of memory.

Spark 는 중간 데이터를 디스크에 쓰지 않고 메모리에 보존한다. 컴퓨터가 비정상적으로 종료되면, 중간까지 처리한 중간 데이터는 사라져 버린다. 잃어버린 데이터는 재처리하여 다시 만들면 된다.
→ Spark keeps intermediate data in memory instead of writing it to disk. If the computer crashes, the intermediate data that was being processed is lost. The lost data can simply be reprocessed and recreated.

Hive 는 외부테이블의 데이터를 Hive 의 내부로 가져오지 않아도 집계가 가능하다.
→ Hive can aggregate data from external tables without importing it into Hive's internal storage.

형식 변환 후 테이블 집계 시간이 1.5초로 단축되었다.
→ After converting the format, the table aggregation time was reduced to 1.5 seconds.

즉, 정형 데이터든 비정형 데이터든 간에, Hive 가 읽을 수 있는 형식이라면 Hive 에서 쿼리할 수 있다.
→ In other words, whether the data is structured or unstructured, as long as it(data) is in a format that Hive can read, it can be queried with Hive.

Hive 와 Presto 의 차이에 대해서는 나중에 언급한다.
→ The differences between Hive and Presto will be discussed later.

서브 쿼리 안에서 레코드 수를 줄이는 방법은 다음과 같다.
→ Here’s how you can reduce the number of records within a subquery.

데이터의 편향을 방지하는 방법은 다음과 같다.
→ Here’s how to prevent data skew.

데이터 양이 적을 때는 문제가 없지만, 장기간에 거쳐 대량의 데이터를 집계할 때는 문제가 된다.
→ There’s no issue when the data volume is small, but problems arise when aggregating large amounts of data over a long period.

중복이 없는 값을 세려면 데이터를 한 곳에 모아야 한다.
→ To count distinct values, the data must be gathered in one place.

액세스 로그를 집계하여 일별 고유 유저 수의 추이를 알 수 있다.
→ By aggregating access logs, you can track the trend of daily unique users.

하루 데이터양이 거의 균등하다는 조건이 전제되어야 한다. 

만약 데이터에 편차가 있다면 문제가 된다. 

분산 시스템의 성능을 발휘하기 위해서는 데이터의 편차를 최대한 없애고, 모든 노드에 데이터가 균등하게 분산되도록 해야 한다.
→ It’s important to assume that the daily data volume is roughly uniform.

If there are variations, it can cause problems. 

To get the best performance from a distributed system, you need to minimize data skew and ensure that data is evenly distributed across all nodes.

 

일반적인 MPP 데이터베이스에서는 스토리지와 컴퓨팅 노드가 밀접하게 결합되어 있어 처음에 데이터를 로드하지 않으면 집계를 시작할 수 없다.
→ In typical MPP databases, storage and compute nodes are tightly coupled, so aggregation cannot begin until the data is first loaded.

Presto 는 Hive 메타스토어에 등록된 테이블을 가져올 수 있다.
→ Presto can access tables registered in the Hive metastore.

Presto 는 SQL 실행에 특화된 시스템이다. 쿼리를 분석하여 최적의 실행 계획을 생성하고, 그것을 자바의 바이트코드로 변환한다. 바이트 코드는 Presto 의 여러 워커 노드에 배포되고 실행된다.
→ Presto is a system specialized in executing SQL. It analyzes queries to generate an optimized execution plan, then converts that plan into Java bytecode. The bytecode is distributed to and executed on multiple Presto worker nodes.

리소스가 부족해지면, 나중에 실행된 쿼리는 앞의 쿼리가 끝날 때까지 기다려야 한다.
→ If resources become insufficient, queries that are executed later must wait until earlier ones finish.

Presto 는 모든 데이터 처리를 메모리상에서 실시하고, 메모리가 부족하면 여유가 생길 때까지 기다리거나 오류로 실패한다.
→ Presto performs all data processing in memory, and if memory runs out, it either waits for resources to free up or fails with an error.

취급하는 데이터의 양이 아무리 많아도, 그에 비례하여 메모리 소비가 늘어나지는 않는다.
→ No matter how large the data volume is, memory usage doesn’t necessarily increase proportionally.

단순한 반복 처리를 할 때 메모리 소비량은 거의 고정이다.
→ When performing simple repetitive tasks, memory consumption remains nearly constant.

분산 결합에서는 노드 간 데이터 전송을 위한 네트워크 통신이 발생하기 때문에, 종종 쿼리의 지연이 발생한다.
→ In distributed joins, network communication between nodes is required to transfer data, which often causes query latency.

한쪽 테이블이 충분히 작은 경우에는 '브로드캐스트 조인'을 사용하여 처리 속도를 크게 고속화할 수 있다.
→ When one of the tables is small enough, a broadcast join can be used to significantly speed up processing.

이 경우, 결합하는 테이블의 모든 데이터가 각 노드에 복사된다. 처음에 한 번 복사하면, 작은 테이블을 재배치 할 필요가 없어진다.
→ In this case, all data from the joined table is copied to each node. Once it's copied initially, there’s no need to redistribute the small table again.

수백만 레코드를 갖는 데이터를 1초 미만으로 집계할 수 있다.
→ You can aggregate data with millions of records in under one second.

 

확장성 및 유연성 측면에서는 분산 시스템이 유리하다.
→ Distributed systems have advantages in terms of scalability and flexibility.

MapReduce 로 데이터를 집계하기 위해 데이터 처리를 프로그래밍해야 한다.
→ To aggregate data with MapReduce, you need to program the data processing logic.

Hadoop 상의 분산 애플리케이션은 높은 확장성과 내결함성을 목표로 설계되어 있다.
→ Distributed applications on Hadoop are designed with high scalability and fault tolerance in mind.

부분적으로 장애가 발생해도, 전체적으로 처리를 계속할 수 있다.
→ Even if a partial failure occurs, processing can continue as a whole.

Tez 는 MapReduce 를 대체하는 것이며, 그 내결함성을 계승하고 있다.
→ Tez is a replacement for MapReduce and inherits its fault tolerance.

분산 시스템의 동향은 서서히 인 메모리 데이터 처리로 옮겨 가고 있다.
→ The trend in distributed systems is gradually shifting toward in-memory data processing.

Presto 는 Hive 와 정반대인 쿼리 엔진이며, 속도를 높이기 위해 다양한 것을 희생한다.
→ Presto is a query engine that is the complete opposite of Hive and sacrifices various things to maximize speed.

Presto 는 대화식 쿼리의 실행에 특화되어 있다.
→ Presto is specialized for executing interactive queries.

Presto 쿼리는 단시간에 대량의 리소스를 소비하기 때문에, 너무 무리하게 사용하면 다른 쿼리를 실행할 수 없게 된다.
→ Presto queries consume a large amount of resources in a short time, so excessive usage can prevent other queries from running.

Spark 는 일련의 프로세스를 한 번에 데이터 처리로 기술할 수 있다.
→ Spark allows you to describe a series of processes as a single data processing flow.

Spark 에서는 메모리를 어떻게 관리하느냐가 중요하다.
→ Memory management is crucial in Spark.

그것은 데이터 분석 환경에서 다소 난이도가 높은 작업이 될 수 있다.
→ This can be a relatively challenging task in a data analysis environment.

 

Mesos 는 YARN 보다 더 엄격하게 리소스를 제어한다.
→ Mesos controls resources more strictly than YARN.

Mesos 는 job이 요구한대로 클러스터 내 자원을 확보해 job 에 전달한다.
→ Mesos allocates the requested resources from the cluster and provides them to the job.

job 은 되도록 데이터 부근에서 실행하는 것이 효율이 높다.
→ It is more efficient to run jobs as close to the data as possible.

빅데이터 분석은 데이터를 구조화하는 것부터 시작하며, 그 중에서 압도적으로 많은 부분을 차지하는 것이 팩트 테이블이다.
→ Big data analysis begins with structuring the data, and fact tables account for the vast majority of that structure.

팩트 테이블의 작성에는 추가(append) 와 치환(replace) 의 두 가지 방법이 있다. '추가'는 새로 도착한 데이터만을 증분으로 추가한다. '치환'은 과거의 데이터를 포함하여 테이블 전체를 치환한다.
→ There are two ways to build a fact table: append and replace. 

Append adds only the newly arrived data incrementally, while replace replaces the entire table, including past data.

'추가'에 실패하면 팩트 테이블의 일부에 결손이 발생한다.
→ If the append process fails, part of the fact table may be missing data.

'추가'가 여러번 실행되면 팩트 테이블에 중복이 발생한다.
→ If append is run multiple times, it may result in duplicate records in the fact table.

테이블 파티셔닝이란, 하나의 테이블을 여러 물리적인 파티션으로 나눠 관리하는 것이다. 테이블을 파티션 단위로 정리하여 데이터를 쓰거나 삭제할 수 있다.
→ Table partitioning means dividing one table into multiple physical partitions for management. 

You can write or delete data on a partition basis.

일반적으로 1일 1회, 혹은 1시간에 1회 주기로 자주 새 파티션을 만들고, 각 파티션은 매번 교체하도록 한다.
→ Typically, new partitions are created frequently—once a day or once an hour—and each partition is replaced each time.

테이블 파티셔닝은 데이터 웨어하우스를 구축하는 데 유용하다.
→ Table partitioning is useful for building a data warehouse.

팩트 테이블 전체를 치환하는 것은 많은 장점이 있다. 데이터 중복이나 데이터 결손 가능성이 거의 없으며, 스키마 변동에도 유연하게 대처할 수 있다.
→ Replacing the entire fact table has many advantages: it minimizes the risk of data duplication or loss, and it handles schema changes more flexibly.

오래된 데이터는 자동으로 지워진다.
→ Old data is automatically deleted.

각 데이터 처리가 1시간 이내에 완료되도록 기준을 세운다.
→ Set a standard so that each data processing job completes within one hour.

카디널리티(Cardinality)는 특정 데이터 집합에서 고유한 값(unique values)의 개수를 의미한다.
→ Cardinality refers to the number of unique values in a given dataset.

카디널리티를 무리하게 낮추면 원래 있던 정보가 크게 손실되므로, 필요 이상으로 줄이지 않도록 한다.
→ Excessively reducing cardinality can lead to significant information loss, so avoid lowering it more than necessary.

정기적으로 테이블을 통째로 저장하는 방법을 '스냅샷 테이블'이라고 한다. 이와 반대로, 변경 내용(이력)만을 저장하는 방법을 '이력 테이블' 이라고 한다.
→ Regularly saving the entire table is called a “snapshot table.” In contrast, storing only the changes (history) is called a “history table.”

차후의 데이터 분석을 생각하면 스냅샷 테이블 쪽이 취급하기 더 쉽다.
→ Considering future data analysis, snapshot tables are easier to handle.

미리 모든 테이블을 결합하여 비정규화한 상태에서 스냅샷 테이블을 생성하는 것이 더 편하다.
→ It’s more convenient to create a snapshot table after pre-joining all the tables in a denormalized form.

시스템 고도화란, 기존 시스템의 기능, 성능, 안전성 등을 향상시키는 과정이다.
→ System advancement refers to the process of improving the functionality, performance, and reliability of an existing system.

 

 

 

 

 

 

 

 

+ Recent posts