jupyter+spark环境配置

Jupyter与Spark开发环境配置指南

什么是Spark?

Spark是使用大量数据进行计算的框架。为什么需要Spark?比如,一个易于读入内存的小型数据集,Gb级的,你可能会使用Pandas,R或其他工具加载整个数据集,并且之后进行一些清洗和可视化,如果使用合适的计算机(或云计算基础设施),你将轻松完成而没有计算性能相关的麻烦。

现在你必须处理1Tb(或更大)的数据集,并训练一个机器学习算法。即使使用强大的电脑也是疯狂的。Spark 提供了处理这些数据怪物所需的两个功能:

并行计算:你使用的不是一台而是多台计算机来加速

容错:如果某台计算机在处理过程中间挂起,则必须能够恢复。

Spark如何在内部工作原理超出了本教程的范围,假设你已经熟悉了。无论如何,你不需要Spark的知识来设置并运行自己的集群。

什么是Spark集群,“独立”是什么意思?

Spark集群

Spark集群是一些运行Spark并且一起工作的计算机。一个集群包括:

Master:是安排一切工作的电脑之一。它分配工作并管理一切。

Slaves:是完成工作的电脑。他们按照Map Reduce模式处理大量数据集的块。任一计算机可以同时成为Master和 Slaves。

独立

这意味着集群中每台计算机都安装了Spark。正在使用中的集群管理器由Spark提供。还有其他的集群管理器,如Apache Mesos和Hadoop YARN。

要求

按照本教程,你需要:

至少两台电脑:这就是一个集群。

Linux:它也适用于OSX,你必须能够运行shell脚本。到目前为止,还没有看到Spark在传统Windows上运行。

对于本教程,我已经使用了带有Ubuntu 17.04的MacBook Air,以及运行Ubuntu 16.04 LTS的Linux子系统的Windows 10。

如果不符合这些要求,请不要担心,请按照以下步骤操作:

下载Oracle Virtualbox。

下载Linux。

在Virtualbox中创建虚拟机,并在其上安装Linux。

就是这样,你有2台Linux系统运行集群。

警告:同时运行2台虚拟机在同一台计算机上,可以用于学习和原型设计,但是将失去在真实集群中的性能提升!

教程

步骤1:安装Java

注意:必须对所有计算机执行此步骤。

Spark需要Java来运行。我的建议使用OPEN JDK8。在终端中运行如下命令:

1

测试Java安装类型:

2

可以看到以下输出:

3

步骤2:安装Spark

下载Spark。在本教程中使用了2.2.0 pre-built。可以去Spark下载页面并从那里下载,如果无法访问图形桌面,并且必须使用命令行才能运行:

4

之后,主目录中有Spark压缩包。解压并移动到home文件夹(推荐但不是必需的),以防将其下载到「下载」文件夹中。

解压缩:

5

移动(可选):

6

最后设置所需的环境变量SPARK_HOME。

转到主目录,并使用文本编辑器打开「.bashrc」文件:

7

在文件末尾添加如下内容。当打开计算机或开始交互时,它将设置变量。将来该文件夹​​的名称可能会更改,并且与此处写入的文件夹名称不匹配,但过程是类似的。

8

保存文件。如果你正在使用nano做ctrl+x,键入y并按return下来完成它。

现在可以检查Spark安装。去Spark文件夹并执行pyspark:

9

如果一切正常安装,可以看到类似于此的输出:

[图片上传失败...(image-1e8f8f-1511414085008)]

到目前为止,你可能会在Spark初始化时看到此警告:

11

要解决这个问题,必须安装Hadoop。这是可选的,因为Spark可以运行,但是我猜使用Hadoop可能会有某些性能改进。

步骤3(可选):安装Hadoop

安装Hadoop的过程和Spark几乎是一样的,我会快速完成。这是一个可选步骤,并不需要运行集群。你也可以稍后决定。安装Hadoop的步骤是:

下载Hadoop。可以自由安装任何喜欢的版本,但版本应当高于2.7,因为它是Spark的要求。这和我们安装Spark一样。等效的命令行表达式。

在home目录中解压缩。

在.bashrc文件末尾添加以下内容:

12

通过启动pyspark测试Hadoop安装,确保警告没有再次出现。

步骤4:启动master服务器

