简述

本文,意在以最小的篇幅,来帮助对大数据和Spark感兴趣的小伙伴,能尽快搭建一个可用的Spark开发环境.力求言简意赅.文章,不敢自称BMR的最佳实践,但绝对可以帮助初学者,迅速入门,能够专心于Spark本身的学习和实践.不服的童鞋,可以先自己折腾下BMR,再返回来读这篇文章O(∩_∩)O哈!

创建 BMR 实例

假定,你已经有了一个经过认证的百度开发者账号,就像系列第一篇文章讲的那样.什么?没有?那基本,没有必要继续往下读了,明天再来吧.没有经过认证的百度开发者账号,应该是没有权限创建 BMR 实例的.

1.登录

网址是 https://login.bce.baidu.com/ 填写账号和密码,大家都懂的.建议收藏下,应为百度开放云,搜索时,很容易被导流到百度云盘上,这是两个不同的东西.

2.充值

在 "管理控制台",个人信息附近分栏下,有个"充值"按钮.至少应该保证账户余额是100元,否则应该是无法成功创建BMR的.

3.创建BMR

点击顶部的产品服务 --> 百度MapReduce --> 创建集群.

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

在创建BMR界面,"bos://"点击下拉箭头,新创建即可;集群配置--镜像版本,要选择 "BMR 0.2.0(hadoop 2.6",否则无法使用openVPN访问;内置模板,选择 "Spark",其他自己随意写即可.当然,要自己记住密码,等会儿还要用的.

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

就这样,大概10分钟后,就初始化完成了.在等待的这段时间,建议你去搜搜大数据或者spark相关的讨论,说不定会有额外收获.

使用 openVPN 访问 BMR

假定,你现在已经有一个初始化完成的 BMR 实例.点击实例名称,进入详情页,画风是这样的.

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

点击"工具下载"中的 openvpn-confi.zip 下载到本地,然后按照教程配置即可,教程参见: (https://cloud.baidu.com/doc/BMR/GettingStarted.html#.E4.BD.BF.E7.94.A8OpenVPN.E8.AE.BF.E9.97.AE.E9.9B.86.E7.BE.A4)[https://cloud.baidu.com/doc/BMR/GettingStarted.html#.E4.BD.BF.E7.94.A8OpenVPN.E8.AE.BF.E9.97.AE.E9.9B.86.E7.BE.A4]

OpenVPN服务仅支持访问镜像类型为Hadoop 2.6(bmr 0.2.0)的集群,也就是说如果你的BMR实例中没有"工具下载"一栏,说明你创建时镜像类型选错了.

配置好openVPN后,就可以通过"节点信息"中,各个节点的内网地址来访问了,主要用到的是MASTER节点.另外,我发现配置好openVPN后,我也可以通过内网地址直接访问我的其他百度云服务了,比如 云服务器,不是十分确定个中缘由,难道都在同一个机房? MASTER 节点,内网地址访问的画风一起感受下:

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

另外,熟悉服务器基本操作的人,可能会ssh登录Master节点.当然是完全可以的.一个BMR节点,是一个独立的完整的服务器.我甚至给上面配置过node开发环境,不过后来就没折腾了,因为这个处理完数据就释放了,一直开着太费钱.当然,当遇到某些特殊问题的时候,还是需要自己ssh登录去处理的.比如,我的 zeppelin 服务,曾经崩溃过一次,我只能自己ssh上去重启.客服也是可以的,但这点小事都解决不了,岂不是显得我很LOW?!

使用 hue 导入数据到BMR

hue的访问地址为: 内网地址的8888端口,如 http://192.168.0.55:8888,画风是这样的:

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

用户名和密码是自定义的,密码随意,建议用户名填写 hdfs 否则导入的数据,待会儿无法在zeppelin中使用,这涉及到一个用户组权限的问题.感兴趣的自己研究下,我不细说了.

点击 File Browser --> 上传 --> zip/tgz文件,然后选择你昨天处理好的 职位数据文件即可.没能成功的童鞋,可以直接去文首的github项目中下载:https://github.com/ios122/spark_lagou/raw/master/jobs.zip

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

数据导入OK了.如果发现发现上传完成后,一直卡在上传表单页不动,直接点叉叉号关闭就好了,它会后台解压的.

使用 zeppelin 读取数据

BMR 的 zeppelin 的服务部署在 8093 端口,如http://192.168.0.55:8093/,这是我打印出所有端口,排查出来的,文档上没有丝毫提及.不清楚文档为啥不提,但 zeppelin 可是最流行的Spark交互式开发工具.第一次访问,会有些慢.应该在初始化某些东西.

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

Create New Note,然后开始练习吧:

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

使用Spark分析拉勾网招聘信息(三): BMR 入门-LMLPHP

读取并打印结构的脚本:

val job = sqlContext.read.json("jobs")
job.registerTempTable("job")
job.printSchema()

初觉没有什么,但是仔细想下,这可是几百个文件,里面是确实存在异常数据的.当然,真正神奇的地方,是读取之后,可以直接基于此进行各种复杂的聚合运算与分析.这是下一篇的主题了.

注意: 练习完,注意释放 BMR 实例,否则会一直计费的.

附:zeppelin 启动和重启的脚本

我相信,你是有极大可能,把 zeppelin 服务搞挂的,当内存开销过大时

cd /usr/lib/zeppelin-0.5.0-incubating
bin/zeppelin-daemon.sh start
bin/zeppelin-daemon.sh stop

本系列专属github地址:https://github.com/ios122/spark_lagou

05-08 08:24