'하둡'에 해당되는 글 3건

HDFS (Hadoop Distributed File System)



1. HDFS (Hadoop Distributed File System)의 개요

 1-1. 정의

   - 저비용의 수백 내지 수천 노드를 가지는 클러스터를 이용하여 기가 바이트 또는 테라 바이트의 대용량 데이터 집합을 처리하는 응용 프로그램에 적합하도록 설계한 분산 파일 시스템

 

 1-2. 특징

    1) 빅데이터 처리 : 대용량 데이터 처리를 위한 경제성, 유연성, 확장성 제공 

    2) TCO 절감 : Linux 및 저가형 서버 구성에도 신뢰성 있는 파일 시스텔 제공

    3) Fault Tolearance : 디스크 I/O 장애에도 Replication 기법 등을 통해 높은 가용성 제공

    4) 효율적인 분산 파일 시스템 : 메타데이터 활용을 통해 SAN과 같은 별도 장비 없이 구현 가능


2. HDFS (Hadoop Distributed File System) 구성도, 구성요소, 처리절차

  2-1. HDFS (Hadoop Distributed File System) 구성도


  2-2. HDFS (Hadoop Distributed File System) 구성요소

    - Name Node : 파일 시스템의 Metadata을 관리하는 서버

    - Data Node : 실제 데이터를 저장 유지하는 서버

    - Secondary Name Node : Name Node의 Metadata 로드가 실패시 Backup Node로써 사용

    - Job Tracker : 분산 환경에서 작업을 분산시키는 스케쥴작업

    - Task Tracker : Data Node에서 Map-Reduce 역할을 수행


3. HDFS (Hadoop Distributed File System) 동작

  1) Data Read

    - 클라이언트는 Name Node로 해당 파일의 블록 위치를 요청

    - Name Node는 복제 블록이 저장된 곳을 확인후, 클라이언트에게 가까운 순서로 정렬해서 반환

    - 클라이언트는 Data Node에게 블록 데이터 요청


   2) Data Write

     - 클라이언트는 Name-Node로 해당 파일 생성요청

     - Name Node는 해당 파일 블록을 저장할 Data Node의 목록으로 전달

     - 클라이언트는 첫번째 Data Node에게 데이터 전송

     - 데이터 복제는 Data Node간 파이프 라인을 통해 이루어짐


'1. IT Story > Basic Studies' 카테고리의 다른 글

3D 프린팅 (제조업의 혁신)  (0) 2019.02.24
빅데이터 (Big Data)  (0) 2019.02.21
OR_MAPPING (Object Relational Mapping)  (0) 2019.02.20
드론 (Drone)  (0) 2019.02.19
데이터사이언티스트  (0) 2019.02.16
R (빅데이터 분석 소프트웨어)  (0) 2019.02.15
스마트 데이터 (Smart Data)  (0) 2019.02.14
CQL (Continuous Query Language)  (0) 2019.02.12
블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



Oracle VM-UBUNTU

   

  • 새로 만들기(유분투)

       

   

   

   

  • 메모리(2048MB) 설정

       

   

   

   

   

   

  • 유분투 설치

       

       

       

       

       

  • 게스트 확장 설치

       

       

  • 공유폴더 지정

       

       

  • Root 유저 사용을 위한 Passwd 변경

       

       

       

(Root 유저)

   

Mkdir -p /media/shared

   

Mount -t vboxsf shared /media/shared

   

Vi /etc/init.d/rc.local

   

Mount -t vboxsf shared /media/shared

   

UBUNTU Telnet 서버스 설치

  • Hadoop 설정시 Telnet 과 SSH가 열려 있어야 합니다.

       

    • Telnet 패키지 설치 (root 유저)

Apt-get install xinetd

Apt-get install telnetd

   

  • Vi /etc/xinetd.conf

       

   

service telnet

   

{

disable = no

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

   

}

   

/etc/init.d/xinetd restart

Telnet restart

   

   

  • Telnet 접속확인

Telnet localhost

   

   

  • Network 설정

     

     

       

       

       

       

       

UBUNTU SSH 설치

   

  • SSH Pkg 설치

Apt-get install openssh-server openssh-client

  • Key 생성

Ssh-keygen -t rsa -P ""

   

   

  • 인증키 복사

Cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

   

자바설치

   

  • 설치파일

Chmod +x jdk-6u38-linux-i586.bin

./jdk-6u38-linux-i586.bin

   

update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/bin/javac 1

update-alternatives --install /usr/bin/java java /usr/lib/jvm/bin/java 1

update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/bin/javaws 1

   

  • Java version 확인

Java -version

   

   

   

Hadoop 설치 - Pseudo mode

  • Local Mode, Pseudo Mode, Cluster Mode 중 Pseudo Mode 설치

       

  • 설치파일

