'BigData'에 해당되는 글 8건

  1. 2017.05.29 kafka 동작에 필요한 명령어
  2. 2017.03.16 kafka 모니터링 도구
  3. 2017.02.22 Kafka Multi Cluster broker 구성하기
  4. 2017.02.16 Kafka 소개
  5. 2016.08.02 Hadoop - MapReducer
  6. 2016.08.01 HDFS ( Hadoop Distributed File System )
  7. 2016.08.01 Hadoop 설치
  8. 2016.08.01 Hadoop 기초

kafka 동작에 필요한 명령어


  1. 토픽 관련

    • 토픽 리스팅
        $ ./bin/kafka-topics.sh --zookeeper localhost:2181 --list
      
    • 토픽 생성
        $ ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 10 --topic test
      
    • 토픽 삭제
        $ ./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test
      
    • 토픽 재분배
      • partition 이 클수록 토픽 처리가 좋다?
        • 파티션이 클수록 throughput 이 증가한다
        • 그러나 Open File Handles, Unavailability 도 함께 증가한다
      • partition - replica 계수의 관계
        • 더 나은 로드 밸런싱을 위해, replica 이상의 partition 을 유지해야 한다
        • 복제 매커니즘
          • 브로커 목록과 파티션 목록을 정렬한다.
          • n 개의 브로커가 있는 경우 i 번째 파티션을 (i mod n) 번째 브로커에 할당한다.
          • 이 파티션의 첫 번째 복제본이 할당 된 브로커에 상주하며이 파티션의 기본 복제본(leader)이라고힌다.
          • 브로커가 다운되면 부하가 하나의 브로커가 아닌 모든 살아남은 브로커에게 균등하게 분산되도록 다른 복제본을 배치하려고 한다.
          • 이를 달성하기 위해 브로커 i에 m 개의 파티션이 할당되어 있다고 가정합니다.
          • 파티션 k의 j 번째 복제본은 브로커 (i + j + k) mod n에 할당됩니다.
          • Zookeeper에 ach 파티션에 대한 복제본 할당에 대한 정보를 저장합니다.
      • 명령어
        $ ./bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --execute --reassignment-json-file b.json
        $ cat b.json
          {
              "version": 1,
              "partitions": [{
                  "topic": "sample-topic",
                  "partition": 1,
                  "replicas": [1,2,3]
              },
              {
                  "topic": "sample-topic",
                  "partition": 2,
                  "replicas": [2,3,4]
              },
              {
                  "topic": "sample-topic",
                  "partition": 3,
                  "replicas": [3,4,5]
              },
              {
                  "topic": "sample-topic",
                  "partition": 4,
                  "replicas": [4,5,1]
              },
              {
                  "topic": "sample-topic",
                  "partition": 5,
                  "replicas": [5,1,2]
              }]
          }
        
    • 파티션 변경
        $ ./bin/kafka-topics.sh --alter --partitions 10 --topic {토픽명} --zookeeper localhost:2181
      
  2. 복제 관련 상태를 확인하기

    • “isr” is the set of “in-sync” replicas
    • isr 복제현황
        $ ./bin/kafka-topics.sh --describe --zookeeper localhost:2181
        Topic:__consumer_offsets        PartitionCount:200      ReplicationFactor:3     Configs:segment.bytes=104857600,cleanup.policy=compact
        Topic: __consumer_offsets       Partition: 0    Leader: 4       Replicas: 4,5,1 Isr: 1,5,4
        Topic: __consumer_offsets       Partition: 1    Leader: 5       Replicas: 5,1,2 Isr: 1,2,5
        Topic: __consumer_offsets       Partition: 2    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3
        Topic: __consumer_offsets       Partition: 3    Leader: 2       Replicas: 2,3,4 Isr: 2,3,4
        Topic: __consumer_offsets       Partition: 4    Leader: 3       Replicas: 3,4,5 Isr: 5,4,3
        Topic: __consumer_offsets       Partition: 5    Leader: 4       Replicas: 4,1,2 Isr: 1,4,2
        Topic: __consumer_offsets       Partition: 6    Leader: 5       Replicas: 5,2,3 Isr: 2,5,3
      
    • 강제 리더 선정
        $ ./bin/kafka-preferred-replica-election.sh --zookeeper localhost:2181
      
  3. consumer 처리 확인

    • consumer group 별 처리량 확인(deprecated 명령어 0.8 대에만 사용가능):

            $ ./bin/kafka-consumer-offset-checker.sh --zookeeper localhost:2181 --group group_name
        Group           Topic                          Pid Offset          logSize         Lag             Owner
        group_name      test_topic                      0   28696375242     28710228588     13853346        group_name_consumer001-1494565379967-138e5755-0
        group_name      test_topic                      1   32507090475     32525260714     18170239        group_name_consumer001-1494565379967-427a12a1-0
        group_name      test_topic                      2   22142323        37202882        15060559        group_name_consumer001-1494565379967-6017c0a1-0
        group_name      test_topic                      3   29872001299     29887377264     15375965        group_name_consumer001-1494565379967-be0b8719-0
        group_name      test_topic                      4   28412645478     28426057279     13411801        group_name_consumer002-1494565379967-fc2942ba-0
        group_name      test_topic                      5   28165720144     28178485586     12765442        group_name_consumer00-1494565918010-3f468782-0
      
        # Offset: 처리된
        # Lag: 남은
        # logSize: total size = Offset + Lag
      
        ex) 토픽 유입량 대비 처리정도를 판단하고 싶을 때
            $ ./bin/kafka-consumer-offset-checker.sh --zookeeper localhost:2181 --group group_name  | grep -v "Group" | awk '{ topic=$2; topicLogSize[topic]+=$5; topicOffSetSum[topic]+=$4}END{for(x in topicLogSize) print x": "topicOffSetSum[x]/topicLogSize[x]*100}'