在启动主服务器之前,必须检查ip以将其作为主机参数传递。键入以下命令:

13

可以看到类似的输出:

14

复制第二个inet中的值。这是<your_master_ip>。在这个例子中应该复制192.168.1.143。

现在,转到Spark安装目录并输入:

[图片上传失败...(image-4fc397-1511414085008)]

可以看到看到类似的输出:

16

现在,在启动master服务器的计算机中访问localhost:8080,如果无法访问Web浏览器,但是将其他设备连接到同一个专用网络(例如手机),通过<your_master_ip>:8080进行访问。在该URL中,可以访问master服务器Web用户界面。

master_web_ui

在这个网站,你可以看到在Spark Logo后面的一个URL参数类似的spark://<your_master_ip>:7077。这个URL非常重要,因为在将slaves连接到集群时,将需要这个URL,我将其命名<your_master_url>。

步骤5:连接slaves

现在你有一台master服务器运行,是时候启动几台slave服务器来完成这项工作。要启动slave服务器,必须使用从master服务器Web界面复制的URL,在Spark安装路径键入以下命令:

[图片上传失败...(image-ca004b-1511414085008)]

你应该看到一个非常类似于master的输出。

在要连接到集群的每台计算机上执行此操作。在本教程中,运行2个slaves。

之后,如果再次访问master服务器Web界面,在「Workers」中看到几行,均是启动的slave服务器。还有一些有用的信息,如worker的内存、状态、使用的核心和ip。

[图片上传失败...(image-e5cc5c-1511414085008)]

也可以点击Spark Web应用程序中的链接,然后转到工作页面和任务页面。由于没有任何运行的应用程序连接到集群,那么无法访问正在运行和已完成的任务页面。

到目前为止,我们已经有一个运行完整的Spark集群。

步骤6:连接Jupyter

充分利用Spark是与Jupyter这样的交互式工具集成的好主意。如果您已经安装并运行Jupyter,请跳过以下几行,我将介绍如何设置本地Jupyter服务器。

安装Jupyter

安装Jupyter最简单的方法是使用conda。如果你有Anaconda Python发行版,则计算机中已经安装了conda。如果没有,我强烈建议你试一试Anconda。如果不想安装完整的Anaconda Python(它包含大量库,需要大约350Mb),可以选择Miniconda,一款仅包含Python和conda的轻型版本。

如果使用命令行,只需使用curl下载安装文件(shell脚本)并执行'./'

一旦在计算机中安装了conda,我们将创建一个名为「jupyter」的conda虚拟环境,避免造成混乱:

19

现在有一个干净的虚拟环境来安装Jupyter。要激活此环境类型:

20

在环境激活后,在命令提示符的开始处可以看到(jupyter):

21

这意味着环境已被激活,并且以后所做的更改(安装库等)都将在此环境虚拟环境生效。

要安装Jupyter,请键入以下命令:

22

这个命令将安装Jupyter notebook及其所有的依赖项(IPython,Jupyter等),所以你不必担心设置这些东西。

现在是时候启动Jupyter notebook,并测试安装。键入:

23

如果Jupyter正确安装,那么可以在Web浏览器中访问localhost:8888/tree,并查看Jupyter文件目录。

24

安装 findspark

findspark是一个Python库,�可以自动导入和像其他Python库使用PySpark。还有其他选择可以集成(为Spark创建一个jupyter配置文件),但是最新的findspark是更快更简单的一个。

要安装findspark,请运行以下命令:

25

已经在jupyter虚拟环境中安装了findpark。

创建第一个Spark应用

要创建一个Spark应用并使用数据制作酷炫的东西,请在Jupyter单元格中运行以下脚本:

26

这个脚本只是初始化findspark,所以你可以导入PySpark作为一个库,并用你的master URL和应用名称(个人决定)创建一个Spark Context实例。

为了测试效果,你可以在Jupyter notebook中显示sc,并且会看到如下输出:

27

当运行长期的任务,可以点击链接并转到应用网站ui,这是非常有趣的。

还应连接到master服务器Web界面(localhost:8080或<your_master_ip>:8080),并在Running Applications部分中查看新内容,如下所示:

28

要关闭master服务器和slave服务器,请在Spark安装目录下运行以下命令:

29

要关闭jupyter虚拟环境,只需运行以下命令:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容