Hadoop 11. Zeppelin, Hue

skh951225·2023년 4월 18일
0

Hadoop 입문

목록 보기
11/14

Zeppelin

What is Zeppelin?

  • iPython notebook 처럼 script를 interactive하게 실행해줌
    • experiment를 쉽게, 코드를 공유하기 좋은 툴
  • Spark, SparkSQL과 견고하게 통합되어있다.
  • Spark 뿐만아니라 다양한 interpreter들이 있다.
    • Cassandra, Hive, HBase, HDFS, R...
  • SparkSQL에 대한 visualization을 해줌

실습

  1. 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
  1. 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!"
  1. 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/
  1. 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)}
  1. RDD를 DataFrame으로 변환
import sqlContext.implicits._
val ratingsDF = lines.toDF()

ratingsDF.printSchema()
  1. DataFrame을 조작하기
val topMovieIDs = ratingDF.groupBy("movieID").count().orderBy(desc("count")).cache()
topMovieIDs.show()
  1. SparkSQL table을 생성
ratingDF.registerTempTable("ratings")
  1. SparkSQL로 SQL query날리기
%sql

SELECT * FROM ratings LIMIT 10
%sql

SELECT rating, COUNT(*) as cnt FROM ratings GROUP BY rating
  1. 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에 의해 대체됨

0개의 댓글