'BigData > Kafka' 카테고리의 다른 글

kafka 모니터링 도구  (0) 2017.03.16
Kafka Multi Cluster broker 구성하기  (0) 2017.02.22
Kafka 소개  (0) 2017.02.16
Posted by 감각적신사
,


kafka 모니터링 도구


  1. Kafka Offset Monitor (오픈소스 기반의 Web UI)

    • 홈페이지
    • 실행:
        $ java -cp KafkaOffsetMonitor-assembly-0.2.1.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk zk-server1,zk-server2 --port 8080 --refresh 10.seconds --retain 2.days
      
    • 모니터링: http://설치호스트IP:설치포트

    • 모니터링 주요항목
      • Consumer 위주의 모니터링
      • topic 에 대한 모니터링
      • zookeeper 의 클러스터링
    • 한계(사견)
      • 시스템 항목에 대한 모니터링 항목의 부재
      • Producer 대응의 부재
      • active consumer list 호출 방식을 찾지 못했다..
  2. Linkedin Kafka-monitor (오픈소스 기반의 Web UI)

    • 홈페이지
    • 실행:
        $ ./bin/single-cluster-monitor.sh --topic test --broker-list localhost:9092 --zookeeper localhost:2181
      
    • 모니터링: http://설치호스트IP:8000/index.html (default port 8000)

    • 모니터링 주요항목
      • Producer 위주의 모니터링
      • 저장된 record 에 대한 replica, partitioning, 지연 등 에 대한 모니터링
    • 한계(사견)
      • 시스템 항목에 대한 모니터링 항목의 부재
      • Consumer 대응의 부재
  3. Datadog (상용서비스 Web UI)

    • 홈페이지
    • 동작:
      • 카프카 인스턴스에 개별 agent 설치
      • agent 가 datadog 으로 정보를 전달해주는 방식으로 위 두개의 open source 와 다르다
    • 모니터링:

    • 모니터링 주요항목
      • kafka.yaml 항목을 통한 대부분의 kafka 정보 처리 가능
      • metric 항목들 metric
    • 한계(사견)
      • 무료로 사용시, 카프카 모니터링 항목이 datadog 에 저장 된다
      • 제한적 환경에서는 많은 방화벽 이슈가 있을 수 있다
  4. JMX 를 이용한 직접 모니터링


