'big data'에 해당되는 글 3건

빅데이터 (Big Data)



1. 빅데이터 (Big Data)의 개요

 1-1. 정의

    - 대량의 흩어진 데이터를 수집, 저장, 발굴, 분석 하여 2차 데이터로 만들어 내고 이를 비즈니스화 하는 일련의 과정

    - Innovation, Competition, Productivity


 1-2. 특성

   1) Volume : 수십 PB

   2) Velocity : 실시간 처리 기반

   3) Variety  :  Legacy 데이터 및 트랜잭션, 모바일


2. 빅데이터 (Big Data)의 구성도, 기술요소

 2-1. 빅데이터 (Big Data)의 구성도


 2-2. 빅데이터 (Big Data) 기술요소

  1) 원본 데이터 저장 : 대용량 분산 파일 저장

  2) 구조적 데이터 저장 : 대용량 분산 데이터 저장소

  3) 배치 분산 병렬 처리 : 분산 데이터 처리 기술

  4) 데이터 스트리밍 프로세싱 : 스트리밍 데이터 프로세싱 기술

  5) 데이터 마이닝 : 빅 데이터의 패턴 분석 및 고객 분석을 위한 알고리즘

  6) 데이터 분석 알고리즘 : 데이터 분석을 위한 세부 기술

  7) 분산처리 기술 : 관리 기술, 분산 큐 기술


3. 빅데이터 (Big Data)의 활용

 - 공공 : 국가적 차원의 수자원 관리, 스마트 그리드, 재난 방지 영역 등

 - 과학 : 환경, 기후, 해양 등 글로벌 문제 해결에 필요한 대규모 과학 데이터 분석

 - 의료 : 미래에 겪을 수 있는 질환이나 증상을 미리 예측 및 예방하고 통합되는 확장되 서비스


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



Hadoop-Hive

   

  • Hadoop 의 확장성과 가용성은 이해할 수 있었으나 자바 맵리듀스 프로그램을 작성하는 것과 복잡성 때문에 광범위한 채택에 대한 해결책이 필요

       

  • 기술자와 분석가는 SQL 쿼리 방식의 도구를 생각, 대부분의 개발자들이 PHP와 파이선 같은 스크립트 언어에 익숙 
  • 익숙한 언어와 hadoop 프로그램이 요구하는 언어의 차이를 줄일 수 있는 소프트웨어를 개발하는 것이 필수
  • 데이터가 테이블과 파티션으로서 표현될 수 있고 쿼리와 분석을 위해 SQL같은 언어 또한 사용할 수 있는 시스템. 사용자가 선택한 프로그래밍 언어로 작성된 맵리듀스 프로그램을 쿼리에 연결할 수 있는 능력. --> HIVE 사용.

       

    - 하이브는 하둡의 최상위에 구축된 데이터 웨어하우스 기반구조이다. 

    - 페이스북의 하둡에 저장된 데이터에 쿼리하기 위해 사용될 수 있는 도구.

       

       

       

       

Mysql Installation on Ubuntu

   

  • Mysql 설치

Apt-get Install mysql-server mysql-client

   

  • MySQL 서비스 상태 확인

   

  • MySQL 서비스 재시작
  • /etc/init.d/mysql restart

       

MySQL에 Hive 계정 생성(default)

Mysql -uroot -p

   

  • 데이터베이스 생성

Mysql> create database metastore_db;

Mysql> use mysql

   

  • 계정만들기

Mysql> insert into user(host,user,password) values('%', 'hive', password('hive'));

Mysql> Flush privileges;

Mysql> grant all privileges on metastore_db.* to hive@localhost identified by 'hive' with grant option;

Mysql> Flush privileges;

Mysql> grant all privileges on metastore_db.* to hive@'%' identified by 'hive' with grant option;

Mysql> Flush privileges;

   

  • Hive 다운로드 및 설치

>wget http://archive.cloudera.com/cdh/3/hive-0.7.1-cdh3u5.tar.gz

>tar xvgz hive-0.7.1-cdh3u5.tar.gz

>wget

http://repo.maven.apache.org/maven2/mysql/mysql-connector-java/5.1.9/my

sql-connector-java-5.1.9.jar

>cp mysql-connector-java-5.1.9.jar ./hive-0.7.1-cdh3u5/lib

   

  • Hive 설정
     
    • HIVE_HOME/conf/hive-defalt.xml

   

<property>

<name>hive.metastore.local</name>

<value>true</value>

</property>

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

<description>Driver class name for a JDBC metastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>[패스워드 설정]</value>

</property>

   

  • HADOOP_HOME/conf/core-site.xml

<configuration>

<property>

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

<value>hdfs://hadoop-virtualbox:9000</value>

</property>

</configuration>

   

Hive 디렉터리 생성

<HADOOP_HOME>/bin/hadoop fs –mkdir /tmp

<HADOOP_HOME>/bin/hadoop fs -mkdir /user/hive/warehouse

<HADOOP_HOME>/bin/hadoop fs -chmod g+w /tmp

<HADOOP_HOME>/bin/hadoop fs -chmod g+w /user/hive/warehouse

   

데이터 다운로드

• wget

http://www.grouplens.org/sites/www.grouplens.org/external_fi

les/data/ml-10m.zip

• wget http://www.grouplens.org/system/files/ml-1m.zip

• unzip ml-1m.zip

• cd ml-1m

   

HIVE Command

hive> CREATE TABLE rating(userid INT, movieid INT, rating FLOAT, ds STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;

   

hive> show tables;

   

hive> LOAD DATA LOCAL INPATH '/home/hadoop/m1-1m,/ratings.dat' OVERWRITE INTO TABLE rating;

   

hive> select count(*) from rating r;

   

hive> select r.userid from rating r where r.userid = '41810';

   

[참고자료]

거침없이 배우는 하둡(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와 함께 살아가는 삶

,