Jupyterhub是一个支持多用户的Notebook服务器,用于创建、管理和代理多个Jupyter Notebook实例。本文为您介绍如何访问Jupyterhub的Web UI,以及Jupyterhub的使用示例。

前提条件

已创建DataScience集群,详情请参见创建集群

获取主节点的公网IP地址

  1. 进入集群管理页签。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
  2. 集群管理页面,单击相应集群所在行的详情
  3. 集群基础信息页面的主机信息区域,获取主节点的公网IP地址。
    IP

访问Jupyterhub的Web UI

  1. 添加12443端口到安全组。
    详情请参见添加安全组规则
  2. 访问Web UI。
    在浏览器地址栏输入http://主节点公网IP地址:12443,即可访问相应的Web UI。

    主节点公网IP地址的获取方式请参见获取主节点的公网IP地址

示例

本文通过以下三种方式为您展示Jupyterhub的使用:

  • WordCount
    1. 通过SSH方式连接集群。

      详情请参见使用SSH连接主节点

    2. 创建测试数据hello.txt,内容如下:
      hello world
      hello alibaba
      hello taobao
    3. 创建测试数据的上传目录。
      hadoop fs -mkdir  hdfs://emr-header-1:9000/user/spark/
    4. 上传测试数据至HDFS。
      hadoop fs -put hello.txt hdfs://emr-header-1:9000/user/spark/
    5. 在Jupyterhub页面,选择新建 > Python 3

      访问Jupyterhub的Web UI,详情请参见访问Jupyterhub的Web UI

    6. 拷贝如下代码至Cell中并单击运行
      代码如下:
      import findspark
      findspark.init()
      from pyspark import SparkContext, SparkConf
      try:
          sc.stop()
      except:
          pass
      conf = SparkConf().setAppName("wordcount").setMaster("local")
      sc = SparkContext(conf = conf)
      
      lines = sc.textFile("hdfs://emr-header-1:9000/user/spark/hello.txt")
      words = lines.flatMap(lambda line:line.split())
      pairs = words.map(lambda word:(word,1))
      counts = pairs.reduceByKey(lambda a,b:a + b)
      counts.countByKey()
      print(counts.collect())
      说明 此方式支持local和yarn-client模式,不支持yarn-cluster模式,仅spark-submit方式支持yarn-cluster模式。
      WordCount
      返回结果如下:WordCount_result
  • MatPlot
    1. 在Jupyterhub页面,选择新建 > Python 3

      访问Jupyterhub的Web UI,详情请参见访问Jupyterhub的Web UI

    2. 拷贝如下代码至Cell中并单击运行
      代码如下:
      import numpy as np
      from matplotlib import  pyplot as plt
       
      ys = 200 + np.random.randn(100)
      x = [x for x in range(len(ys))]
      plt.plot(x,ys,'_')
      plt.fill_between(x,ys,195,where=(ys>195),facecolor = 'g',alpha = 0.6)
      plt.title('Fills and alpha example')
      plt.show()
      MatPlot
      返回结果如下:MatPlot_result
  • spark-submit
    1. 通过SSH方式连接集群。

      详情请参见使用SSH连接主节点

    2. 执行如下命令,查找JAR包。
      find / -name spark-examples_2.11-2.4.5.jar
      本示例返回信息如下所示:
      /opt/apps/ecm/service/spark/2.4.5-hadoop2.8-2.0.1/package/spark-2.4.5-hadoop2.8-2.0.1/examples/jars/spark-examples_2.11-2.4.5.jar
    3. 进入JAR包目录。
      cd /opt/apps/ecm/service/spark/2.4.5-hadoop2.8-2.0.1/package/spark-2.4.5-hadoop2.8-2.0.1/examples/jars/
    4. 根据相应模式提交Spark任务。
      • local模式
        spark-submit --master local --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.4.5.jar 100
      • yarn-client模式
        spark-submit --master yarn-client --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.4.5.jar 100
      • yarn-cluster模式
        spark-submit --master yarn-cluster --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.4.5.jar 100