Spark 20:将支持在手机设备上运行Spark
据估计,到2017年底,90%的CPU cycles 将会致力于移动硬件,移动计算正在迅速上升到主导地位。Spark为此重新设计了Spark体系结构,允许Spark在移动设备上运行Spark。
Spark为现代化数据中心和大数据应用进行设计和优化,但是它目前不适合移动计算。在过去的几个月中,Spark社区正在调研第一个可以在移动设备上运行架构的可行性,这篇文章将会和大家分享Spark社区的研究结果。

这个结构设计需要满足以下条件:
该系统必须支持
(1)、支持在Android和iOS上运行Spark;
(2)、便利SoLoMo (social, local, mobile) 应用程序的发展;
(3)、保持源代码的向后兼容性
(4)、在一个Spark集群上兼容不同的手机设备。
最好支持
(1)、支持在Windows phones上运行Spark;
(2)、通过J2ME支持其他功能手机。
编译和运行
目前Android Runtime (ART) 目前支持用Scala编写的应用程序,可以看这篇文章Scala IDE article on Android development。
然而,iOS内置并不支持JVM,但是幸运的是,经过多个社区的共同努力,支持运行Java程序:
(1)、使用RoboVM,一个预先编译器(ahead-of-time (AOT) compiler)和库,使得我们可以使用Java编写iOS应用程序l;
(2)、使用Scala和LLVM来编译Spark 的Scala代码,最终会变成LLVM字节码。鉴于Apple公司对LLVM项目的强烈支持,我们相信这个可以达到很高的性能;
(3)、而且Swift语言和Scala语言很类似,所以我们绝对可以将Scala语言编写的项目转换成Swift语言,然后使用XCode来编译项目;
(4)、使用 Scala.js将Spark代码编译成JavaScript(可以参照这里http://www.scala-js.org/),然后使得我们可以在支持JavaScript引擎的软件(比如Safari)上运行Spark。
以上四个选项,应该首选第四个,因为他不仅支持iOS系统,而且还会支持其他的系统。所以我们可以在iOS和Android系统上使用JavaScript引擎来运行Spark程序,在服务器上,Spark可以在Node.js上运行。
性能优化
JavaScript引擎是最具有创造性的领域之一,所以我们完全有理由相信,JavaScript引擎可以迅速地提高自己的表现性能。然而,移动 设备上的JavaScript引擎看起来比台式机上的要落后,比如,移动设备上的JavaScript引擎不支持SIMD。我们可以将Spark对 SIMD依赖的部分,我们可以进行选择性的重写,然后产生LLVM字节码。
网络和线协议
Spark的网络传输是基于Netty的,而这个又依赖于 java.nio或者Linux epoll。虽然Android ART 内置就支持java.nio,但是我们需要重写Netty,使得我们可以在iOS上使用kqueue。除此之外,目前社区还不清楚是否低级别的网络原语 (比如zero-copy)是否可以在JavaScript中使用,我们需要更密切地与苹果和谷歌合作,以改善JavaScript对移动网络的更好支 持。
一个可行的选择是使用grpc(它是Google开发的开源高性能RPC库),grpc内置就支持在所有通用平台上(Java, Objective C等等)使用HTTP/2。
在调试方面,JSON应该是超过任何现有的二进制格式的首选线串行协议。
真正的本地调度和DAGScheduler
为了更好地支持Spark的 local,social和mobile特性,社区将RDD本地性域用GPS坐标代替。本地调度可重构来真正的支持本地性,这是在服务器上永远与不可能实现的。
为了保证源码的兼容性,社区保留了旧的接口,并引入了新的本地性接口:
02 @deprecate(“2.0”, “use getPreferredTrueLocations”)03 defgetPreferredLocations(p:Partition):Seq[String]06 * Returns the preferred locations for executing task on partition07 * `p`. Concrete implementations of RDD can use this to enable10 defgetPreferredTrueLocations(p:Partition):Seq[LatLong]为移动平台扩展TaskContext
TaskContext为Spark tasks提供了上下文信息(比如 job IDs, attempt IDs),这些在服务器上运行的Job就已经足够了。但是在移动设备上,还有其他的信息,比如GPS位置,ongoing calls等,这些上下文信息对优化taks的处理很有用,而且不会影响到 smartphone/tablet用户的用户体验。比如来了一个电话,一个新的task可能会被暂停,直到这个电话结束,这样用户的通话质量就不会受到 影响。
iPhone和Android的基本引擎
社区已经使用iPhone创建了几个proof-of-concepts,来更好地了解手机平台的复杂性。下面就是原型的截图。 本文开头的截图显示了在iPhone上运行 Spark Streaming NetworkWordCount 实例。它使用sockets来从运行在Amazon EC2上的服务器上接收数据。同样地,我们也在Android上运行这个实例,下面就是在Android模拟器上运行的截图:

本文翻译自:https://databricks.com/blog/2015/04/01/spark- 2-rearchitecting-spark-for-mobile.html.最后一节(Prototyping Machine Learning Application)本文未翻译,感兴趣的同学可以到里面去看看。
转载自过往记忆(http://www.iteblog.com/) 本文链接地址: 《Spark 2.0:将支持在手机设备上运行Spark》(http://www.iteblog.com/archives/1316)
手机 Email 叕被改造了,这次挺靠谱 - Spark iOS
现在的你,是怎样使用邮箱的呢?是杂乱无章,每次找起来都特别费劲?还是写邮件的时候为了插入一个附件而百般折腾,整个过程也很不流畅。虽然曾经有诸多烦恼,不过别担心,Spark 会让你重新爱上发邮件。
智能邮箱、附件管理、集成日历,再加上流畅地邮件编辑,说 Spark 重新定义了邮箱也不为过。并且它来自著名的开发商 Readdle,诸如 Calendars 5、PDF Expert、Scanner Pro 这些老牌的效率 app 都出自其手。
Spark 有类似 Inbox 的邮件智能归类功能,能从繁杂的内容中将服务邮件(Notifications)、订阅邮件(Newsletters)、标记和普通邮件区分出来,更方便地查看与批量处理,并只推送重要邮件的通知。顶部按钮可快速在两种邮箱界面切换。

从 Mailbox 开始,手势滑动似乎已经是移动端邮箱的标配,Spark 在这之上又进了一步。你可以自由定义四种手势(左/右长短滑动)以不同的操作(已读、回复、转发及归档等),在智能邮箱的分类列表里,还可以进行批量操作。
在阅读邮件的时候,左右滑动即可切换到下一封邮件,免去了跳转回邮箱的繁琐步骤,在大量的邮件处理中非常方便。

越来越多的时间,我们需要在手机上回复邮件。Spark 第一次让我感觉到这可以是一个流畅的体验:书写的过程中如需查阅其他邮件,不用保存草稿,仅需将窗口缩小至底部;完整的签名系统,Spark 会识别你曾经使用过的签名,滑动可在多个签名中自由切换;不小心发错了邮件有时候可不是小事情,Spark 允许你在 2 秒内撤回邮件,晃一晃手机也可以撤回操作。

还有更多的时间,我们并没有时间去处理邮件。Spark 提供了快速回复,对你的同事点个赞或者回一句谢谢,当然这个功能也是充分地考虑了 Apple Watch 的使用场景。
如果你已经添加了诸如 Dropbox、Google Drive 等第三方服务,除了快速地从不同的服务中添加附件以外,Spark 还可以快速地将邮件以 PDF 的形式保存发送,方便在不同的场合查阅与分享。

也许归功于 Calendars 5 的经验,Spark 还深度集成了日历,并且会智能识别邮件中的日程信息添加日程。你可以点击手动添加、编辑事件,这一切都与原生日历无缝衔接。

如果说功能可以被模仿或改进,一个 app 使用中的流畅感则非常难得。Spark 正好具备一点,得益于丰富细节设计与深度自定义。侧边栏能添加具有丰富功能的卡片(并且更多的卡片将会下后续版本添加),在邮件管理与查看上带来了极大的便利。
更多的流畅感还在于 Spark 引入的小部件(Widgets)功能,你可以将日常最常用的卡片放在顶部状态栏或者右下角的弧形菜单,这是我在使用 Spark 中觉得最方便的地方。

Spark 的深度自定义让那些喜欢打磨自己工具的用户感到十分满足,这一点你会在设置中看到更多地展现。Spark 支持国内外大部分邮箱服务,包括 Gmail、Yahoo、Outlook 以及 IMAP 协议。在众多邮箱应用中,Spark 也是为数不多在多账户管理上将一致性做到用户几乎不用去操心的那一个。

对于 Spark 我赞不绝口,但更多的体验与细节还待你在使用中去发现与感受。我相信在这个信息快速流动的时代,邮件仍然是一种不可或缺的媒介。
Spark 适用于 iOS 8.0+ 的 iPhone,已适配 Apple Watch,大小 80.2 MB,完全免费。
相关问答
大疆晓spark下载什么app操控?
Spark可使用移动设备与DJIGO4App控制飞行器。步骤如下:开启智能飞行电池开启移动设备的Wi-Fi功能,在Wi-Fi列表中选择Spark_XXX并输入链接密码开启DJIGO...
大疆spark怎么连接手机?
大疆Spark无人机可以通过手机进行控制和操作,以下是连接大疆Spark和手机的步骤:1.下载并安装大疆Go4应用程序。该应用程序可在AppStore或GooglePlay商店...
大疆晓spark用手机操作怎样设置高低-ZOL问答
大疆晓Spark无人机使用手机操作时,可以通过大疆官方的飞控应用程序进行设置。首先,在手机上下载并安装大疆飞控应用程序,然后将无人机与手机连接。在应用程序...
spark40音箱如何下载app?
要下载spark40音箱的app,首先需要打开手机的应用商店,然后在搜索框中输入“spark40音箱”进行搜索。接下来找到对应的官方app,点击“下载”并等待下载完成。...
大疆无人机可以直接用手机遥控吗-ZOL问答
7条回答:【推荐答案】以Spark为例,我们可以通过Wi-Fi将手机与Spark连接,并在手机上打开相应的应用程序。在应用程序中,我们可以通过点击屏幕左侧的【一键起飞】...
【sparkllngshampoo中文意思】作业帮
[回答]sparklingshampoo翻译:闪闪发光的洗发水第一时间为你解答,如果本题还有疑问,请继续追问.Goodluck!
高清海报设计制作-手机设计海报用什么软件?-ZOL问答
在设计手机海报时,常用的软件有AdobePhotoshop、AdobeIllustrator和Sketch等。这些软件都具有强大的编辑和设计功能,可以满足不同需求的海报制作。对于初学...
海报在线设计制作软件-可以做海报的手机软件-ZOL问答
在线设计制作软件可以帮助用户快速创建高质量的海报,而不需要专业的设计背景。这些软件通常提供各种模板和工具,让用户根据自己的需求进行编辑和定制。使用在...
制作海报的软件app有哪些?可以做海报的手机软件-ZOL问答
可以做海报的手机软件手机清风讨论回答(7)在制作海报方面,有许多软件和应用程序可以选择。以下是一些常用的工具:1.AdobePhotoshop:这是业界标准的图像...
在线制作海报的软件-手机海报制作app哪个更好-ZOL问答
在线制作海报的软件有很多选择,以下是一些常用且性价比较高的手机海报制作app:1.Canva(https://www.canva.com/):Canva是一款功能强大、界面友好的在线设计平...