분류 전체보기29 YARN과 ZooKeeper? 용어 Leader = NameNode Follower = DataNode Application > Job > Stage > Task Resource = Driver Node & Executor Node의 CPU + 메모리 💡YARN YARN(Yet Another Resource Negotiator)는 App & HDFS 사이 middle layer이다. 명칭처럼 job을 실행하기 위한 resource들을 타협한다. Application 별 요구사항에 맞춰 클러스터 리소스를 제어함으로써 여러 Application이 동시 실행 가능하게 만든다. 여느 Hadoop application처럼 YARN도 master-slave 구조를 따른다. Resource Manager(RM)가 master, Node Manag.. Spark 2024. 3. 13. PageRank? PageRank란? PageRank는 Google 창업자들이자 Stanford 대학원생이던 Larry Page와 Sergey Brin이 개발한 알고리즘으로 검색 결과 페이지들을 랭킹할 때 사용된다. 그 외 SNS 사용자 랭킹 알고리즘으로도 활용할 수 있다. 핵심 아이디어는 다른 웹사이트로에서 많은 참조 링크를 받으면 중요한 웹사이트라는 것이다. 예로, 대부분의 검색 결과에서 위키피디아가 상단에 뜨는 이유는 많은 웹사이트들이 참조하기 때문이다. PageRank는 '중요한 페이지로부터 링크를 받은 페이지는 중요하다'라는 개념을 활용한다. 즉, 중요한 페이지가 주는 링크에 더 높은 점수를 주는 것이다. 결국 링크의 양과 질 모두 고려하는 알고리즘이다. 본 글에서 다루는 PageRank는 Points Distr.. Graphs 2024. 3. 3. Spark Architecture [참조 문헌]https://medium.datadriveninvestor.com/introduction-to-spark-with-python-spark-architecture-and-components-explained-in-detail-54e2ba09d6fe💡목차1. 빅데이터와 Hadoop의 등장2. Hadoop 구조의 개요3. MapReduce 방식 및 한계4. Apache Spark의 등장5. Apache Spark의 컴포넌트6. Apache Spark의 구조7. Hadoop vs. Spark8. PySpark API 개요 💡개요빅데이터의 과제는 두 가지로 요약할 수 있다.대규모 데이터 저장 및 관리데이터의 효율적인 처리, 적은 turnaround time(소요 시간)으로 비즈니스 인사이트 도출.. Spark 2024. 2. 27. Gradient Boosting(Regression)란? [참조 문헌] https://www.analyticsvidhya.com/blog/2021/09/gradient-boosting-algorithm-a-complete-guide-for-beginners/ https://explained.ai/gradient-boosting/faq.html https://towardsdatascience.com/ 설명하기 앞서, 결정 트리(Decision Tree)에 대한 선행이 필요합니다. 다음 글을 참조해주세요. https://blog.naver.com/jesuswalks/222971944290 💡개요 그래디언트 부스팅(Gradient Boosting)은 앙상블(Ensemble) 기법의 일종이며, 경사(Gradient)와 부스팅(Boosting) 알고리즘에 기반한다. 2.. Machine Learning 2024. 2. 18. Time Series(시계열 데이터)란? [참고 문헌] https://towardsdatascience.com/ https://aiemag.tistory.com/260 https://medium.com/towards-data-science/autocorrelation-for-time-series-analysis-86e68e631f77 https://towardsdatascience.com/stationarity-in-time-series-analysis-90c94f27322 https://assaeunji.github.io/statistics/2021-08-08-stationarity/ 시계열 데이터는 단순히 시간 순으로 정렬된 데이터를 뜻한다. 보통, 과거의 시계열 데이터를 독립 변수로 활용하여 미래의 시계열 데이터를 예측할 때 쓰인다. 즉,.. Machine Learning 2024. 2. 11. B-Tree & Index B-Tree Self-balancing search tree로 정렬된 데이터를 유지하며 검색, 삽입, 삭제 연산 시 시간 복잡도는 로그 시간(log2N)이다. Real MySQL에서 B-트리의 B는 Balanced라고 명시돼 있으나, 정작 이를 창안한 사람들은 B가 무엇인지 이야기한 적이 없다. 창시자들은 "B-트리에서 B가 뭔지 고민하면 할수록 B-트리를 더 잘 이해할 수 있을 것이다."라고 설명했다. B-트리는 Binary Tree와 달리 한 노드가 두 개 이상의 자식 노드를 가질 수 있다. Binary Tree의 연산 시간 복잡도는 높이에 종속되며 편향 트리라면 최악의 시간 복잡도가 O(n)이지만, B-Tree는 균형 트리라서 일정하게 O(log n)이다. 메모리에 적재할 수 없는 크기의 데이터는 .. 카테고리 없음 2024. 2. 9. Spark WordCount Example [참조 문헌] https://blog.devgenius.io/spark-map-reduce-shuffle-magic-4946cbb300ec Spark Map, Reduce & Shuffle Magic In this article, I am going to explain the internal magic of map, reduce and shuffle. blog.devgenius.io WordCount 프로그램으로 설명한다. package org.apache.spark.examples; import scala.Tuple2; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apac.. Spark 2024. 2. 7. 가상 메모리(Virtual Memory)란? - 공룡책 이 글을 왜 쓰냐? jhnyang.tistory.com 9장 내용이 없다. 공룡책만을 참조해서 작성하며 사실상 번역에 가깝다. 다음 링크의 글을 참조했다. https://os.ecci.ucr.ac.cr/slides/Abraham-Silberschatz-Operating-System-Concepts-10th-2018.pdf 가상 메모리의 정의와 이점? 가상 메모리(Virtual Memory)는 프로세스가 메모리에 전부 적재되지 않아도 실행이 가능하도록 해주는 기법이다. 즉, 가상 메모리는 프로그램이 물리 메모리의 크기보다 커도 실행될 수 있다는 이점이 있다. 더불어, 가상 메모리는 프로그래머가 메인 메모리의 크기 한계를 신경 쓰지 않고 매우 큰 프로그램도 만들어서 어느 컴퓨터에서든 실행될 수 있도록 해준다.. 카테고리 없음 2024. 2. 6. Apache Spark 성능 튜닝 Overview Apache Spark job의 성능을 개선하는 방법들은 많다. 올바른 데이터 format: Spark는 다양한 format의 데이터를 읽고 쓸 수 있으나, Parquet, ORC처럼 일부 포맷들은 더 효율적이다. 파티셔닝 전략: Spark 클러스터 내 여러 노드에 데이터를 파티션 할 수 있다. 노드 간 데이터 이동을 최소화 할 파티셔닝 기법을 사용한다. 최적의 알고리즘: Spark는 데이터 처리 task를 위한 다양한 알고리즘을 지원한다. 이 중 제일 효율적인 알고리즘을 활용한다. Configuration 변경: Configuration option에 따라 성능이 달라진다. Data processing task를 위한 옵션도 존재하며, 그 외 일반적인 옵션이 존재한다. Tool 활용: .. Spark 2024. 2. 5. Kafka 왜 쓸까? Kafka가 뭘까?카프카는 스트리밍 데이터를 실시간으로 받고 처리하는데 특화된 분산 데이터 저장소이다. 스트리밍 데이터란 수천개의 데이터 원천들로부터 지속적으로 생성되는 데이터다. 카프카와 같은 스트리밍 플랫폼은 이러한 대량으로 유입되는 데이터를 순서대로 처리할 능력이 요구된다. 카프카는 사용자에게 세 가지 기능을 제공한다: 1. 스트림 데이터의 publish 및 subscribe 2. 생성된 순으로 레코드(데이터) 스트림을 효율적으로 저장 3. 레코드들의 스트림을 실시간 처리 카프카는 실시간 스트리밍 데이터 파이프라인과 애플리케이션을 만들 때 활용된다. 메세징, 저장과 스트림 처리 기능을 제공하여 과거와 실시간 데이터 둘 다 유지하며 분석할 수 있다. Kafka가 왜 필요할까?데이터 파이프라인과 메.. Programming 2024. 2. 5. [Kafka] 가상머신(VM) 카프카 & Windows 프로듀서 통신 VirtualBox에 띄운 카프카랑 호스트 OS 프로듀서랑 통신하는 테스트를 해보고 싶었다. 위 그림이랑 비슷한 형태이다. 방법 Kafka VM (Linux) 1) 쉘에서 hostname 입력해서 hostname을 알아낸다. $ hostname user-VirtualBox 2) 카프카 브로커 설정(server.properties)를 편집한다. kafka.properties라는 이름으로 존재할 수도 있는 것 같다. listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=PLAINTEXT://user-VirtualBox:9092 listeners는 주키퍼에 등록된 카프카 브로커들끼리 통신할 때 사용되는 클러스터 내부 상 IP이다. 이때 클러스터가 클라우드에 올라가.. Programming 2024. 2. 5. [Kafka] kafka.common.InconsistentClusterIdException 에러 해결 kafka-logs 위치를 /tmp에서 다른 영속적인 디렉토리로 바꾸고 나서 브로커를 재실행 해보니 kafka.common.InconsistentClusterIdException 에러가 떴다. 에러 원인은 브로커가 주키퍼랑 연결을 시도하는 클러스터 id랑 meta.properties에 명시된 실제 클러스터 id랑 다르기 때문이라고 한다. 이것저것 해보니 대충 이해하기로는 cluster id가 meta.properties에 기록되고 브로커가 클러스터를 조인할 때 id를 명시하는데 주키퍼가 meta.properties에 기록된 cluster id를 확인해서 값이 일치하는지 확인해본다. 그래서 브로커가 명시한 cluster id를 meta.properties에 기록해주면 브로커가 정상 실행된다. 그런데 컴퓨터.. Programming 2024. 2. 5. 이전 1 2 3 다음