상단

클라우드 (Cloud) 스토리지 (대용량 분산 데이터 저장 및 처리 시스템)인 Hadoop를 정리 한다.

 
 

Hadoop 업무 영역


[700px](파일:Hadoop architecture01.png.md)

 

Hadoop 개요


분산 소프트웨어 플랫폼인 Hadoop은 대량의 데이터를 처리할 수 있는 애플리케이션을 쉽게 제작하고 운영하도록 도와줍니다.

 
  • Hadoop History

    • 2005년 Doug Cutting (Lucene & Nutch 개발자)에 의해 시작

    • 2006년 Yahoo의 지원

     
  • Hadoop : 대용량 분산 데이터 저장 및 처리 시스템

    • Nutch : 오픈소스 검색 엔진

    • MapReduce : 분산 데이터 처리 시스템

    • HBase : 분산 데이터 베이스

    • HDFS : 분산 파일 시스템

     
  • Hadoop 배포판

    • Hadoop

    • Cloudera

    • Yahoo

    • facebook

    • IBM

     
  • Hadoop의 응용 분야

    • ETL (Extract, Transform, Load)

    • Data Warehouse

    • Storage for Log Aggregator

    • Distributed Data Storage

    • Spam Filtering

    • Biometric

    • Online Content Optimization

    • Parallel Image, Movie Clip Processing

    • Machine Learning

    • Science

    • Search Engine

 
 

CentOS에서 Hadoop 설치


사전 준비 사항

  • Java 1.7.0_19

    • [CentOS용 JDK 설치 가이드](JDK.md#CentOS용 설치 가이드.md)

  • CentOS 6.4, 64 bits

  • vi /etc/hosts

    • 127.0.0.1을 사용할 경우, 분산된 서버로 접근하지 못하는 오류가 발생할 수 있습니다.

 
 192.168.56.102   cloud001.cloudserver.com
 
  • vi /etc/sysconfig/network

 
 HOSTNAME=cloud001.cloudserver.com
 
  • vi /proc/sys/kernel/hostname

 
 cloud001.cloudserver.com
 

설치

  • 다운로드 받은 hadoop-1.1.2-bin.tar.gz 파일의 압축을 풀어 /appl/hadoop 폴더에 저장 합니다.

 
 wget http://apache.tt.co.kr/hadoop/common/hadoop-1.1.2/hadoop-1.1.2-bin.tar.gz
 tar -xvzf hadoop-1.1.2-bin.tar.gz
 chown -R root:root hadoop-1.1.2
 mv hadoop-1.1.2 /appl/hadoop
 
  • vi ~/.bashrc

 
 ### ----------------------------------------------------------------------------
 ###     Hadoop 설정
 ### ----------------------------------------------------------------------------
 export JAVA_HOME=/usr/lib/jvm/jre
 export PATH=$PATH:/appl/hadoop/bin
 
  • hadoop 버전 확인

 
 hadoop version
 

환경 설정

  • vi /appl/hadoop/conf/hadoop-env.sh

  • Mode에 따른 설정

    • Mode에 맞추어 설정하지 않으면 sqoop 등에서 connetion refused 오류가 발생할 수 있습니다.
      {|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" 
      |- 
      |width="25%" align="center" valign="middle" style="background-color:#eee;"|Core 
      |width="75%"|

  • Core : fs.default.name = file://~

  • Pseudo distributed : fs.default.name = hdfs://localhost:9000

  • Fully distributed : fs.default.name = hdfs://cloud001.cloudserver.com:9000
    align="center" valign="middle" style="background-color:#eee;"
  • Core : dfs.replication 사용하지 않음

  • Pseudo distributed : dfs.replicatione = 1

  • Fully distributed : dfs.replication = 3 이상
    align="center" valign="middle" style="background-color:#eee;"
  • Core : mapred.job.tracker = local

  • Pseudo distributed : mapred.job.tracker = localhost:9001

  • Fully distributed : mapred.job.tracker = cloud001.cloudserver.com:9001
    |}

  • Hadoop core용 환경 설정

    • vi /appl/hadoop/conf/core-site.xml

 
 
   
     fs.default.name
     hdfs://cloud001.cloudserver.com:9000
   
   
     hadoop.tmp.dir
     /tmp/hadoop/hadoop-${user.name}
   
 
 
  • HDFS 데몬용 환경 설정

    • vi /appl/hadoop/conf/hdfs-site.xml

 
 
   
     dfs.name.dir
     /appl/hadoop/dfs/name
   
   
     dfs.name.edits.dir
     ${dfs.name.dir}
   
   
     dfs.data.dir
     /appl/hadoop/dfs/data
   
 
 
  • Job Tracker와 Task Tracker용 환경 설정 파일

    • vi /appl/hadoop/conf/mapred-site.xml

 
 
   
     mapred.job.tracker
     cloud001.cloudserver.com:9001
   
   
     mapred.local.dir
     ${hadoop.tmp.dir}/mapred/local
   
   
     mapred.local.dir
     ${hadoop.tmp.dir}/mapred/system
   
 
 
  • Master 컴퓨터의 목록

    • vi /appl/hadoop/conf/masters

 
 cloud001.cloudserver.com
 
  • data note와 task tracker를 작동시킬 컴퓨터의 목록

    • vi /appl/hadoop/conf/slaves

 
 cloud001.cloudserver.com
 
  • Master Server와 Slave Server간 상호 접속이 가능하도록 SSH 설정

 
 ssh-keygen -t rsa
 cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
 ### yum install openssh openssh-*
 ssh localhost
 
  • Name Node 포맷

 
 hadoop namenode -format
 
  • Daemon 실행

 
 start-all.sh
 start-mapred.sh         //--- MapReduce 실행
 start-dfs.sh            //--- HDFS 실행
 
 jps                     //--- Java 기반의 프로세스 상태 확인
 

서비스 확인

 
 cd /appl/hadoop
 hadoop dfs -mkdir input
 hadoop dfs -put CHANGES.txt input/
 hadoop jar hadoop-examples-1.1.2.jar wordcount input output
 hadoop dfs -ls output
 hadoop dfs -cat output/part-r-00000
 
  • Safe 오류시

 
 hadoop dfsadmin -safemode leave
 //--- 데몬 재기동
 
 

AIX에서 Hadoop 설치


 
 

Hadoop 가이드


 hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS](COMMAND_OPTIONS.md)
 
 
 

