Spark大数据平台都能搞定,微软AKS这个容器确实很能“装”

百家 作者:微软科技 2019-10-25 10:43:29

(本文阅读时间:10分钟)

作为一名开发人员每天要和海量大数据死磕

不想又秃又老

只想“又秃又强”

急需一个“容器”可以“装”下这些大数据

这样的容器需要很能“装”:各种传统应用或云原生应用,都可以放在其中运行。借此不仅可以实现更高的安全性和可移植性,还能通过持续集成和持续部署等方式大幅提高交付速度,并能更充分地利用基础设施以节约成本,可谓是好处多多。

不过你有没有想过,将Apache Spark装入AKS中运行,那将是怎样的体验??是否也可以像应用程序一样获得各种好处?



微软AKS+ Spark,强强联合


在大数据处理与分析领域,从技术成熟度、稳定度及社区活度程度来看,Apache Spark是目前最流行的计算框架,在实际生产中处于重要地位并获得了广泛使用。在计算存储不分离的架构下,集群每个节点也会作为Data node,即采用HDFS分布式文件系统来进行数据存储。但是随着数据量的爆炸式增长以及数据湖概念的日益普及,计算与存储分离也逐渐成为了刚需。为此Microsoft Azure也推出了满足以上需求的托管式Hadoop服务:Azure HDInsight以及Databricks。

HDInsight是HDP版本Hadoop在Azure上的托管服务,Databricks是Spark创始人完全基于Apache Spark并针对Microsoft Azure云服务平台进行优化的Spark托管服务。

与此同时,随着Kubernetes技术的日渐成熟和社区生态的蓬勃发展,越来越多的客户都将自己很多的应用程序迁移到容器服务上,以便能够设计出更加快速、便捷、更高可靠的应用架构。为了提高Kubernetes集群的部署速度并降低运维成本,Microsoft Azure推出了托管的Kubernetes服务:Azure Kubernetes Service(AKS)。AKS带来了诸多优点,如高可用的控制平面、Calico等网络插件集成、Azure服务无缝对接、与开源版本Kubernetes同步匹配、平滑迁移及无感知升级等。

2.3.0版本以上的Apache Spark已经提供了对Kubernetes平台的支持与集成,借此我们能够利用原生的Kubernetes来进行集群计算资源的分配并管理Spark计算作业。在该模式下,Spark Driver和Executor都通过Kubernetes Pods来运行,并且可通过指定Node Selector将计算作业运行于特定节点之上(例如带有GPU的实例类型等)。

准备好Azure帐户,一起照着操作试试看吧。

另外请注意:下列操作需要正确安装Azure CLI、kubectl等命令行工具,具体操作过程在在AKS Vnet的一台内网服务器的Root目录下进行安装,并将该服务器作为Spark集群的Gateway客户端。


微软AKS+ Spark,操作指南


第一步:创建AKS集群

1.  运行下列命令创建资源组:

2.  运行下列命令创建一个3节点AKS集群:

整个创建过程大约需要20分钟。

3.  运行下列命令获取AKS凭据:


第二步:在AKS集群中创建Spark服务帐户并绑定权限

1.  创建Spark服务账号:

2.  绑定权限:


第三步:下载Spark二进制文件

随后请访问Spark官网并选择合适的版本来下载(版本号不能低于2.3.0),本例中使用2.4.4版本。


第四步:确认Spark Jar和Kubernetes的版本兼容性

Spark采用了fabric8.io的Kubernetes & OpenShift Java Client客户端连接API Server来进行资源调度和分配,需要先确认Spark 2.4.4自带的kubernetes-client-*.jar版本与AKS集群版本是否兼容。Spark 2.4.4自带的Kubernetes-client版本为4.1.2 (kubernetes-client-4.1.2.jar),AKS集群版本为1.14.7,存在版本不兼容问题,需要更高版本jar包。具体的版本对应关系如下表所示:

本文直接使用能够与Kubernetes 1.14.7版本兼容的kubernetes-client 4.6.0.jar。

第五步:创建ACR(Azure容器注册表)并与AKS集成

1.  创建ACR:

请记录ACR的Resource ID,例如本例为:/subscriptions/53a326cc-f961-4540-8701-2bfd1003242b/resourceGroups/akssparkrg/providers/Microsoft.ContainerRegistry/registries/akssparkacr0001

2.  将ACR与AKS集成:

3.  登录ACR:


第六步:构建Spark镜像

1.  构建并推送镜像至ACR:

2.  通过Azure管理门户查看Docker镜像:

此外也可运行docker image list看到这里自动构建了Spark原生、Spark-R以及Pyspark的容器镜像:


第七步:运行作业SparkPi

Spark作业有两种方式来运行:Cluster模式和Client模式。简单来说,两种模式的主要区别在于Spark Job Driver是在本地节点还是集群节点上。在实际生产过程中,通常会将spark-submit的作业提交方式服务化,通过外部服务调用将作业提交到集群上运行,最典型的就是Apache Livy。本文采取通过命令行spark-submit将SparkPi作业提交到集群上计算的方式来进行。

