Apache Flume-Hadoop에서 데이터 전송
Big Data,아시다시피는 기존 컴퓨팅 기술을 사용하여 처리 할 수없는 대규모 데이터 세트의 모음입니다. 빅 데이터를 분석하면 가치있는 결과를 얻을 수 있습니다.Hadoop 간단한 프로그래밍 모델을 사용하여 여러 컴퓨터 클러스터에 분산 된 환경에서 빅 데이터를 저장하고 처리 할 수있는 오픈 소스 프레임 워크입니다.
스트리밍 / 로그 데이터
일반적으로 분석 할 데이터의 대부분은 애플리케이션 서버, 소셜 네트워킹 사이트, 클라우드 서버 및 엔터프라이즈 서버와 같은 다양한 데이터 소스에서 생성됩니다. 이 데이터는log files 과 events.
Log file − 일반적으로 로그 파일은 file운영 체제에서 발생하는 이벤트 / 작업을 나열합니다. 예를 들어, 웹 서버는 서버에 대한 모든 요청을 로그 파일에 나열합니다.
이러한 로그 데이터를 수집하면 다음에 대한 정보를 얻을 수 있습니다.
- 응용 프로그램 성능을 확인하고 다양한 소프트웨어 및 하드웨어 오류를 찾습니다.
- 사용자 행동과 더 나은 비즈니스 통찰력을 이끌어냅니다.
HDFS 시스템으로 데이터를 전송하는 전통적인 방법은 put명령. 사용 방법을 살펴 보겠습니다.put 명령.
HDFS put 명령
로그 데이터를 처리하는 데있어 주요 과제는 여러 서버에서 생성 된 이러한 로그를 Hadoop 환경으로 이동하는 것입니다.
하둡 File System Shell데이터를 Hadoop에 삽입하고 읽을 수있는 명령을 제공합니다. 다음을 사용하여 데이터를 Hadoop에 삽입 할 수 있습니다.put 아래와 같이 명령.
$ Hadoop fs –put /path of the required file /path in HDFS where to save the file
put 명령 문제
우리는 put이러한 소스에서 HDFS로 데이터를 전송하는 Hadoop의 명령. 그러나 다음과 같은 단점이 있습니다.
사용 put 명령, 우리는 전송할 수 있습니다 only one file at a time데이터 생성기는 훨씬 더 빠른 속도로 데이터를 생성합니다. 오래된 데이터에 대한 분석은 정확도가 떨어지기 때문에 실시간으로 데이터를 전송할 수있는 솔루션이 필요합니다.
우리가 사용한다면 put명령을 내리려면 데이터를 패키징해야하며 업로드 할 준비가되어 있어야합니다. 웹 서버는 지속적으로 데이터를 생성하기 때문에 매우 어려운 작업입니다.
여기에 필요한 것은 단점을 극복 할 수있는 솔루션입니다. put 명령을 내리고 "스트리밍 데이터"를 데이터 생성기에서 중앙 집중식 저장소 (특히 HDFS)로 전송합니다.
HDFS 문제
HDFS에서 파일은 디렉토리 항목으로 존재하며 파일이 닫힐 때까지 파일 길이는 0으로 간주됩니다. 예를 들어, 소스가 HDFS에 데이터를 쓰고 있고 작업 도중 (파일을 닫지 않고) 네트워크가 중단 된 경우 파일에 기록 된 데이터가 손실됩니다.
따라서 로그 데이터를 HDFS로 전송하려면 안정적이고 구성 가능하며 유지 관리가 가능한 시스템이 필요합니다.
Note− POSIX 파일 시스템에서 파일에 액세스 할 때 (예 : 쓰기 작업 수행) 다른 프로그램은 여전히이 파일을 읽을 수 있습니다 (적어도 파일의 저장된 부분). 파일을 닫기 전에 디스크에 존재하기 때문입니다.
사용 가능한 솔루션
다양한 소스에서 HDFS로 스트리밍 데이터 (로그 파일, 이벤트 등)를 보내기 위해 다음 도구를 사용할 수 있습니다.
페이스 북의 서기
Scribe는 로그 데이터를 집계하고 스트리밍하는 데 사용되는 매우 인기있는 도구입니다. 매우 많은 수의 노드로 확장하고 네트워크 및 노드 장애에 견고하게 설계되었습니다.
Apache Kafka
Kafka는 Apache Software Foundation에서 개발했습니다. 오픈 소스 메시지 브로커입니다. Kafka를 사용하면 처리량이 높고 지연 시간이 짧은 피드를 처리 할 수 있습니다.
Apache Flume
Apache Flume은 다양한 웹 서비스에서 중앙 집중식 데이터 저장소로 로그 데이터, 이벤트 (등 ...)와 같은 대량의 스트리밍 데이터를 수집하고 전송하기위한 도구 / 서비스 / 데이터 수집 메커니즘입니다.
주로 다양한 소스에서 HDFS로 스트리밍 데이터를 전송하도록 설계된 안정성이 높고 분산되고 구성 가능한 도구입니다.
이 튜토리얼에서는 몇 가지 예제와 함께 Flume을 사용하는 방법에 대해 자세히 설명합니다.