Hadoop Manager


 
 

Hadoop 오류 처리


  • 오류 메시지 : Retrying connect to server RetryUpToMaximumCountWithFixedSleep

    • Hadoop을 먼저 기동한 후에 작업을 하세요.

     
  • 오류 메시지 : Name node is in safe mode

    • Hadoop이 동작중인 상태에서 아래 명령을 입력 합니다.

 
 hadoop dfsadmin -safemode leave
 
  • 오류 메시지 : log4j:WARN No appenders could be found for logger (org.apache.hadoop.hdfs.DFSClient).

    • Log 설정 파일
      :conf/log4j.properties

      • hadoop-env.sh

     
  • 오류 메시지 : # of failed Reduce Tasks exceeded allowed limit

    • 작업을 위한 thread가 부족함

    • vi hdfs-site.xml

 
 
   tasktracker.http.threads
   400
 
 
  • 오류 메시지 : Too many fetch-failures

    • Reduce가 Map의 작업이 끝난 데이터를 가져오지 못하는 오류

    • vi /etc/hosts 에서 TaskTracker 노드의 설정 정보를 맨 상단에 추가, 누락된 TaskTrack가 없도록 확인

 
 

Hadoop Client 사용자 지정


Hadoop을 설치해서 작업을 하다 보면 설치한 사용자 (hduser100)외에 다른 사용자(hduser)로 Hadoop을 사용할 필요가 있습니다. 그럴 경우, 아래와 같이 약간의 권한 설정을 하여 사용 하세요.

 
 
  • Hadoop을 설치한 사용자(hduser100/hdgroup)로 로그인 합니다.

    • HDFS의 supergroup에 hdgroup를 추가 합니다.

 
 stop-all.sh
 vi  /appl/hadoop100/conf/hdfs-site.xml  파일에서 아래 부분을 추가 합니다.
    
        dfs.permissions.supergroup
        hdgroup
    
 start-all.sh
 
  • CentOS user 생성 (hduser / hdgroup)

 
 groupadd  hdgroup
 useradd  -d  /home/hduser  -m  -g  hdgroup  hduser
 passwd hduser
 
  • hduser 환경 설정

 
 vi  ~/.bashrc
     export JAVA_HOME=/usr/lib/jvm/jre
     export PATH=$PATH:/appl/hadoop100/bin
 

BigData 업체 동향


 

MapR 4.0.1 출시 (2014.10)

 
  • Hadoop 2.4 기반의 Apache Drill, Apache Spark, Apache HBase 포함

  • 운영 애플리케이션

  • 인터렉티브 쿼리 및 스트리및 처리 (실시간)

 
 

참고 문헌


 
최종 수정일: 2024-09-30 12:26:18

이전글 :
다음글 :