※ jmx 를 이용한 직접 모니터링이 가장 좋은 방식으로 생각되었지만 jar 호출과 명령어 호출에 사용되는 시스템 리소스가 있으므로 잘 판단하여 사용해야 할 것 같다

'BigData > Kafka' 카테고리의 다른 글

kafka 동작에 필요한 명령어  (0) 2017.05.29
Kafka Multi Cluster broker 구성하기  (0) 2017.02.22
Kafka 소개  (0) 2017.02.16
Posted by 감각적신사
,

kafka 설치 및 설정


  1. 참고

  2. 다운로드 및 압축 해제

  3. multi broker cluster 설정 및 실행

    • zookeeper.properties

        clientPort=2180   # default
        dataDir=/kafka/zookeeper/data # myid 라는 파일을 생성해주는 경로가 된다 broker.id 값을 입력해야한다
      
        # add here more servers if you want
        # server.1=kafka01:2888:3888
        server.1=0.0.0.0:2888:3888 # 본인 에 대해서는 0.0.0.0 으로 해줘야 한다
        server.2=kafka02:2888:3888
        server.3=kafka03:2888:3888
      
        # 필요하다 근데 왜? 
        initLimit=5
        syncLimit=2
      
    • server.properties
        broker.id=1       # 반드시 0 번 부터 시작할 필요는 없다
        port=9092
        host.name=kafka01 # 각자 본인 host 입력
        num.partitions=3
        zookeeper.connect=kafka01:2180,kafka02:2180,kafka03:2180
      
    • 실행

        # zookeeper 실행
        $ cd $KAFKA_HOME
        $ bin/zookeeper-server-start config/zookeeper.properties &
      
        # kafka 실행
        $ cd $KAFKA_HOME
        $ bin/kafka-server-start.sh config/server.properties &
      
  4. topic 생성과 확인

    • 생성
        $ cd $KAFKA_HOME/bin
        $ ./kafka-topics.sh --create --zookeeper kafka01:2181 --replication-factor 3 --partitions 3 --topic {topic_name}
      


    • 리스트
        $ cd $KAFKA_HOME/bin
        $ ./kafka-topics.sh --list --zookeeper kafka01:2181
      

    • 확인
        $ cd $KAFKA_HOME/bin
        $ ./kafka-topics.sh --describe --zookeeper kafka01:2181 --topic {topic_name}
      


'BigData > Kafka' 카테고리의 다른 글

kafka 동작에 필요한 명령어  (0) 2017.05.29
kafka 모니터링 도구  (0) 2017.03.16
Kafka 소개  (0) 2017.02.16
Posted by 감각적신사
,

Kafka 소개

BigData/Kafka 2017. 2. 16. 23:42


Apache Kafka


참고

  1. 소개

    • 아파치 카프카
    • 분산 메시징 시스템 으로 대용량의 실시간 로그처리 에 용이하다고 한다
  2. 기본 구성 요소 및 동작

    • 발행-구독(publish-subscribe) 모델을 기반으로 동작
    • 확장성, 고가용성을 고려한 Cluster 구성
      • producer: 특정 topic의 메시지를 생성한 뒤 해당 메시지를 broker에 전달
      • broker: Apache ZooKeeper 에 의한 분산처리 를 통해 topic을 기준으로 메시지를 관리
        • broker들이 클러스터로 구성되어 동작하도록 설계
        • broker가 1개 밖에 없을 때에도 클러스터 로써 동작
      • consumer: 해당 topic을 구독하는 consumer들이 메시지를 수집 및 처리
  3. Topic 과 Partition

    • Kafka의 topic은 partition 이라는 단위로 클러스터의 각 서버들에 분산되어 저장
  4. 기존 메시징 시스템과의 차이점

    • 메시지를 파일 시스템에 저장
      • 데이터 영속성 보장(별도의 설정이 필요하지 않음)
      • 많은 메시지가 쌓여있어도 성능 이슈가 적다
      • 실시간 / batch 작업이 각각 용이하다
    • producer - broker
      • AMQP 프로토콜, JMS API 이 아닌 단순 TCP 기반의 프로토콜로 오버헤드 감소
      • 다수의 메시지를 batch형태로 broker에게 한 번에 전달할 수 있다 == TCP/IP 라운드트립 횟수를 줄일 수 있다
    • broker - consumer
      • 기존 방식: broker의 push 에 의한 메시지 전달
      • kafka 방식: consumer 의 pull 에 의한 메시지 전달
      • consumer 의 처리능력에 따라 메시지를 전달 받기 때문에 성능적으로 우수할 수 있다


