사용하기 전에

Q. Spark 클러스터를 이용 중인데 Zeppelin Notebook에 접속이 안 돼요.

  • Ambari 웹 UI에 접속해 Zeppelin Notebook이 제대로 동작 중인지 확인합니다.

Cloud Hadoop에서 Zeppelin 사용법

Cloud Hadoop 클러스터 생성 시 클러스터 Type이 Spark인 클러스터에만 Zeppelin Notebook이 설치되어 있습니다.

Zeppelin은 CLI(Command Line Interface) 기반의 Spark를 웹 기반으로 편하게 분석하고 결과를 그래프로 가시화해주는 웹 애플리케이션입니다. 자세한 내용은 Apache Zeppelin 페이지를 참고합니다.

Zeppelin Notebook UI 접속

Zeppelin Notebook UI는 콘솔의 [Application별 보기]탭 내에서 Zeppelin Notebook 접속 버튼을 이용합니다.

직접 접속 방법

웹브라우저의 주소 입력란에 다음과 같이 입력합니다. 클러스터에 할당된 Public domain 주소를 사용합니다.

http://Public domain:9995

Ambari 웹 UI를 통한 접속 방법

1532591294466

1532591294466

1532591294466

  • 접속에 성공하면, Zeppelin 페이지 상단 오른편 login 버튼 옆에 초록색 점이 표시됩니다.
  • 로그인 계정은, 클러스터를 생성할때 콘솔에서 설정한 어드민 계정과 동일합니다.

Zeppelin Notebook 시작

Zeppelin Notebook을 생성하여, 데이터를 입력하고 결과를 그래프로 확인할 수 있습니다.

본 가이드의 내용은 Zeppelin Notebook에 기본적으로 제공되는 "Zeppelin Tutorial (Basic Features)" Notebook을 참고하였습니다.

  1. 새 Notebook을 만듭니다.

    ① Zeppelin 상단의 Notebook을 클릭합니다.

    Create new note를 클릭합니다.

    ③ 노트 이름을 입력하고 노트를 생성합니다.

    Default Interpreter는 노트 생성 후에도 변경할 수 있습니다.

    1532591294466

    1532591294466

  2. 테이블에 데이터를 로드하는 코드를 Notebook에 작성합니다.

    다음은 bank.csv의 데이터를 bank 테이블에 로드하는 샘플 코드입니다.

    %spark.spark
    import org.apache.commons.io.IOUtils
    import java.net.URL
    import java.nio.charset.Charset
    
    // Zeppelin creates and injects sc (SparkContext) and sqlContext (HiveContext or SqlContext)
    // So you don't need create them manually
    
    // load bank data
    val bankText = sc.parallelize(
        IOUtils.toString(
            new URL("https://s3.amazonaws.com/apache-zeppelin/tutorial/bank/bank.csv"),
            Charset.forName("utf8")).split("\n"))
    
    case class Bank(age: Integer, job: String, marital: String, education: String, balance: Integer)
    
    val bank = bankText.map(s => s.split(";")).filter(s => s(0) != "\"age\"").map(
        s => Bank(s(0).toInt,
                s(1).replaceAll("\"", ""),
                s(2).replaceAll("\"", ""),
                s(3).replaceAll("\"", ""),
                s(5).replaceAll("\"", "").toInt
            )
    ).toDF()
    bank.registerTempTable("bank")
    
  3. Shift + Enter 키를 누르거나 재생을 클릭하여 코드를 실행합니다.

    FINISHED 상태와 Took 30 sec 문구로 코드가 정상적으로 수행된 것을 확인할 수 있습니다.

    1532591294466

  4. 새 단락에 테이블의 데이터를 조회하는 Spark SQL 구문을 작성합니다.

    %spark.sql
    select age, count(1) value
    from bank
    where age < 30
    group by age
    order by age
    
  5. Shift + Enter 키를 누르거나 재생을 클릭하여 코드를 실행합니다. 그래프 버튼을 클릭하여 SQL 결과를 그래프로 볼 수 있습니다.

    1532591294466

    1532591294466

Zeppelin Notebook 백업

Zeppelin Notebook은 클러스터 마스터 노드의 1번 서버에 저장됩니다. 따라서 클러스터를 삭제하면 Notebook도 삭제됩니다.

동일한 Notebook을 다른 클러스터에서 사용하기 위해서는 작업 수행을 완료한 후 Notebook을 내보내야 합니다. Notebook 백업은 Notebook 단위로 가능합니다. 내보내기 아이콘을 클릭하여 Notebook을 로컬 PC에 백업합니다. 내보낸 파일은 JSON 형식으로 저장됩니다.

1532591294466

연관 정보 바로가기

Hadoop 클러스터 생성, 관리 및 사용 관련하여 아래 사용 가이드를 참고하실 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...