Big data 처리

  • 빅데이터란
    • https://pearlluck.tistory.com/384
    • 예: 사용자의 프로그램에 대한 로그 데이터 수집
      • 클라우드 서버에서 사용자에게 머신러닝을 개발하기 위한 서버를 대여해준다. 서버에서는 사용자가 돌린 머신러닝 프로그램의 로그 내역(python코드 상에서 print한 정보 등)을 저장하여, 사용자가 자신의 코드를 디버깅하기 위해 로그내역을 검색할 수 있는 웹 UI를 제공하고자 한다.
      • 각 로그가 JSON포매승로 다음과 같은 정보를 가진다고 가정.
        • TYPE : 로그 종류(INFO, DEBUG, ERROR 중 하나임)
        • User ID
        • 날짜
        • Message: 로그 메세지
      • 데이터 소스: 빅데이터 처리를 하기 전에 디스크에 저장되어있었던 로그들의 raw data들
      • 수집: 사용자의 프로그램이 돌면 로그 수집기가 해당 프로그램에서 나오는 로그 데이터를 추적하여 수집함.
        • 예시: logfowarder(로그수집기), Kafka
          • 각 서버마다 logforwarder 프로그램이 실시간으로 사용자의 로그내역이 저장되는 파일(/var/log/user.log)를 읽어와서 로그 정보가 추가될때마다 Kafka에 전송함.
          • Kafka는 logfowarder로부터 받은 로그 정보를 HDFS(하둡)에 전송
      • 저장: 수집된 로그정보들은 디스크에 저장됨.
        • 예시: NoSQL 또는 HDFS(하둡파일시스템)
          • 수집된 로그 정보들을 key,value의 형태로 다수의 디스크에 분산 저장함.
            • key: log ID
            • value: log정보 (TYPE, User ID, 날짜, Message)
      • 처리: 관리자는 로그의 월별 발생 횟수를 타입별로 시각화하고자함.
        • 예) 1월에는 로그가 총 N개 있었는데, ERROR가 M번 발생하고, INFO가 .... 
        • 예시: Spark의 MapReduce기술 (아래에서 다시 설명)
          • Mapper
            • 각 Mapper는 관리자에게 필요하지 않은 UserID, Message를 삭제함.
              • input: key: LogID, Value: <Type, UserID, 날짜, Message>
              • Output: Key: LogID, Value: <Type, 날짜>
          • Reducer
            • Reducer은 매 월 로그의 타입 별 발생 횟수를 결과값으로 출력
              • input: <Type, 날짜>
              • Output: Key: <Month>-<Type>, Value: <갯수>
                • 예) 
                  • 1월-ERROR: 523512번
                  • 1월-INFO: 12342번
                  • 1월-DEBUG: 42312451번
                  • ...
      • 분석: 관리자가 로그데이터를 머신러닝 기술을 이용하여 Log들에 대한 anamoly detection 보안 검사 수행
        • 정확한 플로우는 모르지만, 앞과 같이 저장되있는 로그를 "처리"과정을 통해 전처리를 하고, 전처리된 데이터를 머신러닝하여 해킹 사례가 있는지 추적할 수 있을 것임.
    • 표현: WebUI를 통해 로그 내역이 그래프로 추출됨. 
  • Spark
    • 앞서 설명한 빅데이터 플로우의 "처리" 과정을 담당
    • 빅데이터의 "처리"과정에서 가장 핫한 기술은 Map Reduce기술임
      • Map reduce
        • https://12bme.tistory.com/154 
        • 스토리지에는 데이터가 <key, value>형태로 전혀 정제되지 않은 Raw상태로 저장되어 있음. 이 Raw 데이터를 요구사항에 맞는 유익한 데이터로 바꾸는 것이 "처리"의 목표임.
        • 사용자가 Map reduce 실행을 요청하면, 다수의 서버가 동시적으로 어떤 일을 수행함. 서버가 수행하는 일은 다음 중 하나임. 
          • Mapping
          • Shuffling
          • Reducer
      • Mapping
        • https://12bme.tistory.com/154
          • 예시 꼭 보고 이해하자
          • 디스크에 저장된 각각의 데이터에 대해 어떤 처리를 해서 쓸모있는 형식으로 바꾸는거임.
              • 각 Mapper는 관리자에게 필요하지 않은 UserID, Message를 삭제하고, 필요한 정보만 남김.
                • input: key: LogID, Value: <Type, UserID, 날짜, Message>
                • Output: Key: LogID, Value: <Type, 날짜>
      • Shuffling (덜중요)

      • Reducer
        • https://12bme.tistory.com/154
          • 예시 꼭 보고 이해하자
          • 사용자가 원한 Output형태로 데이터를 처리하고 축약하는 것임. Mapper에서 보낸 로그 데이터는 수백만개였는데, Reducer과정에서 12개(1월~12월)의 데이터로 갯수가 확 줄어듬. Reducer과정이 거친 결과데이터가 바로 우리에게 필요한 데이터인것임.
    • 원래는 "하둡"에서 Map Reducer기술을 적용하여 널리널리 사용되고 있었음.
      • 그런데 하둡은 "디스크"를 사용하기 떄문에 속도가 느려짐.
      • 디스크대신 메모리를 사용하는 기술이 Spark임.
      • Spark는 하둡을 대체한다기보다는, 하둡과 함께 사용해서 서로의 부족함을 매워준다.
      • 기본 링크: https://wooono.tistory.com/50
      • 심화 링크: https://12bme.tistory.com/433





댓글

가장 많이 본 글