'BigData > Kafka' 카테고리의 다른 글

kafka 동작에 필요한 명령어  (0) 2017.05.29
kafka 모니터링 도구  (0) 2017.03.16
Kafka Multi Cluster broker 구성하기  (0) 2017.02.22
Posted by 감각적신사
,

Hadoop - MapReducer

BigData 2016. 8. 2. 11:51

# MapReducer


1. 개념

- Map : 데이터를 key - value 형태로 변경 시킨다

- -- -- -- 정렬 과 병합 -- -- -- : 하둡 플랫폼에서 수행한다

- Reducer : key - value 형태의 데이터를 가공한다

- ※ 기본적으로 **오름차순 정렬**

- ※ 개발자는 MapReducer 만 고민하면 된다, read / write 는 플랫폼에서 지원한다


2. 아키텍쳐 ( Hadoop 2.0 이후 버전 )

       

- JobTrcker : 마스터 노드, ResourceManager 역할로 슬레이브 노드 중 여유있는 노드를 찾아 Job(MapReduce 동작) 을 전달하고 이를 관리함

- TaskTracker : 슬레이브 노드, AppMaster 역할로 실제 Job 을 Map Task 와 Reducer Task 로 나누어 각각의 노드(슬레이브 노드)에 전달한다

- 하둡 1.x 에서는 마스터 노드에서 모두 관리하여 마스터 노드에 부담이 큰 아키텍쳐었다.


3. 동작 원리

       

- Map 작업이 완료 되어야 Reducer 작업이 진행된다

- but Reducer 작업은 Map 의 결과를 옮기는 것부터 시작임으로 로그 상에서 Map task 가 100%을 수행되지 않아도 올라갈 수 있다

- 하둡 플랫폼에 의해 (**사용자 아님**) 데이터의 양을 판단, 입력 스프릿 수를 결정하여 각각 매퍼를 생성

- in JAVA, 리듀서는 default 1개

- 중복되는 task 가 진행 될 경우 하나를 kill 한다

- 투기적 매커니즘 에 의해 긴 응답시간이 걸릴 때 중복 작업을 지시한다 > 먼저 나오는 task 를 제외하고 kill 한다

4. 동작

- 마스터     

[hadoop@hadoop01 input]$ jps      

7847 org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar          

11356 Jps      

11295 RunJar      

3830 ResourceManager      

5561 JobHistoryServer     

3514 NameNode       

3696 SecondaryNameNode        

- 슬레이브        

[hadoop@hadoop04 ~]$ jps        

5574 YarnChild      

2489 NodeManager          

4883 MRAppMaster (*) : slave 에서 mapreduce 동작시, taskManager 역할을 하게 된다      

5568 YarnChild : (*) 실제 mapreduce 동작하는 프로세스       

5565 YarnChild       

5735 Jps      

5564 YarnChild       

2393 DataNode       

5567 YarnChild      

5566 YarnChild       

- 동작 로그         

Starting Job = job_1432788061280_0003, Tracking URL = http://hadoop01:8088/proxy/application_1432788061280_0003/         

Kill Command = /home/hadoop/hadoop/bin/hadoop job  -kill job_1432788061280_0003

Hadoop job information for Stage-1: number of mappers: 4; number of reducers: 1 >> 매퍼 4개 리듀서 1개 확인            

2015-05-28 16:13:29,860 Stage-1 map = 0%,  reduce = 0%            

2015-05-28 16:13:50,172 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 15.48 sec         

2015-05-28 16:13:55,362 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 16.67 sec             

MapReduce Total cumulative CPU time: 16 seconds 670 msec         

Ended Job = job_1432788061280_0003      

MapReduce Jobs Launched:      

Job 0: Map: 4  Reduce: 1   Cumulative CPU: 16.67 sec   HDFS Read: 992186218 HDFS Write: 5 SUCCESS       

