Zeppelin
What is Zeppelin?
- iPython notebook 처럼 script를 interactive하게 실행해줌
- experiment를 쉽게, 코드를 공유하기 좋은 툴
- Spark, SparkSQL과 견고하게 통합되어있다.
- Spark 뿐만아니라 다양한 interpreter들이 있다.
- Cassandra, Hive, HBase, HDFS, R...
- SparkSQL에 대한 visualization을 해줌
실습
- hortonworks sandbox에는 zeppelin이 이미 설치되어있음
- 127.0.0.1.9995 접속
- create new note
- interpreter binding : interpreter의 우선순위 설정
%md
### Let's make sure Spark is woring first
Let's see what version we're working with
# Zeppelin notebook에는 Spark가 pre-initialized 되어 있음
# 그래서 SparkContext 'sc', SparkSQL 'sqlcontext' 가 존재
sc.version
- data download
%sh # shell command를 입력하겠다
wget http://media.sundog-soft.com/hadoop/ml-100k/u.data -O /tmp/u.data
wget http://media.sundog-soft.com/hadoop/ml-100k/u.item -O /tmp/u.item
echo "Downloaded!"
- hdfs에 복사
%sh
hadoop fs -rm -r -f /tmp/ml-100k
hadoop fs -mkdir /tmp/ml-100k
hadoop fs -put /tmp/u.data /tmp/ml-100k/
hadoop fs -put /tmp/u.item /tmp/ml-100k/
- RDD 생성
# 객체 생성
final case class Rating(movieID: Int, rating: Int)
# 불변 변수
val lines = sc.textFile("hdfs:///tmp/ml-100k/u.data").map(x => {val fields = x.split("\t"); Rating(fields(1).toInt, fields(2).toInt)}
- RDD를 DataFrame으로 변환
import sqlContext.implicits._
val ratingsDF = lines.toDF()
ratingsDF.printSchema()
- DataFrame을 조작하기
val topMovieIDs = ratingDF.groupBy("movieID").count().orderBy(desc("count")).cache()
topMovieIDs.show()
- SparkSQL table을 생성
ratingDF.registerTempTable("ratings")
- SparkSQL로 SQL query날리기
%sql
SELECT * FROM ratings LIMIT 10
%sql
SELECT rating, COUNT(*) as cnt FROM ratings GROUP BY rating
- SparkSQL에 titles table 등록 및 두 table을 join
final case class Movie(movieID: Int, title: String)
val lines = sc.textFile("hdfs:///tmp/ml-100k/u.item").map(x => {val fields = x.split("|"); Rating(fields(0).toInt, fields(1))}
import sqlContext.implicits._
val movieDF = lines.toDF()
movieDF.registerTempTable("titles")
%sql
SELECT t.title, count(*) cnt FROM rating r JOIN titles t ON r.movieID = t.movieID GROUP BY t.title ORDER BY cnt DESC LIMIT 20
Hue
Hue vs Ambari
- Hortonworks
- Ambari가 관리 및 query / files UI를 제공
- Zeppelin을 추가로 설치하여 notebook환경 제공
- 100% open-source
- Cloudera
- Hue가 query / files UI 및 notebook환경 제공
- Cloudera Manager가 관리를 담당
- 일부 open-source가 아님
- 개념적으로 Clouder에서는 Hue가 Ambari와 유사한 역할을 함
Hue의 장점
- Oozie editor를 제공
- Hortonworks에서는 Oozie workflow는 오직 xml 파일로만 관리되었지만 Hue에서는 Oozie editor를 UI형태로 제공한다.
- Ambari와 마찬가지로 Pig, Hive, HDFS, Sqoop에대한 UI를 제공
- HBase, Spark에 query를 실행할 수 있는 UI제공
- 특히 Spark interface는 Zeppelin처럼 notebook 환경으로 제공
gethue.com
에 접속하면 demo를 체험해 볼 수 있음
Other cluster managers
- Gaglia
- 분산 모니터링 시스템
- UC Berkeley에서 개발되어 대학에서 많이 사용됨
- Wikimedia, Wikipedia 도 사용했었음
- Ambari / Cloudera manager / Grafana에 의해 대체됨
- Chukwa
- Hadoop cluster의 log를 모으고 분석하는 시스템
- Flume, Kafka에 의해 대체됨