EMR上Zeppelin入门

什么是Zeppelin?

简而言之,就是一个大数据分析平台。用户可以利用提供好的WEB UI,在线编写分析逻辑代码,输出结果,并且能够利用可视化工具,形象生动的在线展示结果。

基础知识

notebook:是一个自己的工作环境,可以在notebook中执行大数据分析的逻辑,可以配置interpreter,可以设置权限等。基本上所有web上的操作都会在一个notebook中进行

interpreter:是zeppelin的核心概念-解析器,zeppelin通过解析器(interpreter)将用户输入转换为后台服务命令。具体原理请自行查阅资料。

Zeppelin安装

直接通过zeppelin官网。我下载的是包括了所有interpreter的压缩包

下载完成之后,解压然后运行(unix platform):bin/zeppelin-daemon.sh start

这个时候你就能访问8080端口来访问zeppelin服务了

接入spark on yarn集群

接入spark on yarn非常简单,只用在conf/zeppelin-env.sh中加入两个配置即可

  • export MASTER=yarn-client
  • export SPARK_HOME=/usr/local/service/spark

master是zeppelin底层调用spark的参数,熟悉利用命令行通过spark提交任务的朋友应该比较熟悉:$SPARK_HOME/bin/spark-submit --class package.SparkStudy --master yarn-cluster ./wordcount.jar some_params

上面这个命令是shell下利用spark提交任务到yarn上的最简单的方式(只指出了运行模式,jar包以及运行的class,其他参数全部默认,也不包含输入输出),其中master就是我们在zeppelin中设置的master,zeppelin并不支持yarn-cluster,所以我们选择yarn-lient。SPARK_HOME就是本地的SPARK根目录。设置好之后,就可以重启zeppelin了。

下面就可以利用zeppelin在线调用我的spark on yarn集群了

下面利用python脚本生成需要处理的数据:

该脚本随机生成了10亿个0~99的随机数,下面将利用zeppelin分析该数据,完成一个统计工作,看看python随机数是否均衡。数据生成完之后,利用命令将数据保存在hdfs当中(hdfs dfs -put local-data dfs-dir)。

此时我们已经拥有了数据,下面就开始直接在zeppelin上进行分析吧

使用zeppelin:

首先访问8080端口,然后新建一个note

点击创建Note进入到一下页面

下面就可以在输入框中编写逻辑代码了,默认使用spark(创建note的时候有配置过)

下面我直接给出结果的截图:

我总共提交了三块代码,分别是spark和2个sparkSQL的代码

最终第三块的sparkSQL是对这10亿数字分配在0~99里的总误差,可以发现总误差非常非常小,说明python的random.randint还是非常均匀的。

注意:

1. zeppelin架在spark on yarn上,用的是yarn-client模式,所以AM会在本机启动

2. 请确保自己的spark on yarn没有有问题

3. 在生成10亿数据时,应该采用xrange(10亿),而不是range(10亿),一个小细节,懂python的应该知道。

4. zeppelin还支持很多的interpreter,以上流程只介绍了spark和sparksql,大家可以自己研究一下,使用各种解析器完成分析工作。

PS:如果文中有错误的地方,请各位大神指点一下,本人菜鸟很多东西不甚了解,谢谢

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漫漫前端路

写个 vue-loading-template 组件

源码(star ? start : start):github.com/jkchao/vue-…

46220
来自专栏谭广健的专栏

【小程序-云开发】手把手教你使用云开发(数据库开发)

继上一次程序员哥哥简单开发了一个照片储存小程序后,感觉还是有些小小缺陷,就是没办法对上传照片进行文字描述。因为主要都是文字,如果将文字描述再保...

5.2K10

控制MongoDB中的集合分布

分片标记(Shard tagging)是MongoDB 2.2.0版中的一项新功能。通过对集合进行标记使其被强制写入到本地数据中心,也可以用来将某个集合固定到一...

24360
来自专栏用户画像

4.2.4 文件系统实现

线性列表就是把文件名组织成一个线性表,查找的时候依次与线性表中每个表项进行比较。若把文件名按序排列使用折半查找法 可以降低平均的查找时间,但是建立新文件时会增加...

8520
来自专栏Web项目聚集地

Javascript中的异步

8320
来自专栏数据和云

如何提高Linux下块设备IO的整体性能?

编辑手记:本文主要讲解Linux IO调度层的三种模式:cfp、deadline和noop,并给出各自的优化和适用场景建议。 作者简介: ? 邹立巍 Linux...

71540
来自专栏Golang语言社区

Golang语言--开发游戏服务器需要了解的知识

我们以linux环境为列给大家讲解: 1 熟悉网络编程 网络编程主要是涉及到服务器与客户端间的通信,游戏开发中多数采用长链接的形式;短...

405120
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用wrk对HTTP延迟进行基准测试

本文重点介绍称为开源HTTP基准测试工具WRK,它可以在高负荷下测量HTTP服务的延迟。

49200
来自专栏linux驱动个人学习

Linux核心调度器之周期性调度器scheduler_tick--Linux进程的管理与调度(十八)

因而内核提供了两个调度器主调度器,周期性调度器,分别实现如上工作, 两者合在一起就组成了核心调度器(core scheduler), 也叫通用调度器(gener...

19120
来自专栏前端知识分享

第214天:Angular 基础概念

  + https://github.com/angular/angular.js/releases

12830

扫码关注云+社区

领取腾讯云代金券