전체 글
-
[Kafka] Producer와 ConsumerData Engineer 2023. 5. 16. 19:11
Producer - 카프카의 토픽으로 메시지를 전송하는 역할 - 원하는 형태에 따라 옵션을 변경하면서 다양한 방법으로 카프카에 메시지를 전송 Producer 디자인 *ProducerRecord : 카프카로 전송하기 위한 실제 데이터 - Topic(필수, 메시지 전송 주소) / Partition(특정 파티션을 지정) / Key(특정 파티션에 레코드들을 정렬) / Value(필수, 메시지 전송) - Kafka의 특정 토픽으로 메시지를 전송 각 레코드들은 프로듀서의 send() 메서드를 통해 시리얼라이저, 파티셔너를 거치게 된다. 이때 프로듀서 레코드의 선택사항인 파티션 지정 시, 파티셔너는 아무 동작도 하지 않고 지정된 파티션으로 레코드를 전달한다. 파티션을 지정하지 않은 경우 키를 가지고 파티션을 선택해 ..
-
[Kafka] 정리_01Data Engineer 2023. 5. 14. 23:06
Kafka 주요 명령어 kafka-topics.sh = 토픽을 생성하거나 토픽의 설정 등을 변경하기 위해 사용 kafka-console-producer.sh = 토픽으로 메시지를 전송하기 위해 사용함. 기본 옵션 외 추가 옵션을 지정할 수 있고, 이를 통해 다양한 프로듀서 옵션 적용 가능 kafka-console-consumer.sh = 토픽에서 메시지를 가져오기 위해 사용하며, 기본 옵션 외 추가 옵션을 지정할 수 있고, 이를 통해 다양한 컨슈머 옵션 적용 가능 kafka-reassign-partitions.sh = 토픽의 파티션과 위치 변경 등을 위해 사용함 kafka-dump-log.sh = 파티션에 저장된 로그 파일의 내용을 확인하기 위해 사용함 Kafka 주요 요소 Zookeeper Apache..
-
[OS] vi 편집기Computer Science 2023. 5. 9. 11:40
Boaz 활동을 하다보면 linux 환경에서 파일을 편집하여 구동하는 경우가 잦다. 여러 활동을 하면서 Linux에 대한 이해가 부족하다고 생각해서 일단 가볍게 리눅스마스터 2급 취득을 목표로 틈틈이 공부중인데, 오늘 vi 편집기에 대해 알아보자. 리눅스에서 지원하는 편집기로는 pico, emacs,vi, gedit, xedit 등이 있다. vi 편집기는 유닉스 환경에서 가장 많이 쓰이는 문서 편집기이다. 다른 편집기들과 다르게 모드형 편집기이며, 명령모드 / 입력모드 / 편집모드로 구성되어 있다. 한 줄씩 편집하는 줄 단위 편집기가 아닌 한 화면을 편집하는 비주얼 에디터이며, 기종별 다양한 vi 클론들이 존재한다. vim 편집기도 있는데, vi 편집기와 호환되며 독자적으로 다양한 기능을 추가하여 만든 ..
-
3진법 뒤집기Programmers 2023. 5. 8. 23:06
문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예 n result 45 7 125 229 입출력 예 설명 입출력 예 #1 답을 도출하는 과정은 다음과 같습니다. n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현 45 1200 0021 7 따라서 7을 return 해야 합니다. 입출력 예 #2 답을 도출하는 과정은 다음과 같습니다. n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현 125 11122 22111 229 따라서 229를 return 해야 합니다. 나의 풀이..
-
[Data Engineer] Kafka란 무엇인가Data Engineer 2023. 5. 7. 23:33
Apache Kafka는 빠르고 확장 가능한 작업을 위해 데이터 피드의 분산 스트리밍, 파이프 라이닝 및 재생을 위한 실시간 스트리밍 데이터를 처리하기 위한 목적으로 설계된 오픈 소스 분산형 게시 - 구독 메시징 플랫폼이다. 당연한 얘기지만 Hadoop Ecosystem의 일부로 Kafka 공식 문서에도 설명하고 있다. Kafka는 서버 클러스터 내에서 데이터 스트림을 레코드로 유지하는 방식으로 작동하는 브로커 기반 솔루션이다. Kafka 서버는 여러 데이터 센터에 분산되어 있을 수 있으며 여러 서버 인스턴스에 걸쳐 레코드 스트림을 토픽으로 저장하여 데이터 지속성을 제공할 수 있다. 이 때 토픽은 레코드 혹은 메시지를 key , value 및 timestamp로 구성된 일련의 튜플, 즉 변경 불가능한 P..
-
[Algorithm] 여러 정렬 알고리즘Programmers 2023. 5. 2. 00:12
정렬 데이터를 특정한 기준에 따라 순서대로 나열하는 것 Selection Sort 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그다음 작은 데이터를 선택해 앞에서 두 번째 데이터와 바꾸는 과정을 반복 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i for j in range(i+1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i] # Python Swap Code print(array) 이 예제 코드에서 Swap 코드를 주목하자. Pytho..
-
[Search Engine] PageRankSearch Engine 2023. 4. 30. 23:00
PageRank 알고리즘은 세르게이 브린과 래리 페이지가 쓴 논문 에서 처음 나왔다. 앞선 포스트에서 구글은 검색엔진을 구현하는 데 수백여 가지의 알고리즘을 사용하지만 근본적인 알고리즘은 PageRank라고 할 수 있다. PageRank 알고리즘은 페이지 간 중요도를 웹페이지 간 연결관계에 기반한다. 학술지 논문을 생각해보자. 논문이 공신력이 있고 전문성과 신뢰도가 높을 수록 그 주제에 관련된 타 논문들에서의 인용횟수는 증가할것이다. 검색 엔진도 마찬가지로, 검색 결과 나타난 페이지들에 대해 특정 페이지에 대한 링크가 많이 들어가게 된다면 그 페이지는 검색하고자 하는 주제에 핵심적인 내용을 담고 있다고 할 수 있다. 주요 내용 여기서 PR은 PageRank를, d는 Damping Factor, C는 괄호..
-
[OS] Semaphore에 대해Computer Science 2023. 4. 27. 15:51
앞선 포스트에서 확인할 수 있듯이, Process Synchronization 문제에서 Critical Section 처리 방식은 상당히 중요하다. OS가 동기화 문제를 일으키지만, 앞선 포스트에서 봤듯 소프트웨어적인 알고리즘으로는 비효율적인 문제와 과잉 양보 문제가 발생하므로, 하드웨어적 접근이 필요하다. 하드웨어 적으로 Test & Modify를 원자적으로 수행할 수 있도록 지원하게 되면, Critical Section 문제는 간단히 해결된다. Synchronization variable boolean lock = false; Process P_i do { while(Test_and_Set(lock)); critical section lock = false; remainder section } 이 p..