Hadoop
- 방대한 양의 데이터를 클러스터내의 하드 드라이브 들에 분산시킨다.
- 또한 이 분산된 모든 데이터들을 단일 파일 시스템으로 보여준다.
- 또한 데이터의 여분 또한 제공
- 혹여 클러스터 내 한 노드가 불이나서 데이터의 손실이 생겼다.
- 데이터의 백업 복사본을 클러스터의 다른 컴퓨터에도 보관하기 때문에 이런 상황에 있어 자동으로 소실된 데이터를 복구한다.
- 저장뿐 아니라 데이터를 처리할 때도 클러스터의 컴퓨터들을 함께 이용해 병렬 처리 한다.
- 클러스터 내 모든 컴퓨터 cpu에게 작업을 분배하여 동시 처리하게 한다.
Why Hadoop?
- 현대 사회가 다루는 데이터는 너무나도 커졌다.
- 하나의 컴퓨터는 충분하지 않다. 한 대의 성능을 수직적으로 확장하는것의 한계
- 그리고 그 방대한 데이터 안에서 원하는 데이터를 탐색하는 시간이 너무 커졌다.
- 재난에 robust 하다
- 여러 CPU로 병렬처리 하기 때문에 속도도 빠르다.
- 하둡은 수평적 확장이다.
하둡 생태계에는 어떤 요소들이 있나? - (1)Ecosystem
- HDFS
- hadoop itself
- 하둡 분산 파일 시스템
- 실질적인 데이터 저장소
- 빅데이터를 클러스터의 컴퓨터들에 분산 저장하는 시스템이다.
- 또한 재난 대처 또한 담당
- YARN(Yet Another Resource Negotiator)
- 또 다른 리소스 교섭자
- HDFS 가 데이터 저장에 대한 부분이면, YARN은 데이터 처리 부분을 담당
- 누가 작업을 언제 실행하고 어떤 노드가 추가 작업을 담당할 지 결정
- MapReduce
- 데이터를 클러스터 전체에 걸쳐 처리하도록 하는 프로그래밍 메타포 혹은 모델
- mapper와 reducer라는 두 개의 구분된 스크립트 혹은 함수로 구성됨
- Mapper
- 클러스터에 분산된 데이터들을 효율적으로 동시에 변형시킬 수 있다.
- Reducer
- Pig
- 자바나 파이썬으로 mapreduce 코딩을 하는 것 보다 sql스타일의 언어에 익숙하다면 사용 권장
- high level의 API
- 작성된 Pig 스크립트를 MapReduce가 읽을 수 있도록 로우레벨로 번역하고 MapReducerk YARN과 HDFS에게 데이터를 처리하고 원하는 답을 가져오게 한다.
- Hive
- Pig 와 유사, SQL에 조금 더 가깝다.
- 실제 SQL 쿼리를 받고 파일 시스템에 분산된 데이터를 SQL 데이터베이스처럼 취급한다.
- 클러스터에 저장된 데이터가 내부적으로는 관계형 데이터베이스가 아님에도 불구하고 SQL로 쿼리한다.
- Ambari
- 클러스터 전체를 보여주는 최상위 툴, 리소스 운영 상태 등을 시각화, Hive나 Pig 쿼리를 실행하거나 데이터베이스를 불러올 수 있는 화면이 있다.
- Mesos
- YARN의 대안 정도?
- 같은 문제를 YARN과 다른 방식으로 해결한다.
- Spark와 연결된다.
- Spark
- MapReduce와 동일 선상
- Yarn 혹은 Mesos 둘 중 어느쪽을 기반으로 하든 데이터에 쿼리를 실행할 수 있다.
- TEZ
- Spark와 동일 선상
- DAG 를 사용하여 MapReduce의 일을 할 때 더 유리해진다.
- 보통 Hive와 같이 사용되어 성능을 가속한다.
- HBASE
- 클러스터의 데이터를 트랜잭션 플랫폼으로 노출하는 역할을 하며 NoSQL 데이터베이스라고 불린다.
- 기둥형 데이터 스토어
- 단위 시간당 실행되는 트랜잭션의 수가 큰 아주 빠른 데이터베이스이다.
- 따라서 데이터를 웹 애플리케이션이나 웹사이트에 노출시켜 Online Transaction Processing을 하는데 적합하다.
- Spark나 MapReduce 등에 의해 변화가 생겼을 수도 있을 클러스터에 저장된 데이터를 후에 다른 시스템에 노출시킬 빠른 방법을 제공한다.
- STORM
- 스트리밍 데이터를 실시간으로 처리하는 방식
- 데이터가 실시간으로 입력됨에 따라 실시간으로 기계학습을 업데이트 하거나 데이터를 데이터베이스에 저장할 수 있다.
- OOZIE
- 클러스터의 작업을 스케쥴링 한다
- 예를 들어 데이터를 Hive에 불러와 Pig를 통해 통합하고, Spark를 통해 쿼리한 후에 결과를 HBASE로 변환시킨다 하면 OOZIE가 이 모든것을 관리해 안정적이고 일관성 있게 실행할 수 있다.
- Zookeeper
- coordinating cluster
- 이 기술을 사용해 어떤 노드가 살아있는지 추적할 수 있고,여러 애플리케이션이 사용하는 클러스터의 공유 상태를 안정적으로 확인한다.
- 그래서 어떤 노드가 다운되더라도 일관성 있고 안정적인 성능을 클러스터 전체에 걸쳐 유지 할 수 있다.
- 데이터 수집에 특화된 플랫폼들
- Scoop
- 하둡의 데이터베이스를 관계형 데이터베이스로 엮어낸다.
- ODBC나 JDBC로 소통 가능한 데이터는 Sqoop을 통해 HDFS의 파일로 변형할 수 있다
- 레거시 데이터베이스와 Hadoop을 잇는 연결 장치
- FLUME
- 대규모 웹로그를 안정적으로 클러스터에 불러올 수 있다.
- 여러개의 웹서바의 웹로그를 실시간으로 감시하고 클러스터에 게시해 STORM이나 Spark Streaming을 통해 처리한다.
- Kafka
- general purpose 의 데이터 수집
- PC 혹은 웹 서버 클러스터에서 모든 종류의 데이터를 수집해 하둡 클러스터로 내보낸다.
하둡 생태계에는 어떤 요소들이 있나? - (2)ExternalStorage
- MySQL이든 MongoDB든 어떤 SQL데이터베이스들은 우리 클러스터와 통합해 사용할 수 있다.
- Sqoop을 통해 우리 클러스터로 데이터를 가져올 뿐 아니라, 반대로 MySQL로 내보낼 수도 있다.
- 실시간 애플리케이션과 클러스터 사이에 Cassandra나 MongoDB 같은 층을 만들어두는 것을 추천한다.
- 둘다 많은 처리량을 갖는 키-값 데이터 스토어를 운용하는데 좋은 선택이다.
하둡 생태계에는 어떤 요소들이 있나? - (3)QueryEngine
- 대화형으로 SQL 쿼리를 입력할 수 있다.
- Hive와 같은 역할이지만, Hive는 하둡 생태계이며 조금더 견고하게 엮여있다.
- DRILL
- 다양한 NoSQL 데이터베이스에 SQL쿼리를 작성해 사용할 수 있도록 한다.
- Hbase, Cassandra, MongoDB 같은 외부 데이터베이스와 소통할 수 있고 소통한 내용을 엮어서 이질적인 데이터 스토어들에 걸쳐 쿼리를 작성하고 그 결과를 한데 모아줄 수 있다.
- Hue
- Cloudera에서는 Hue가 Ambari 의 역할을 한다.
- PHOENIX
- DRILL과 유사
- 전체 데이터 스토리지 기술에 걸쳐 SQL스타일의 쿼리를 할 수 있게 한다.
- 또한 ACID를 보장하고 OLTP를 제공한다.
- NOSQL Hadoop 데이터 스토어에 ACID가 보장되면 관계형 데이터베이스의 관계형 데이터 스토어와 엄청 유사해진다.
- Presto & Zeppelin
- 전체 클러스터에 쿼리를 실행할 수 있는 또 다른 방법
- Zep
- 클러스터와의 상호작용과 사용자 인터페이스를 Notebook 유형으로 접근했다.