혼자 공부하는 컴퓨터 구조 + 운영체제

본 책은 한빛미디어에서 지원받아 작성된 글입니다.

한빛미디어에서 출판한 혼자 공부하는 컴퓨터 구조 + 운영체제입니다.

좋은 기회가 생겨 혼공컴운 책의 베타리더로 활동하게 되었습니다.

Read more

그림으로 배는 웹 구조

본 포스트는 영진닷컴 신간 서평 이벤트 차원에서 작성된 글입니다.

영진닷컴에서 새로 출간한 그림으로 배우는 웹 구조 입니다.

Read more

Single Shot MultiBox Detector(SSD)

2022 Open Source Contribution Academy 의 Pytorch Hub 번역 팀의 일원으로 Single Shot MultiBox Detector(SSD) 논문에 대한 정리 및 예제 모델 학습을 해보았습니다.

논문 배경 상황 설명

SSD는 Object Detection을 목표로 ECCV’ 16에 게제된 Paper 입니다.

arxiv에는 2015/12월에 게제 되었으며, 근처에 나온 관련 논문으로는 Fast R-CNN (ICCV' 15), Faster R-CNN (NIPS' 15), YOLO v1 (CVPR' 16)정도가 있습니다.

따라서 본 논문의 Introduction에서도 Faster R-CNN, YOLO(v1) [당시에는 YOLO가 처음 나온 시기여서 version이 따로 붙어있지 않은 상태. 현재는 v7까지 나와있음.] 과 비교하는 모습을 볼 수 있습니다.

당시의 시점에서 본 논문을 해석해봅시다.

Read more

About Block Chain

블록체인에 관심을 가지게 된 계기는.. 주변에 블록체인 회사로 이직하면서 억대연봉을 받기 시작한 한 형 덕분이다.

블록체인에 대해 알아본 내용과, 개인적인 생각을 정리해서 글로 포스트해본다.

비트코인

기존의 중앙화(Centralization)된 시스템 기반의 화폐, 전자화폐, 금융상품 등과 달리 가상화 및 분산처리가 가능한 비트코인은 블록체인 기술을 바탕으로 신뢰성과 안전성이 확보된 탈-중앙화(De-centralization) 시스템을 구축한다.

Read more

About Game Programming

Ross Bae를 통해 들은 이야기

게임업계는 콘텐츠 기반의 수익구조를 낸다. 따라서 게임개발자 역시 기획된 콘텐츠를 따라 갈 수 밖에없다.

또한 게임 엔진은 한정 되어 있기 때문에 엔진단에서의 기능개선 등에는 많은 어려움이 존재한다.

콘텐츠개발 이외의 영역에서는 게임의 유지보수, 최적화, 안티치트에 대한 개발을 주로 진행하게 된다.

유지보수는 어떠한 배포 단에서든 모두 필요한 요소이므로 설명을 생략하겠다.

최적화는 개발단에서 상당히 중요한 요소가 될 것이다.

최적화는 특히 해당 게임을 플레이하는 유저들에게 체감되는 부분이다. 더 낮은 사양에서 원활하게 돌아가게 하거나, 충돌 등의 부분에서 문제가 없는지 확인한다.

Read more

Mapreduce-Job-Process

맵리듀스 잡은 클라이언트가 잡 실행을 요청하는 단계, 해당 잡이 초기화되는 단계, 잡을 실행하기 위한 태스크를 할당하는 단계, 할당된 태스크가 실행되는 단계, 마지막으로 잡이 완료되는 단계로 구성됩니다.

1. 잡 실행 요청

맵리듀스 애플리케이션인 클라이언트가 잡 실행을 요청하면 아래와 같이 작업이 진행됩니다.

  1. 클라이언트는 org.apache.hadoop.mapreduce.Job의 waitForCompletion 메서드를 호출해 잡 실행을 요청합니다. 이때 클라이언트의 요청은 Job의 내부 컴포넌트인 JobClient에 전달됩니다.

  2. JobClient는 잡트래커의 getNewJobId 메서트를 호출해 새로운 잡ID를 요청합니다. 잡트래커는 잡의 출력 파일 경로가 정상적인지 확인한 후 잡ID를 발급합니다. 참고로 JobClient와 잡트래커는 RPC로 통신하며, JobSubmissionProtocol에 정의된 프로토콜을 사용합니다.

  3. 클라이언트는 잡을 실행하는 데 필요한 정보를 잡트래커와 태스크트래커에게 공유해야 합니다. 그래서 JobClient는 다음과 같은 파일을 HDFS에 저장합니다.

    • 입력 스플릿 정보
    • JobConf에 설명된 정보
    • 잡 클래스 파일 혹은 잡 클래스가 포함된 JAR 파일
  4. JobClient는 잡트래커의 submitJob 메서드를 호출해 잡 실행을 요청합니다.

Read more

맵리듀스란?

맵리듀스는 HDFS에 저장된 파일을 분산 배치 분석을 할 수 있게 도와주는 프레임워크입니다. 개발자는 맵리듀스 프로그래밍 모델에 맞게 애플리케이션을 구현하고, 데이터 전송, 분산 처리, 내고장성 등의 복잡한 처리는 맵리듀스 프레임워크가 자동으로 처리해줍니다.

맵리듀스의 개념

맵리듀스(MapReduce) 모델은 맵(Map)과 리듀스(Reduce)라는 두 가지 단계로 데이터를 처리합니다.

  • Map : 입력 파일을 한 줄씩 읽어서 데이터를 변형(transformation)
    • 데이터 변형 규칙은 자유롭게 정의가 가능
    • 출력 또한 한 줄에 하나의 데이터가 출력
  • Reduce : Map의 결과 데이터를 집계(aggregation)
Read more

Maven으로 Java 프로젝트 시작하기

hadoop또한 java를 사용한다. 따라서 java 프로젝트를 만들어서 사용해야합니다.

Eclipse나 InteliJ를 사용하는 것이 아닌 mac의 터미널을 사용하여 java를 빌드하고 jar 파일을 생성하여 사용할 예정입니다.

Maven을 설치하였다면 아래 순서를 따라 maven project를 만들어 볼 수 있습니다.

1. 프로젝트를 만들 디렉토리로 이동.

1
2
su bigdata
cd ~

2. maven project 생성시작

1
2
3
4
5
6
mvn archetype:generate


--- Scanning for projects (처음 한번만 오래걸림 / 이후에는 버전체크후 빠르게 넘어감) ---

--- 생략 ---
Read more

하둡 HDFS 입출력 따라해보기

Maven project에 입/출력 예제 코드 생성

우선 maven project 디렉토리로 이동해줍니다.

maven project를 만드는 방법을 모르는 분은 Maven으로 Java 프로젝트 시작하기라는 본문의 포스트를 참고해주세요.

./maven project path/src/main/java/package name/ 경로까지 들어오게되면 App.java라는 java 파일이 있는 위치까지 오게됩니다. (경로는 사람마다 다릅니다.)

필자는 프로젝트 명을 study-hadoop라고 지었고 package는 cpprhtn, 현재 경로는 /Users/bigdata/study-hadoop/src/main/java/cpprhtn 입니다.

이후에 아래와 같은 코드를 짜줍니다.

Read more

Hadoop HDFS fs Command Error

하둡 HDFS 명령어란

하둡은 사용자가 HDFS를 쉽게 제어할 수 있게 shell 명령어를 제공합니다. 이 shell 명령어는 fs(FileSystem Shell)라고 하며 아래와 같이 사용하게 됩니다.

1
2
3
4
./bin/hadoop fs -[cmd] [args]

# PATH setting이 된 경우
hadoop fs -[cmd] [args]

에러가 뜨는 경우 (WARNING은 해당사항 X)

일단 당연하게도 에러가 발생했을때, 해당 에러명을 복사해서 구글링을 해보는 방법이 첫번째 입니다.

그래도 해결되지 않는 경우에 최후의 수단으로 아래와 같은 방법을 통하여 namenode를 format해버리는 방법이 있습니다.

1
2
3
4
5
6
7
8
9
10
11
# hadoop를 실행중이라면 종료
stop-all.sh

# namenode format
hadoop namenode -format

# 하둡 실행
start-all.sh

# 명령어 작동 확인
hadoop fs -[명령어] [파라미터]