하둡에 대해 알아보기 전! 우리는 기본적인 배경에 대해 알아야 한다.
하둡은 기본적으로 빅데이터를 처리하는 과정 속에서 사용된다. 빅데이터를 처리하는 흐름으로는 우선 데이터를 수집후에, 저장하고 처리한다. 그 결과를 바탕으로 분석하고 결과를 표현하게 된다. 이러한 단계 중에 빅데이터를 어떻게 저장~처리~하는지에 대한 부분을 담당하는 역할이 바로 하둡이다.
하둡은 뭐하는 친구일까? 🤔
Hadoop의 약자를 살펴보자 High-Availability Distributed Object-Oriented Platform 인데..
오우 너무 길다 ㅎ 차근 차근 살펴보자 우선
- High-Availability : 고-가용성
- Distributed : 분산된, 광범위한
- Object-Oriented : 객체 지향형
- Platform : 플랫폼
즉 ! 자바 소프트웨어 프레임워크로 대량의 자료를 분산 저장과 분석을 위한 분석 컴퓨팅 솔루션이다.
하둡은 일반적으로 하둡파일시스템(HDFS)과 맵리듀스(MapReduce)프레임워크로 시작되었으나, 여러 데이터저장, 실행엔진 등 하둡 생태계 전반을 포함하는 의미로 확장 발전되었다.
그래서 하둡이 뭐라고?
한문장으로 정리하면 수집한 데이터의 양이 너어무 많아서 분산해서 저장한다는 의미이다.
하둡이 왜 이름이 하둡인지 왜 코끼리 아이콘인지 왜 노란색인지 궁금하다면 ?
아래 페이지로 이동!
https://jisoo0310.tistory.com/10
하둡의 동작흐름
나는 하둡을 공부할때 뭐.. 대충 하둡이 뭐 하는진 알겠고, 짜잘한 개념도 다 알겠어 근데 어떻게 하둡이 그런 역할을 하는건데? 이런 질문이 딱 머리속에 돌았다. 대부분 사람들은 코딩이나 개념적 공부를 할때 많이 생각하는 질문일것이다. 하둡이 어떻게 동작하는건데? 함께 살펴보자
아주 쉽게 예를 들며 설명할것이니 끝까지 보시길바랍니다.
먼저 내가 비유하려는 세상은 젤리 세상이다. (맞습니다.. 그 젤리 푸딩같이 생긴 맛있는 젤리)
데이터 == 젤리라고 생각해보고
쪼개진 데이터 == 젤리의 자식,
즉 할머니의 자식이라고 생각해보자
어느 작은 마을 젤리세상에는 기억이 좋지 않고 나이가 많은 젤리 할머니가 살고 있는데, (할머니의 자식들은 무려 100만 여명.. )
젤리 할머니는 문을 열고 들어왔다. 품고 있던 자식들을 품에서 내려 놓는다. 그러고는 자식들을 성별로 나눠서 방에 들어가라고 한다. (할머니는 부자라.. 방이 굉장히 많다.. )
젤리 할머니는 자식들을 분류한 후 무슨방에 어떤 자식이 들어갔는지를 까먹지 않게 기록해 놓는 기록부 역할을 하는 것이 필요하다. 할머니는 나이가 들어 기억이 잘 나지 않기 때문이다..
이때 기록부는 무엇을 뜻할까요? 바로바로 메타데이터 입니다.
메타 데이터란 속성정보 라고도 불리는데, ‘데이터에 관한 구조화된 데이터’ 또는 ‘다른 데이터를 설명해 주는 데이터’ 라고 알면 쉽다.
그래도 이해가 안간다면 ? 당신은 정상적인 사람 ..
자 데이터를 표현하기 위한 목적으로 사용되는 메타데이터의 가장 좋은 예가 흔히 다들 알고 있는
**‘HTML’**이다!
데이터에 관한 구조화라는 것은 HTML 태그 안에 head, body가 있으며 body안에는 table이 올 수 있고,
table안에는 tr이 tr안에는 td가 올 수 있는 것처럼
데이터가 상위에서 하위로 나무(tree) 형태의 구조를 이루고 있다는 의미이다.
자 그렇다면 메타데이터는 어디에서 사용될까? 알아보자 !
효율적인 데이터 검색과 해석을 위해서는 메타데이터의 관리가 필수적이다. 예를 들어 구글은 전 세계에 있는 웹 페이지 정보를 데이터베이스에 저장한다. 이후, 일반 사용자들이 검색창에 어떤 단어를 검색하면, 구글 검색 엔진은 데이터베이스에서 단어와 연관된 메타 태그를 검색하는 것이다.
이처럼 메타데이터는 웹페이지뿐만 아니라 다양한 분야에서 활용되고 있다.
첫 번째로 디지털 음원 시장이다.
디지털 음원이 대중화되면서 메타데이터의 중요성 또는 가속화되고 있다. 메타데이터는 음원 시장의 기본 요소인데, 단적으로 말해, 음원 공급자는 메타데이터가 없다면 매출을 만들어 낼 수 없다. 곡 제목, 음악가를 비롯해 음원에 담겨 있는 모든 정보를 품고 있는 것이 메타데이터이기 때문이다. 그리고 음원 검색뿐만 아니라 이용자에게 새로운 음원을 추천할 때도 시스템은 메타데이터를 토대로 한다. 최근에는 음원의 인기 여부 또한 메타데이터를 기반으로 판단한다고 한다. 차트와 이용자의 검색 패턴 등을 잘 분석하면 예측이 가능하다.
하여튼!! 정리하면 다음과 같다.
하둡에서 데이터를 저장하기 전에 namenode에서 분산을 하고 저장위치를 분배한다.
그 후에 여러개 중에 지정된 datanode에 저장을 한다고 간단히 이해하자.
솔직히 위에서 namenode, datanode..하는거 이해 안된사람 있나요? 저요.
이 글은 제가 이해를 못했기 때문에 정리하는거니 보는건 선택입니다!
NameNode와 datanode에 대해 차근차근 살펴보자!
NameNode는 분산 처리 시스템에서 Master를 담당하며, 메타데이터 관리와 데이터노드를 관리한다.
NameNode의 과정
- namenode는 각 데이터노드에서 전달하는 메타데이터를 받은 후에 전체 노드의 메타데이터 정보와 파일 정보를 묶어서 관리한다.
- 파일 시스템을 유지하기 위해 메타데이터를 관리한다.
- 데이터를 저장할 시 기본적으로 블록단위로 들어오게 된든데, 이때 들어온 블록들을 어느 데이터노드에 저장할 지를 정해준다.
데이터노드는 실제로 데이터를 저장하는 컴퓨터이기 때문에 에러가 발생할 수 있다.
따라서 네임노드와 데이터노드느 3초마다 하트비트(heartbeat)를 주고 받는다.
쉽게 말하면 데이터 노드에서 살아있다고 네임노드에 문서를 보내 알려주는 것이다.
이러한 알림을 3초마다 보내기 때문에, 알림이 안오면 문제가 생겼다고 판단하게 된다.
이러한 문제가 생긴다면 다른 데이터 노드에 복제된 블럭을 가지고 와서 사용하면 된다.
[ 네임노드의 중요성 ]
네임노드가 없으면 파일시스템은 동작하지 않는다. 네임노드를 실행하는 머신이 손상되면 파일시스템의 어떤 파일도 찾을 수 없다. 데이터노드에 블록이 저장되어 있지만 이러한 블록 정보를 이용하여 파일을 재구성할 수는 없기 때문이다. 따라서 네임노드의 장애복구 기능은 필수적이다.
메타데이터란 ?
쉽게 말하면 몇개의 룰만 지키며 사용하는 인스타그랩 해시태그 이다.
누구보다 쉽고 빠르게 검색할 수 있도록 만들어진 해시태그이다,
메타데이터가 중요한 이유?
- 검색성
- 범용성
- 검색성 : 우리가 인스타그램에서 해시태그 없이 벚꽃사진을 찾을 수 있을까?
- 범용성 : 해쉬태그를 사용해서 벚꽃 사진을 수천만개를 찾았다. 그럼 이 벚꽃사진들은 나의 지인? 친구들 일까?
불특정다수가 올린 자료를 여러 분야에 활용할 수 있다.
데이터노드(DataNode)?
데이터들이 저장되는 컴퓨터이다. 데이터노드는 파일을 저장하는 역할을 하며, 이때 파일은 블록단위로 저장된다. 데이터노드는 주기적으로 네임노드에 하트비트와 블록리포트를 전달한다.
하트비트 : 데이터노드의 동작여부를 판단하는데 이용되고, 네임노드에서는 하트비트가 전달되지 않는 데이터 노드는 동작하지 않는 것으로 판단하여 더이상 데이터를 저장하지 않도록 설정한다.
블록리포트 : 블록의 변경사항을 체크하고, 네임노드의 메타데이터를 갱신한다. 블록파일은 사용자가 설정한 위치에 저장한다.
Hadoop version 3 사용하는 이유 ?
하둡이 3버전으로 업그레이드 되면서 가장 눈에 띄었던 특징 중에 하나는 Erasure coding이 도입되었다는 것이다. 기존 2버전에서의 하둡은 Hot data든, Cold data든 모두 같은 복제 정책을 가지고 보관해야만 했다.
- 에레이져 코딩 도입으로 기존의 블록 복제를 대체하는 방식으로 HDFS 사용량을 감소시켰다.
- YARN 타임라인 서비스를 도임하여 기존 타임라인 서비스 보다 많은 정보를 확인가능하다.
- JAVA8을 지원한다.
- 2개 이상의 네임노드를 지원하여 스탠바이노드를 여러개 지원가능해졌다.(원래 하나만 가능)
하둡할때 왜 가상머신을 masterf랑 worker로 나눌까 ?
빅데이터 처리 성능 평가를 위하여 총 8개의 싱글보드를 사용하여 하둡 클러스터를 구성하였다.
각 싱글보드는 네임노드와 보조네임노드 데이터 노드를 구성하고 있으며 데이터 노드는 최대 6개까지 사용할 수 있따. 또한
왜 format을 하는거지?
HDFS는 뭐지?
Hadoop Distributed FileSystem의 약자로 하둡 분산형 파일 시스템 (hdfs)는 하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템으로 실시간 처리보다는 배치 처리를 목적으로 설계되었다. 따라서 작업량 이 적거나 빠른 데이터 응답이 필요한 작업에서는 적합하지 않다.
HDFS의 4가지 특성 ?
기본적으로 HDFS는 데이터를 블록단위로 나눠서 저장한다. 따라서 큰 데이터를 나누어 저장하므로 단일 디스크보다 큰 파일도 저장이 가능하다. 256mb라면 1G (1 기가) 파일을 4개의 블록으로 나눠서 저장한다. 만약 블록단위보다 적은 크기의 파일이라면 파일을 나누지 않고 그냥 그대로 저장한다.
블록에 문제가 생겨 데이터가 손실되는 경우를 막기 위해 HDFS는 각 블록을 복제하여 중복을 저장한다.즉, 하나의 블록은 3개의 블록으로 복제되어 저장한다. 따라서 1기가 데이터를 저장할 때 3기가의 저장공간이 필요하다고 할 수 있다.
HDFS는 읽기 중심을 목적으로 만들어 졌기 때문에 파일의 수정은 지원하지 않는다.
맵리듀스는 hdfs의 데이터의 지역성을 이용해서 처리 속도를 증가시킨다.
데이터를 처리할 때 데이터를 알고리즘이 있는 곳으로 이동시켜 처리하지 않고, 데이터의 위치에서 알고리즘을 처리하여 데이터를 이동시키는 비용을 줄일 수 있다.
HDFS 구조
기본적으로 HDFS는 마스터 , 슬레이브 구조이다.
마스터/슬레이브(Master/slave)는 장치나 프로세스(실행중인 프로그램, master)가 하나 이상의 다른 장치나 프로세스(슬레이브)를 통제하고 통신 허브 역할을 하는 비대칭 통신 및 제어 모델을 의미한다.
아래의 그림처럼 분산처리 시스템이기 때문에 MapReduce와 HDFS는 기본적으로 Master와 Slave의 관점으로 구분이 된다. 쉽게 말하면,
분산되어 있는 것들을 관리할 Master가 필요하다고 생각하면 좋다. 즉 일을 시킬 컴퓨터가 하나는 있어야 한다.
아래의 그림처럼 분산처리 시스템이기 때문에 MapReduce와 HDFS는 기본적으로 Master와 Slave의 관점으로 구분이 된다. 쉽게 말하면,
분산되어 있는 것들을 관리할 Master가 필요하다고 생각하면 좋다. 즉 일을 시킬 컴퓨터가 하나는 있어야 한다.
MapReduce는 일을 어떻게 나눠서 수행하는지를 Master에서 관리하고, HDFS는 저장 시 어떻게 분산 저장할 지를 Master에서 관리한다.
HDFS는 마스터 블레이브 구조로 하나의 네임노드와 여러 개의 데이터노드로 구성된다.
네임노드는 메타데이터를 가지고 있고, 데이터는 블록단위로 나누어 데이터노드에 저장한다. 데이터를 읽고 쓰려면 사용자는 메타데이터를 가지고 있는 네임노드를 이용하면 된다;
위에서 자꾸 블록 블록~~이라고 했는데 이번 엔 블록에 대해 자세하게 알아보자
블론이란 Hadoop의 hdfs는 파일을 블록이라고 하는 작은 크기의 블록으로 나뉜다.
hdfs는 지정한 크기의 블록으로 나누어지고 각각 독립적으로 저장된다.
지정한 크기보다 작은 파일은 실제 파일 크기의 블록으로 저장되고, 지정 크기보다 크다면 나눠서 저장된다. 따라서 파일의 모든 블록은 마지막 블록을 제외하고 동일한 크기이다.]
HDFS 데이터 블록은 기본적을 검색및 네트워크 트래픽 비용을 줄여준다. 기본적으로 128mb의 크기의 덩어리이며, 크기는 재설정이 가능하다.
맵리듀스(Map Reduce)
맵리듀스의 기원은 구글에서 만든 Map Reduce라는 알고리즘에서 탄생됐다. 즉, Goggle MapReduce를 참고해서 Hadoop MapReduce 프레임워크를 만든것이다. 정리하면, 하둡은 분산처리가 가능한 시스템과 분산되어 저장된 데이터를 병렬로 처리가능하게 하는 맵리듀스 프레임워크의 결합한 단어라 할 수 있다. 즉, **하둡 분산 파일 시스템(HDFS)**은 대용량 파일을 지리적으로 분산되어 있는 수많은 서버에 저장하는 솔루션이며, 맵-리듀스는 분산되어 저장된 대용량 데이터를 병렬로 처리하는 솔루션이다.
여기부터 집중!!
맴리듀스는 대용량 데이터 처리를 위한 분산 프로그래밍 모델이다.
분산되어 있는 데이터를 분석하려고 한다. 이때 분산된 데이터를 굳이 한 곳으로 모아서 분석을 한다면, 굉장히….오오래 걸리고 비효율적일 것이다.
따라서 특정 데이터를 가지고 있는 데이터 노드만 분석을 하고 결과만 받는 것이 바로 바로바로
맵 리듀스이다.
맵 리듀스의 역할
통합분석이 아닌, 개별분석 후 결과를 취합한다고 생각하자.
예를 들어보면 100개의 자료를 한명이 보는 것보다. 100명이 하나씩 보는 것이 훨씬 빠르다. 이것이 분산처리의 핵심인데,, 만약 여기서 하나의 자료의 크기가 다르거나, 정확한 일의 배분이 힘들 경우를 해결해 주는 역할이 맵리듀스의 역할이라고 할 수 있다.
맵리듀스는 Map단계와 Reduce단계로 이루어진다.
MAP단계
- Map은 분산되어있는 컴퓨터에서 처리하는 것이다.
- Map단계에서는 흩어져 있는 데이터를 key, value로 데이터를 묶어준다.
- key는 몇 번째 데이터인지, value는 값을 추출한 정보를 가진다. 예들들면, '빅데이터'가 key라면 value는 빅데이터라는 키가 몇번 나오는지 숫자가 적혀있는 것이다. 이러한 방식으로 분산되어 있는 컴퓨터에서 각각 key와 value를 구하게 된다. 구한 후에 통합하기 위해 통합하는 곳(Reduce)으로 보내주게 된다.
- 정리하면, Map은 흩어져 있는 데이터를 Key, Value의 형태의 연관성 있는 데이터 분류로 묶는 작업이다.
Reduce단계
- 최종적인 통합관리를 위해 Reduce를 해주는 것이다.
- 만약 A컴퓨터에서 빅데이터가 5번나오고 B컴퓨터에서 빅데이터가 10번 나왔다면, Reduce는 빅데이터가 총 15번 나왔다고 통합을 해주는 것이다. 통합이라는 자체가 줄여주는 의미가 있기 때문에 Reduce라고 쓰이는 것이다.
- Reduce단계는 Map단계의 key를 중심으로 필터링 및 정렬한다. 하둡에서는 이 Map과 Reduce를 함수를 통해서 구현하고 맵리듀스 잡을 통해 제어한다.
- 정리하면 Reduce는 Filtering과 Sorting을 거쳐 데이터를 추출, Map 작업 중 중복데이터를 제거하고 원하는 데이터를 추출하는 작업이다.
IT용어에서의 병목현상(bottleneck)이란?
병의 목 부분처럼 넓은 길이 갑자기 좁아짐으로써 대표적으로 교통 정체 현상, 컴퓨터 성능 저하 현상을 예로 들 수 있다.
먼저 교통 정체 현상은 2차선 도로가 1차선으로 바뀜과 동시에, 두개의 차선에서 1대씩 달리던 차들이 한개의 차선에 모두 차들이 몰려 도로가 정체되는 현상을 예로 들 수 있고,
IT 용어에서 컴퓨터 성능 저하 현상은 엄청난 양의 데이터를 순식간에 내보내더라도 메모리가 이를 제대로 소화하지 못해 성능이 떨어지는 현상을 예로 들 수 있습니다. 주로 용량이 적은 주변기기를 사용할 때 많이 발생하죠. 즉 담을 수 있는 데이터의 양은 적으나 한꺼번에 많은 양의 데이터가 유입 됨으로써 컴퓨터가 느려지는 현상을 말한다.
하둡을 이해하는데에는,, 많은 어려움이 있었습니다.
그만큼 쉽게 이해시켜드리기 위해서 이사람 왜이러나 싶을 정도로 세계관을 바꿔서 설명해보았습니다 ㅎ
긴 글 봐주셔서 감사합니다!
'빅데이터' 카테고리의 다른 글
하둡 & 하둡 에코시스템 (0) | 2022.10.27 |
---|
댓글