2014년 9월 26일 금요일

Hadoop 기초와 구조 그리고 설치

    1. Apache Hadoop



  • What is BigData?

   : 서버 한대로 정의할 수 없는 규모의 데이터
   : 기존 소프트웨어로는 처리할 수 없는 규모의 데이터(PB, EB)
   : 3V(Volume, Velocity, Variety)


  • 어떻게 개발했지?

   : Cite , Citation
   : SCI impact factor
   : The Google File System(2003), MapReduce,
     Simplified Data Processing on Large Cluster(2004) 에서 아이디어를 얻어서 만듬
   >> HaDoopFileSystem MapReduce(저장과 병렬처리)
   : Hadoop Standard : Apache Hadoop

   ※ 참조 : http://hadoop.apache.org/
   ※ Hadoop Company : Cloudera, HortonWorks, MapR


    2. HDFS & MapReduce

   # 전제 : Multi Server System
   : 자동으로 Replication을 수행(HighAvailability)

  • HDFS

   : Name Node, Data Node, JobTracker, Task Tracker
   : file을 여러 개의 block(64MB)으로 나누어 저장한다
   : Write Once Read Many : File Overwrite 구조(Redundancy 개념)

   1) HDFS Architecture

 

   2) Datanode 개념

   
  
   : 접근할 때는 numRepicas를 통해 Datanodes에 접근한다.
   : Page.20
   : Heartbeat, HA swap 개념 이해
   : Namenode - Datanode 간의 Heartbeat으로 통신

    3) MapReduce Framework 개념


   예시) WordCount : 구조를 살펴보자.
   생각 확장하기
   0. 파일을 받아서 처음부터 끝까지 하나씩 세면서 count값을 1씩 증가시킨다.
   > 병렬구조로 짜려면 어떻게 해야할까?

  1. 1/n(프로세스의 숫자)로 잘라서 처리한다.(Splitting)
  2. 각각의 값들을 (object value, int count)형식으로 행동한다.(Mapping)
  3. A~Z순으로 정렬한다.(Shuffling)
  4. 중복되는 값들은 각각의 count값을 더하면서 value값을 표시한다.(Reducing)
  5. 결과값을 (object value, int count)를 출력해준다.(Final result)

   유사성(Parallelism) : 반복작업이 많고 데이터가 커지면 커질수록 활용하기 좋다.
  


    3. Hadoop 시작하기

   OS : Ubuntu 64bit
   Shell : dash(ubuntu default shell)
   Hadoop Version : 1.0.3

  ==============================================================

  •    설치하기


   1) hadoop을 다운받는다(2014.9 최신 버전 : 2.5.1)
   >> sudo wget http://archive.apache.org/dist/hadoop/core/hadoop-1.0.3/hadoop-1.0.3.tar.gz
 
   2) 다운받은 파일 압축을 해제한다.
   >> tar xvfz hadoop-1.0.3.tar.gz

   3) 환경 변수를 설정한다.
   >> export HADOOP_HOME=[hadoop_path]/hadoop-1.0.3
   >> echo $HADOOP_HOME
 
   4) PATH를 설정한다.
   >> export PATH=$PATH:$HADOOP_HOME/bin
   >> echo $PATH

  ==============================================================

   설정하기

   1) [hadoop_path]/conf/mapred-site.xml
 
   <configuration>
    <property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
   </configuration>

   2) [hadoop_path]/conf/hdfs-site.xml

   <configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
   </configuration>

   3) [hadoop_path]/conf/core-site.xml

   <configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
   </configuration>

   4) localhost로 설정되었는지 확인한다.
   > cat masters
   = localhost
   > cat slaves
   = localhost

   5) Namenode를 포맷한다.
    > hadoop namenode -format

   6) demon을 실행해본다.
   > start-all.sh
   = [실행되는 과정 출력]
   > jps
   = [JobTracker, Secondary NameNode, NameNode, DateNode 출력]

댓글 없음:

댓글 쓰기