Total MapReduce CPU Time Spent: 16 seconds 670 msec       

OK        

6412       

Time taken: 43.959 seconds, Fetched: 1 row(s)        

5. 튜닝 구간

- 셔플 : Map task 와 Reduce task 사이의 전달 구간

- 튜닝 포인트

- Map task 는 메모리 버퍼를 생성한 후 출력데이터를 버퍼에 기록 후 일정 크기에 도달하면 로컬 디스크로 쓴다 (파일 I/O 발생)

- 로컬 디스크 로 쓰여진 spill 파일들을 정렬된 출력 파일로 병합한다 (thread 추가 포인트)

    - 실행 시 추가할 옵션

    - io.sort.mb: 100mb --> 200mb

    - io.sort.factor: 10 --> 30

    - mapred.child.java.opts=-Xmx512m   #JAVA HEAP MEMORY


6. MapReducer 를 구현하는 Java Project

- 구조

- Main.java : Job 을 선언 및 설정   

            Configuration conf = new Configuration();

            Job job = Job.getInstance(conf);

            job.setJobName("JOB_TEST_NAME");

            job.setJarByClass(Main.class);

            job.setMapperClass(TestMapper.class);

            job.setReducerClass(TestReducer.class);

            job.setInputFormatClass(TextInputFormat.class);

            job.setOutputFormatClass(TextOutputFormat.class);

            job.setOutputKeyClass(Text.class);

            job.setOutputValueClass(IntWritable.class);

            FileInputFormat.addInputPath(job, new Path(args[0]));

            FileOutputFormat.setOutputPath(job, new Path(args[1]));

            job.waitForCompletion(true);   


- Mapper.java : 읽어올 데이터의 타입 지정, keyvalue 형태로 변환

          public class TestMapper extends 

          Mapper<LongWritable, Text, Text, IntWritable> {

          

            private final static IntWritable one = new IntWritable(1);

            private Text word = new Text();


            public void map(LongWritable key, Text value, Context context) 

            throws IOException, InterruptedException {

                StringTokenizer itr = new StringTokenizer(value.toString());

                while (itr.hasMoreTokens()) {

                    word.set(itr.nextToken());

                    context.write(word, one);

                }

            }

        }

          

- Reducer.java : keyvalue 형태의 값을 읽어 가공

          public class TestReducer extends

                Reducer<Text, IntWritable, Text, IntWritable> {

            private IntWritable result = new IntWritable();


            public void reduce(Text key, Iterable<IntWritable> values, Context context)

                    throws IOException, InterruptedException {

                int sum = 0;

                for (IntWritable val : values) {

                    sum += val.get();

                }

                result.set(sum);

                context.write(key, result);

            }

        }

- core-site.xml : hdfs 경로 등 설정 값

- hdfs-site.xml : 퍼미션 등의 설정 값

- 주요 용어

- Context > 객체간 메시지를 전달하는 전역변수 역할

- But Pig Project or Hive Project 가 간단하게 짤 수 있다

'BigData' 카테고리의 다른 글

HDFS ( Hadoop Distributed File System )  (0) 2016.08.01
Hadoop 설치  (0) 2016.08.01
Hadoop 기초  (0) 2016.08.01
Posted by 감각적신사
,

# HDFS ( Hadoop Distributed File System )

1. 개요

        - 4가지 목표

                - 장애복구

                - 스트리밍 방식 데이터 접근 >> batch 작업에 적합

                - 대용량 데이터 저장

                - 데이터 무결성 : 한번 쓴 데이터는 변하지 않는다 >> 수정이 불가능 하다 but append 는 가능하다

        - 기존 대용량 파일 시스템 와 비교

                - DAS  : 서버 - 스토리지          , HBA(HostBasedAdaptor) 를 이용해 스토리지를 연결

                - NAS  : 서버 - 네트워크 스토리지 , 동영상, 문서 등의 공유를 목적으로 한 스토리지, 비용문제+

                - SAN  : 서버 - 네트워크 스위치 - 스토리지 , DAS 의 한계 극복.

                - HDFS : 단일 HDFS 에는 RAID 구성이 필요없다. but 마스터노드 는 RAID1, 10 를 걸어줄 필요가 있다

              cf) RAID 개념 : 단일 시스템에서 동작한다

                        - RAID0 : striping , I/O 성능 좋아짐. but 망가지면 끝

                        - RAID1 : mirroring, 복제본 . but 하나가 망가져도 사용가능

                        - RAID 0+1 : 절때 사용하면 안됨 >> 하나 fail 시 전체 rebuild 필요

                        - RAID 10  : HDFS 가 동작하는 방식가 비슷

        - Oracle RAC (Real application Clusters) : 슈퍼돔 * 4 + SAN , 어마어마한 가격