Tar xvzf ./hadoop-0.20.2-cdh3u5.tar.gz

   

  • Hadoop psuedo-mode 설정
  • Home/hadoop/hadoop-0.20.2-cdh3u5/conf

       

  • Core-site.xml : namenode

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>

~

  • Hdfs-site.xml : HDFS 관련 설정, 복제경로

<configuration>

<property>

<name>fds.replication</name>

<value>1</value>

</property>

</configuration>

  • Mapred-site.xml : Job Tracker 위치 및 Task 정보

   

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>hdfs://localhost:9001</value>

</property>

</configuration>

  • Hadoop-env.sh : 하둡 데몬관련 환경변수

export JAVA_HOME=/usr/lib/jvm

   

  • 환경변수 설정(.profile)

export JAVA_HOME=/usr/lib/jvm

export PATH=$PATH:$JAVA_HOME/bin

export HADOOP_HOME=/home/hadoop/hadoop-0.20.2-cdh3u5

   

Hadoop 구동(/home/hadoop/hadoop-0.20.2-cdh3u5)

  • Hadoop namenode -format

       

Hadoop 실행 및 프로세스 확인

  • ./start-all.sh
  • /usr/lib/jvm/bin/Jps

  • 기타 명령어
    • Hadoop fs -ls
    • Hadoop fs -mkdir
    • Hadoop fs -put
    • Hadoop fs -rmr
    • Hadoop fs -cat
    • Hadoop fs -getmerge

         

예제 1 WordCount

   

  • 디렉터리 생성 및 분석 파일 업로드

  • MapReduce 실행

       

  • 결과 확인

       

       

       

       

  • Monitoring

       

    NameNode : 50070

    DataNode : 50075

    Secondary NameNode : 50090

    Bakcup / Checkpoint Node : 50105

    JobTracker : 50030

    TraskTracker : 50060

       

       

[참고자료]

거침없이 배우는 하둡(Hadoop IN Action)

http://hadoopdb.sourceforge.net/guide/

http://hadoop.apache.org/docs/r0.20.2/hdfs_design.html

http://www.ibm.com/developerworks/kr/library/

http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Big Data Vs RDBMS

   

  • 정형화된 비즈니스적인 중요 데이터의 경우 RDBMS 사용
  • RDBMS: seletct -> 처리 -> 보내기 / Big-Data : 작동방식(funtion)-> 처리 -> 처리완료
  • 개발 방식의 변화 OOP(object-oriented Programming) -> FP(Funtion Programming)
  • 비즈니스적으로는 중요하지만, 분석을 통하여 새로운 정보를 추출하는 경우 Big-Data 사용
  • 결론적으로, RDBMS와 Big-Data는 적절한 업무 및 환경 파악을 통하여 효율적인 구축이 필요합니다. ( 각 업무와 환경에 맞는 DB를 선택적으로 선별하여 사이트구축, 정형화되고 표준화된 Database -> 비정형화되고 다양한 형태의 Database 형태로 변화하고 있습니다)

       

데이터 분석 순서

  • 데이터 수집 ( Flune,Scribe, Chukwa)
  • 데이터 저장 ( HDFS)
  • 트렌젝션 데이터저장 (NO-SQL)
  • 실시간 분석 (S4, Strom, OEP)
  • 배치 분석 (Map/Reduce)
  • 데이터 마이닝/통계 ( Mahout R)
  • 클러스터 관리 (zookeeper, HIVE)
  • 데이터직렬화 (Arvo 등)

   

HaDoop Distributed File System

   

  • HDFS 의 장단점
    • 장점 : X86 장비내보 로컬디스크, 수천개의 대규모 클러스터, 고가용성(1-5000), 장애시 자동감시 및 복구, 서버 추가 및 재설치 불필요, 분석용 데이터 저장가능
    • 단점 : 저장가능한 파일수의 한계, Namenode의 SPOF, 범용스토리지를 사용할 경우의 제약
      • 단일 고장점(single point of failure, SPOF)는 시스템 구성 요소 중에서, 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다.

           

  • 데이터 저장 방식
    • NameNode에서 해당 데이터의 위치정보를 따라 Client를 통해 DataNode에 내려가게 되면, 해당 데이터는 복제(default: 3) 되어 DataNode에 저장됩니다.
    • DataNode가 사용할 수 없게 될 경우, NameNode에서는 해당데이터와 같은 내용이 복제되어 저장된 DataNode의 메타정보를 통하여 Read & Write를 진행하고 다시 한번 더 복제가 발생하여 보관됩니다.

   

   

