Hadoop

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

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

Hadoop 업무 영역

Hadoop architecture01.png

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 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 오류가 발생할 수 있습니다.
Core
  • Core : fs.default.name = file://~
  • Pseudo distributed : fs.default.name = hdfs://localhost:9000
  • Fully distributed : fs.default.name = hdfs://cloud001.cloudserver.com:9000
HDFS
  • Core : dfs.replication 사용하지 않음
  • Pseudo distributed : dfs.replicatione = 1
  • Fully distributed : dfs.replication = 3 이상
MapReduce
  • 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
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://cloud001.cloudserver.com:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/tmp/hadoop/hadoop-${user.name}</value>
  </property>
</configuration>
  • HDFS 데몬용 환경 설정
  • vi /appl/hadoop/conf/hdfs-site.xml
<configuration>
  <property>
    <name>dfs.name.dir</name>
    <value>/appl/hadoop/dfs/name</value>
  </property>
  <property>
    <name>dfs.name.edits.dir</name>
    <value>${dfs.name.dir}</value>
  </property>
  <property>
    <name>dfs.data.dir</name>
    <value>/appl/hadoop/dfs/data</value>
  </property>
</configuration>
  • Job Tracker와 Task Tracker용 환경 설정 파일
  • vi /appl/hadoop/conf/mapred-site.xml
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>cloud001.cloudserver.com:9001</value>
  </property>
  <property>
    <name>mapred.local.dir</name>
    <value>${hadoop.tmp.dir}/mapred/local</value>
  </property>
  <property>
    <name>mapred.local.dir</name>
    <value>${hadoop.tmp.dir}/mapred/system</value>
  </property>
</configuration>
  • 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 기반의 프로세스 상태 확인

서비스 확인

  • 서비스 확인 Web Site
  • 단어수를 계산하는 Sample
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]
  • 참고 문헌

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
<property>
  <name>tasktracker.http.threads</name>
  <value>400</value>
</property>
  • 오류 메시지 : 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  파일에서 아래 부분을 추가 합니다.
   <property>
       <name>dfs.permissions.supergroup</name>
       <value>hdgroup</value>
   </property>
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 포함
  • 운영 애플리케이션
  • 인터렉티브 쿼리 및 스트리및 처리 (실시간)

참고 문헌

아파치 소프트웨어 재단(Apache Software Foundation)에서 아파치 하둡(Apache Hadoop) 프로젝트 커미터이며, 아파치 하마(Apache Hama) 프로젝트를 설립하고 개발을 이끌고 있는 Edward J. Yoon의 블로그
  • 파일