2. 아키텍처

   

        - 단일 데이터를 여러개의 블락으로 나누어 (128M) 저장한다

                -  why 128 M : memory -bus-> disk (100MB 전달할 수있는 버스가 생겼다)

        - 깨진 데이터는 자동으로 복구하지 못한다 >> ( Client ) 깨진 데이터를 지워준다 >> 자동으로 replica 만큼 생성하여 복사본을 유지한다

        - 슬레이브 ( Datanode ) 가 많다 == 더 많은 병렬처리가 가능하다 ( 이론상 6000대 클러스터 생성가능 )


3. 구성요소 별 데이터 구조

        - Namenode

                - 경로 : {{hadoop_install_path}}/hadoop-data/dfs/name/current

                - 파일 :

                        - fsimage_xxxx : 데이터의 메타정보 저장 : 최초 hadoop 이 구동 할 때 읽어 올라간 뒤 ** 이후에 다시 쓰지 않는다 **

                        - edits_xxxxx : 변화되는 이력을 기록 한다

        - Datanode

                - 경로 : {{hadoop_install_path}}/hadoop-data/dfs/data/current/BP-495131824-192.168.56.101-1432616015420

                - 파일

                        - blk_1073741832            >> 실제 블락

                        - blk_1073741832_1008.meta  >> 블락의 체크썸 ( 상태확인 )

                        ※ BP : Block Pool 로서 하나의 HDFS 에 여러 namenode 를 사용하여 여러개의 pool 로 나누어 사용가능 하다


4. Operation 매커니즘

        - write      

               

                - Datanode 에서 데이터 복제하는 과정은 파이프라인에 의한 병렬처리로 이루어진다 == 복제 갯수만큼 이루어지지 않으면 쓰기 실패이다

                - 블럭의 배치 순서 : 1. 로컬노드 2. 원격 Rack 노드 3. 2번과 같은 Rack 의 다른 노드

        - read

               

                - Namenode 는 client 가 요청하는 data 의 Datanode 와 그 위치 를 알아야한다

                - 복제본을 가지고 있는 Datanode 중에서 가장 여유있는 노드로 유도한다 : Namenode 와 Datanode 는 heart-bit 를 통해 상태를 확인하고 있으므로...


5. 체크포인팅 매커니즘

       


        - 작업 :

                - 세컨터리 네임노드 : 로그롤링 요청

                - 네임노드 : 신규 에디트 로그 작성

                - 세컨더리 네임노드 : 로그를 받아 디스크 동기화 및 파일시스템 이미지 신규작업 전달

                - 네임노드 : 에디트 로그를 유지 ...

        - 구성 시, Namenode 와 Secondary Namenode 는 같은 크기의 메모리를 부여하여 fsimg 를 생성 전달할 수 있도록 한다

        - 상황

                - Namenode 죽었을 시, 마지막 체크포인트 발생 시점까지 복구가 가능하다

                - Secondory Namenode 죽었을 시, 운영은 되지만 edit log 가 무한히 길어지면 namenode 가 죽는다