Name Node

   

  • NameNode: 실데이터 DataNode 분산저장, 각 데이터 위치에 대한 메타정보 및 변경된 내역에 대한 Log정보를 가지고 있습니다.(기본 64MB, 복제: 3), 메모리 상에 올려놓고 각 데이터의 위치정보를 주는 역할과 변경된 내용을 저장하는 역할을 담당합니다.
  • Fsimage : 각 데이터의 위치정보, 메타정보를 가지고 있어서 쓰기 및 읽을 경우, 반드시 Name Node를 통하여 데이터를 이용할 수 있습니다.(메타정보관리)
  • Edit logs: DataNode에서 수정 및 반영된 모든 내용을 Edit log에 기록하는 역할을 담당합니다.(RDBMS의 Redolog와 비슷한 역할)
  • Namenode의 경우, 그 역활이 중요하기 때문에 SecondaryNameNode를 통하여 실시간(5분)으로 병합 및 동기화를 통하여 혹시나 발생할 수 있는 장애에 대비해야 합니다.
  • 1개의 NameNode에 대략 5000개의 DataNode 클러스터를 구성할 수 있습니다.

   

SecondaryNameNode

   

  • SecondaryNamenode의 경우, NameNode의 Fsimage(메타정보) 백업 및 edit log 정보를 병합 및 동기화하는 역할을 수행합니다.
  • NameNode에 장애가 발생할 경우, 백업된 메타정보와, 병합 및 동기화된 edit log 정보를 통하여 IP및 DNS정보를 변경하여 SecondaryNamenode-> NameNode로 변경하여 장애처리가 가능합니다.
  • Edit log가 많이 쌓이고 SecondaryNamenode가 없을 경우, 해당 로그정보들이 모두 처리되기 전까지 구동되지 않는 경우가 발생할 수 있습니다. 또한 수행 속도의 저하 및 메모리 낭비현상도 발생할 수 있습니다.

       

HDFS Client

   

  • HDFS Client의 경우 NameNode와 DataNode 사이에서 데이터의 Read와 Write를 조율해주는 역할을 해줍니다.
  • Client에서 데이터를 요청했을 경우, NameNode에서 먼저 해당 데이터에 대한 메타정보를 HDFS Client에게 보내주게 되고, 해당 정보를 바탕으로 각 DataNode에 분산되어 복제되어 있는 데이터를 가져오는 형태로 진행됩니다.

       

Data Node

   

   

  • Data Node의경우 실 데이터가 보관되어 있는 node로 데이터가 저장될 경우, 복제(default :3)가 발생하여 위 그림과 같이 각기 다른 노드에 복제되어 저장되어 있게 됩니다. 복제된 위치정보의 경우 NameNode에 의하여 관리되게 됩니다.
  • DataNode는 HeartBeat를 NameNode에게 날리면서 자신이 살아있음을 지속적으로 표현하고 혹시나 DataNode가 사용할 수 없게 될 경우 복제된 다른 노드에서 데이터를 가지고 올 수 있도록 합니다.
  • 결론적으로 NameNode의 메타정보가 분실될 경우, 데이터를 사용할 수 없게 됩니다.

       

MapReduce

  • 평균 계산 및 분산처리 결과 추출(병렬)시 뛰어난 성능을 발휘 합니다. 단, Sorting시 어려운 점이 있습니다.
  • Key-Value 형태로 데이터를 정리하고(Mapping) 각 데이터별로 Sorting을 통하여 (Shuffling) 핵심 데이터로 줄여서 (Reducing) 그 결과를 사용자에게 제공합니다.
  • Map/Reduce Job 을 구성한 클래스
    • Reducer
      • Mapper의 출력을 읽어 처리
      • 입력 Mapper의 Key와 Value 목록, 출력 Key-Value
    • Mapper
      • InputSplit에서 파일을 읽어서 처리
    • Driver
      • 각종 파일, 파라미터 처리
      • Hadoop Map/Reduce Job 실행
    • Combiner
      • Mapper에서 동작하는 Minireducer(성능 개선 시 추가되는 Class)
    • Patitiner
      • Mapper의 Key를 어느 Reducer에 보낼지 처리(확장 개선 시 추가되는 Class)
    • InputFormat / RecordReal : 입력파일을 읽어드리는 역할

       

   

Data Read 및 Write 과정

   

  • Client Data Read -> Namenode에서 해당 Data의 메타정보를 -> HDFS Client에게 전송 -> Map/Reduce -> Job Client에 Job을 제출(XML파일) -> JobTracker -> TaskerTracker -> DataNode(파이프라인) -> 데이터 찾기 완료 -> Client에게 ACK 전송(완료)
  • Client Data Write -> 반대로 -> Name Node 메모리와 Log에 변경내용 저장
  • Hadoop(Big-data)의 경우, Update 및 데이터 변경이 어렵습니다.

   

   

[참고자료]

거침없이 배우는 하둡(Hadoop IN Action)

http://hadoopdb.sourceforge.net/guide/

http://hadoop.apache.org/docs/r0.20.2/hdfs_design.html

http://www.ibm.com/developerworks/kr/library/

http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/

   

   

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,