데이터 읽기 클라이언트는 DistributedFileSystem 인스턴스인 FileSystem 객체의 open() 메소드를 호출하여 파일을 연다. DistributedFileSystem은 파일 블록의 위치를 파악하기 위해 RPC(Remote Procedure Call)을 사용하여 네임 노드를 호출한다. 네임 노드는 각 블록마다 복제본을 가진 데이터 노드의 주소를 반환한다. 이때 클러스터의 네트워크 위상에 따라 클라이언트와 가까운 순으로 데이터 노드가 정렬된다. DistributedFileSystemd은 파일 탐색을 위한 입력 스트림인 FSDataInputStream을 클라이언트에 반환한다. FSDataInputStream은 네임 노드와 데이터 노드의 통신을 처리하는 DFSInputStream으로 Wrap..
하둡 파일시스템 하둡은 파일시스템의 추상화 개념을 가지고 있고, HDFS는 그 구현체 중 하나이다. FTP, S3, Azure 등 여러 구현체가 존재한다. 위에서 살펴본 명령어는 모든 파일시스템에서 잘 동작한다. 하지만 대용량 데이터를 처리할 때는 HDFS와 같이 데이터 지역성 최적화가 가능한 분산 파일시스템을 선택하는 것이 좋다. 인터페이스 하둡은 파일시스템의 추상화 개념을 가지고 있고, 다음은 그 구현체의 목록이다. 맵리듀스 프로그램은 어떠한 파일시스템도 쉽게 실행할 수 있지만 대용량 데이터를 처리할 때는 HDFS처럼 데이터 지역성 최적화가 가능한 분산 파일시스템을 선택하는 것이 좋다. 파일시스템의 인스턴스에 접근할 때는 주로 URI 스킴을 사용한다. 파일시스템 URI 스킴 자바 구현체 (org.ap..
명령행 인터페이스 도움말 $ hadoop fs -help 로컬에서 HDFS로 복사하기 $ hadoop fs -copyFromLocal ~/Desktop/quangle.txt hdfs://localhost/user/$USER/quangle.txt# 전체 경로 $ hadoop fs -copyFromLocal ~/Desktop/quangle.txt /user/$USER/quangle.txt# core-site.xml에 설정된 fs.defaultFS 값 사용 $ hadoop fs -copyFromLocal ~/Desktop/quangle.txt quangle.txt# 홈 디렉터리 (/user/$USER) HDFS에서 로컬로 복사하기 $ hadoop fs -copyToLocal quangle.txt ~/Deskt..
1. Maven 홈페이지에서 바이너리 파일 다운로드 2. 압축 해제 $ tar xvf apache-maven-3.8.6-bin.tar.gz 3. 환경 변수 설정 $ vi ~/.zshrc # 다음 내용 추가 후 [ESC] 누르고 :wq로 저장 export M3_HOME=/Users/jimin/Downloads/apache-maven-3.8.6 export PATH=$PATH:$M3_HOME/bin $ source ~/.zshrc 4. 설치 확인 $ mvn -version
환경 설정 파일 생성 하둡의 환경 설정 파일은 $HADOOP_HOME/etc/hadoop 경로에 있다. core-site.xml fs.defaultFS hdfs://localhost/ hdfs-site.xml dfs.replication 1 mapred-site.xml mapreduce.framework.name yarn yarn-site.xml yarn.resourcemanager.hostname localhost yarn.nodemanager.aux-services mapreduce_shuffle SSH 설정 $ sudo apt-get install ssh # MAC OS인 경우, [시스템 환경설정]-[공유]-[원격 로그인]을 활성화해야 함 $ ssh-keygen -t rsa -P '' -f ~/.s..
HDFS HDFS는 Hadoop Distributed File System의범용 하드웨어로 구성된 클러스터에서 실행되고 스트리밍 방식의 데이터 접근 패턴으로 대용량 파일을 다룰 수 있도록 설계된 분산 파일시스템이다. 범용 하드웨어 : 노드 장애 발생 확률이 높은 범용 하드웨어에서 문제없이 실행되며 장애 발생을 사용자가 알 수 없도록 작업을 수행함 스트리밍 방식의 데이터 접근 : 데이터를 한 번 쓰고 여러 번 읽음, 첫 번째 레코드를 읽는 시간보다 전체 데이터셋을 읽는 시간이 더 중요함 대용량 파일 : 수백 MB, GB, TB를 넘어 PB 크기의 데이터를 저장 분산 파일시스템 : 네트워크로 연결된 여러 머신의 스토리지를 관리 블록 블록 크기는 한 번에 읽고 쓸 수 있는 데이터의 최대량이다. 보통 블록의 크..
1. 하둡 위키 페이지에서 필요한 자바 버전 확인 $ java version 2. 하둡 배포 페이지에서 배포판 바이너리 다운로드 3. 압축 풀기 $ tar xzf hadoop-3.3.4.tar.gz # 다운로드한 파일 4. 환경 변수 설정 $ export HADOOP_HOME=/Users/jimin/Downloads/hadoop-3.3.4 # 하둡이 설치된 경로 $ export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 5. 하둡 버전 확인 $ hadoop version 6. 환경 설정 하둡은 세 가지 동작 모드가 있다. 독립 모드 (standalone) : 데몬이 실행되지 않고 모든 것이 단독 JVM 내에서 실행된다. 의사 분산 모드 (pseudo-distribu..
단일 머신에서 멀티 스레드를 활용한 병렬 처리 1. 작업을 동일한 크기로 나누기 어려움 처리해야 할 파일마다 크기가 다른 경우, 결국엔 가장 큰 파일을 처리하는 시간에 의해 전체 처리 시간이 결정된다. 최대한 동일한 크기로 나누고 싶다면 각 파일을 고정 길이의 청크 단위로 나누어 처리할 수는 있다. 2. 병렬 처리된 결과를 병합하는 데 더 많은 처리가 필요할 수 있음 파일을 병렬 처리하여 얻은 중간 결과를 모아서 추가적인 처리를 해야만 최종 결과를 얻을 수 있다. 3. 단일 머신의 처리 능력에 한계가 있음 만약 단일 머신에서 여러 개의 프로세서로 처리할 수 있는 최적의 수행 시간이 20분이라면 그 이상 빨라질 수는 없다. → 병렬 처리는 매우 복잡하므로 하둡과 같은 프레임워크를 활용하는 것이 좋다. 하둡..
데이터 저장소와 분석 하드 디스크의 용량은 크게 증가했지만 데이터 IO 속도는 그렇지 못했다. 하지만 같은 양의 데이터를 100개로 나눠서 저장하고 공유하여 병렬로 작업한다면 IO 속도를 줄일 수 있다. 이때 고려해야 할 문제들이 있다. 1. 하드웨어 장애 하드웨어를 많이 사용할수록 장애 발생 확률도 높아진다. 데이터 손실을 방지하기 위해 복제본을 만들어 여러 곳에 보관할 수 있다. 2. 분산된 데이터 병합 데이터 분석을 위해 100개로 나눠서 저장한 데이터를 병합해야 한다. 맵리듀스는 데이터 IO를 key-value 쌍의 계산으로 변환한 추상화된 프로그래밍 모델을 제공한다. 하둡의 처리 패턴 하둡 에코시스템은 분산 컴퓨팅과 대규모 데이터 처리를 위한 기반 시설이다. 최초의 하둡은 일괄 처리를 위해 만들..
안녕하세요 출근 1주 차 네이버 신입 개발자입니다 🐣 이번 포스팅에서는 네이버 신입 공채 : 기술직군 채용 과정에 대한 후기를 남겨보려고 해요. 채용 과정은 서류 접수 - 코딩 테스트 - 1차 면접 - 2차 면접 - 최종 입사 순서로 진행됐어요. 이번 채용 일정이 사전에 안내되었던 것보다 연기되어서 실제 일정도 함께 알려드릴게요. 서류 접수 : 4.2 - 4.12 → 4.19 결과 발표 코딩 테스트 : 4.24 → 5.14 결과 발표 1차 면접 : 6.2 - 6.15 → 6.24 결과 발표 2차 면접 : 7.5 - 7.8 → 7.15 결과 발표 최종 입사 : 7.28 서류 접수 서류는 지원자에 대한 기본적인 정보와 함께 1) 자신 있는 분야 2) 자신 있는 전공과목 3) 문제 해결 경험 4) 첨부자료(선..
문제 대략 위의 그림과 같이 생긴 성곽이 있다. 굵은 선은 벽을 나타내고, 점선은 벽이 없어서 지나다닐 수 있는 통로를 나타낸다. 이러한 형태의 성의 지도를 입력받아서 다음을 계산하는 프로그램을 작성하시오. 이 성에 있는 방의 개수 가장 넓은 방의 넓이 하나의 벽을 제거하여 얻을 수 있는 가장 넓은 방의 크기 위의 예에서는 방은 5개고, 가장 큰 방은 9개의 칸으로 이루어져 있으며, 위의 그림에서 화살표가 가리키는 벽을 제거하면 16인 크기의 방을 얻을 수 있다. 성은 m×n(1 ≤ m, n ≤ 50)개의 정사각형 칸으로 이루어진다. 성에는 최소 두 개의 방이 있어서, 항상 하나의 벽을 제거하여 두 방을 합치는 경우가 있다. 입력 첫째 줄에 두 정수 n, m이 주어진다. 다음 m개의 줄에는 n개의 정수로..
문제 보물섬 지도를 발견한 후크 선장은 보물을 찾아 나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 이동은 상하좌우로 이웃한 육지로만 가능하며, 한 칸 이동하는 데 한 시간이 걸린다. 보물은 서로 간에 최단 거리로 이동하는데 있어 가장 긴 시간이 걸리는 육지 두 곳에 나뉘어 묻혀있다. 육지를 나타내는 두 곳 사이를 최단 거리로 이동하려면 같은 곳을 두 번 이상 지나가거나, 멀리 돌아가서는 안 된다. 예를 들어 위와 같이 지도가 주어졌다면 보물은 아래 표시된 두 곳에 묻혀 있게 되고, 이 둘 사이의 최단 거리로 이동하는 시간은 8시간이 된다. 보물 지도가 주어질 때, 보물이 묻혀 있는 두 곳 간의 최단 거리..