6. Namenode - Secondary Namenode

        - 설정 (2.0 이후 버전) : etc/hadoop/masters 파일에 secondary name 를 설정한다 . 미작성시 namenode 에 함께 뜬다

        - 데이터

                [hadoop@hadoop01 ~]$ ls hadoop/hadoop-data/dfs/*name*/current/

                seen_txid               VERSION

                edits_0000000000000000001-0000000000000000002  fsimage_0000000000000000115

                edits_0000000000000000003-0000000000000000103  fsimage_0000000000000000115.md5

                edits_0000000000000000104-0000000000000000113  fsimage_0000000000000000117

                edits_0000000000000000114-0000000000000000115  fsimage_0000000000000000117.md5

                edits_0000000000000000116-0000000000000000117  >> 체크포인트 작업으로 사용된 log 로 프리징 되어있다

                edits_inprogress_0000000000000000118    >> 롤링 된 신규 에디트 로그


                [hadoop@hadoop01 ~]$ ls hadoop/hadoop-data/dfs/*namesecondary*/current/

                edits_0000000000000000001-0000000000000000002  fsimage_0000000000000000115

                edits_0000000000000000003-0000000000000000103  fsimage_0000000000000000115.md5

                edits_0000000000000000104-0000000000000000113  fsimage_0000000000000000117

                edits_0000000000000000114-0000000000000000115  fsimage_0000000000000000117.md5

                edits_0000000000000000116-0000000000000000117  VERSION

'BigData' 카테고리의 다른 글

Hadoop - MapReducer  (0) 2016.08.02
Hadoop 설치  (0) 2016.08.01
Hadoop 기초  (0) 2016.08.01
Posted by 감각적신사
,

Hadoop 설치

BigData 2016. 8. 1. 15:30

# 하둡 설치

0. 구성 : Master-Slave 구조

- [Master] hadoop01 : Namenode , Secondary Namenode

- [Slave] hadoop03 : Datanode

- [Slave] hadoop04 : Datanode


1. 준비사항

- JVM 에서 구동되는 프로세스 임으로 java 설치가 필요함

- 복수 대 설치 시 node 간 통신에 필요한 network 이 열려 있어야 함

- 방화벽 설정 off

- ./ssh/authorized_keys 등록 (명령어 전달에 필요)


2. 설치

- 다운로드 : http://hadoop.apache.org/releases.html ( 이후 문서는 2.4.1 환경으로 진행하였음 )

- 압축 풀기