1.  创建存储帐户并将spark-examples_2.11-2.4.4.jar上传至Azure Blob:

2.  运行SparkPi,为此需要通过spark-submit提交SparkPi作业:

Spark-submit的具体参数可参考Spark on Kubernetes官网,不过官方文档只有默认参数配置。如果需要看所有参数的可选值,可以参阅GitHub上的Spark源代码。

3.  查看运行结果。我们需要查看Spark Job Driver和对应的Executor Pods:

运行作业时,还可以访问Spark UI。Kubectl port-forward命令提供了对Spark Job UI的访问权限:

此外可以获取作业结果和日志:

使用kubectl logs来获取Spark作业的Log:

在日志中可以看到Spark作业的结果,即Pi的值:


第八步:使用Spark Shell进行交互式分析Azure Blob数据

在很多需要调试的场景中,都会通过命令行的交互式界面来进行调试。对于Spark来说,有Spark Shell、Spark-R、Pyspark三种命令行,分别针对Scala、R以及Python。下面我们介绍如何通过Spark Shell来分析Azure Blob中存储的数据。

1.  Docker Image新打包v2版本。

Spark通过wasbs://{container-name}@{storage-account-name}.blob.core.windows.net访问Azure Blob,因此我们需要在Spark Jar中加载azure-storage.jar和hadoop-azure.jar,这些Jar需要打在Docker镜像里,然后上传至ACR:

然后重复第六步的操作,指定版本号为v2,打包好后推送到ACR。具体的镜像地址为:akssparkacr0001.azurecr.io/spark:v2

2.  使用Spark Shell交互式分析Azure Blob中的数据。

首先运行Spark Shell:

进入Spark Shell Scala命令行交互界面:

Scala验证:

具体的分析的文件为示例csv文件名为diamonds.csv,并已提前上传到Azure Blob Container名为Sparkshell的目录下:

至此,操作完毕。另外请注意:跨Azure Blob Container的文件读写也是可以支持的。

微软AKS+Spark,未来可期伴随着 Kubernetes 技术的日渐成熟和社区生态的蓬勃发展, 越来越多的客户都将自己很多的应用程序迁移到容器服务上, 以便能够设计出更加快速、便捷、更高可靠的应用架构. 微软AKS和Apache Spark 强强结合,使存储数据在Azure Blob中进行分析,既可以保证数据高可靠性,也能实现计算与存储的分离从而提高灵活性,未来可期!


不耽误了,下面就放出《企业出海成功案例》白皮书下载入口,同时兑现开头“买即返15%海外版Microsoft Azure”福利承诺!

 扫描下方二维码进入“微软企业出海节”活动页,一键打包领取4大热门出海行业海外部署架构,并享受“买即返15%海外版Microsoft Azure使用额度”!

进去后别忘了免费领取200美金海外版Microsoft Azure&微软广告(原名:微软必应)海外营销礼包~

投资作 

速度作

省时、省心、省成本地快速拓展海外市场


微软智能云 Microsoft Azure(海外版)

2019第四季度

特别推出

买即返15%海外版Microsoft Azure使用额度 

福利优惠


并基于多年全球生态客户经验推出

高性价比、适配行业特性的海外IT部署架构

4大热门出海行业精选解决方案


立即抢占额度

尊享海外云五重好礼

扫描下方二维码即刻抢



 如果页面内4个行业的打包方案都不是你的菜,或者你喜欢直接与客户经理——不要倔强,两大快捷通道:

↓ 扫码  

↓ 打CALL↓ 


 如果你“两耳不闻窗外事,一心只下白皮书”,扫描下方二维码,切忌被页面中各种实用方案及福利吸引,一口气拉到页面尾部,即获免费下载入口!



2019 Microsoft Ignite The Tour即将到来!微软将把这场汇聚世界前沿科技的开发者盛宴带到你的身边,本着“求知、求同、求索”的原则,为广大开发者IT专业人士以及数据分析师提供为期两天的专属免费深度交流培训。


本次活动将在2019年12月10-11日落地北京国家会议中心,并陆续在2020年1月13-14日深圳会展中心,2020年3月18-19日上海世博中心举办,开启难忘的 Ignite 中国之旅。除了一如既往的专业技术交流指导 —— 350+专家现场零距离互动100+深度技术研讨会及培训之外,更是首次实现了免费尊享,技术专家和开发者们将全程免费参与,符合要求的参会者,更可获赠超值技术认证大礼包


Ignite the Tour·北京站 
已开启报名
即刻扫码注册,尊享超值礼遇!



Ignite the Tour·深圳站上海站 
正在火热筹备中
即刻扫码预约,资讯捷足先登!

  

推荐阅读

Surface 新品预购,惊喜好礼相随!

1024 | 当代程序员进阶实录

巨头微软的“零售力”

最新活动

玩转微软市场资讯?用这个就够了!

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接