- 설정파일 편집 ( /hadoop_압축해제경로/etc/hadoop/* )

- hdfs-site.xml : 복제본 개수 지정 (기본 : 원본 포함 3), 퍼미션 설정 등

- ASM authomatic storage management 대부분의 replica 는 3이다. (확률)

- hadoop-env.sh : 실행하기 전 실행되는 파일 , PATH 설정 및 heap memory 설정

- mapred-site.xml : yarn(클러스트에서 동작) or local(단일 쓰레드 동작)

- slaves : 개행을 구분자로 slave 목록을 지정한다

- yarn-env.sh : 자바 홈, 하둡 홈 설정

- masters : secondary namenode 를 개행을 구분자로 목록을 지정

- yarn-site.xml : ip, port 설정 8030 8040 etc ...


3. 동작

- start-all.sh

[hadoop@hadoop01 ~]$ start-all.sh  

This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh   **>> 하둡 1.x 대 명령어 사용으로 나오는 메시지**  

Starting namenodes on [hadoop01] **>> 기동순서 1. Namenode**  

hadoop01: starting namenode, logging to /home/hadoop/hadoop-2.4.1/logs/hadoop-hadoop-namenode-hadoop01.out  

hadoop04: starting datanode, logging to /home/hadoop/hadoop-2.4.1/logs/hadoop-hadoop-datanode-hadoop04.out **>> 기동순서 2. Datanode**  

hadoop03: starting datanode, logging to /home/hadoop/hadoop-2.4.1/logs/hadoop-hadoop-datanode-hadoop03.out **>> 기동순서 2. Datanode**  

Starting secondary namenodes [0.0.0.0] **>> 기동순서 3. Secondary Namenode**  

0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.4.1/logs/hadoop-hadoop-secondarynamenode-hadoop01.out  

starting yarn daemons  

starting resourcemanager, logging to /home/hadoop/hadoop-2.4.1/logs/yarn-hadoop-resourcemanager-hadoop01.out  **>> 기동순서 4. Resorce Manager **  

hadoop03: starting nodemanager, logging to /home/hadoop/hadoop-2.4.1/logs/yarn-hadoop-nodemanager-hadoop03.out  

hadoop04: starting nodemanager, logging to /home/hadoop/hadoop-2.4.1/logs/yarn-hadoop-nodemanager-hadoop04.out  

- stop-all.sh : 기동순서의 역순으로 동작을 종료시킨다.

[hadoop@hadoop01 ~]$ stop-all.sh  


4. 동작 확인

- http://hadoop01:50070/dfshealth.html : overview , node 상태 확인 등

- > live node > heart bit : last contact : 2 이상 늘어나지 않는다 , 600 초 이상 연결 안될시 클러스터에서 빠지게 된다

- http://hadoop01:50070/explorer.html : 하둡 데이터 조회

- http://hadoop01:19888 : job 동작 히스토리 관리

- http://hadoop01:

- 프로세스 확인

- 마스터 [hadoop@hadoop01 ~]$ jps  

3830 ResourceManager : 마스터 운영시 필요 (클러스터의 리소스 관리 & Task Tracking : job의 생성-소멸까지 관리한다 >> slave 로 역할이 옮겨짐(2.0))  

4089 Jps  

3514 NameNode : 마스터 운영시 필요  

3696 SecondaryNameNode  

- 슬레이브 [hadoop@hadoop04 hadoop]$ jps  

2581 Jps  

2489 NodeManager  


5. hadoop 기본 명령어

- hadoop fs <-option> ... : hadoop 파일 시스템에 CRUD 동작

- hadoop dfsadmin <-option> : hdfs 에 노드 추가 삭제 관련한 동작

- hadoop jar JAR명 메인클래스 args ... : 생성한 mapreduce 동작 jar 의 실행

'BigData' 카테고리의 다른 글

Hadoop - MapReducer  (0) 2016.08.02
HDFS ( Hadoop Distributed File System )  (0) 2016.08.01
Hadoop 기초  (0) 2016.08.01
Posted by 감각적신사
,

Hadoop 기초

BigData 2016. 8. 1. 08:18

#Hadoop


1. 배경

     - cloud 환경 : utility 의 개념으로 사용한 만큼 과금하는 서비스

      1) 종류 : DaaS, IaaS , SaaS , DaaS , XaaS(무엇이든 올 수 있다)

      2) 장점 : 시간 절약, 비용 절약

      3) 아시아 지역 cloud 업체 : KT, 화웨이, 알리바바 etc

    - 빅 데이터

      1) 비교 : **기존 데이터베이스** 관리도구 로 데이터를 수집, 저장, 관리, 분석할 수 있는 역량

      2) 대량의 정형 또는 비정형 데이터 집합 및 이러한 데이터로부터 가치를 추출하고 결과를 분석하는 기술

    - 기계학습 : 분류 > 예측 > 군집 > 패턴인지


2. 하둡

    - 정의

1) apache 내 데이터베이스 그룹 내에 존재하는 프로젝트

      2) 대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크

    - 특징

      1) 다량의 큰 파일 보관하기 용이함

      2) 작은 파일 보관에는 부적합


3. 하둡 아키텍쳐

    - HDFS(Hadoop Distributed File System) : 여러 하둡 저장소의 집합

    - MapReduce : 정렬, 분석 하는 배치스타일의 작업

    - 데이터 처리 : 언어(java) -> Scala (함수형 언어.. 네이버, 다음 등에서 도입예정)


4. 하둡 에코시스템 : 하둡 관련 프로젝트

     - hadoop : DataWare 역할

     - Zookeeper : HA 구성 등...

     - hive : 하둡을 RDB 처럼 사용하게끔 SQL 사용하도록 돕는다

     - SQL 처리 관련 프로젝트

        1) 배치성 SQL : hive

        2) real time SQL : Tajo, Impla

     - 실시간 분석처리 엔진

        1) spark : SNS 분석 가능

        2) storm 프로젝트

        3) 커낵션 풀 : GearmanD

        4) 어플리케이션 서버 (Thrift, Avro ..)

'BigData' 카테고리의 다른 글

Hadoop - MapReducer  (0) 2016.08.02
HDFS ( Hadoop Distributed File System )  (0) 2016.08.01
Hadoop 설치  (0) 2016.08.01
Posted by 감각적신사
,