Spark大数据平台都能搞定,微软AKS这个容器确实很能“装”
(本文阅读时间:10分钟)
作为一名开发人员每天要和海量大数据死磕
不想又秃又老
只想“又秃又强”
急需一个“容器”可以“装”下这些大数据
这样的容器需要很能“装”:各种传统应用或云原生应用,都可以放在其中运行。借此不仅可以实现更高的安全性和可移植性,还能通过持续集成和持续部署等方式大幅提高交付速度,并能更充分地利用基础设施以节约成本,可谓是好处多多。
不过你有没有想过,将Apache Spark装入AKS中运行,那将是怎样的体验??是否也可以像应用程序一样获得各种好处?
在大数据处理与分析领域,从技术成熟度、稳定度及社区活度程度来看,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客户端。
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:
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大热门出海行业精选解决方案
立即抢占额度
尊享海外云五重好礼
↓ 扫码 ↓
↓ 打CALL↓

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

Surface 新品预购,惊喜好礼相随!
1024 | 当代程序员进阶实录
巨头微软的“零售力”
最新活动

关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- 1 习近平同俄罗斯总统普京通电话 7969110
- 2 联合国安理会通过美国涉乌决议 7969535
- 3 男子发奇怪消息 群友秒报警救回一命 7859238
- 4 扎实推进乡村全面振兴 7783033
- 5 台湾男星李威涉嫌伤害致死 7635303
- 6 中概股暴跌 阿里跌超10% 7501922
- 7 北大教授称房地产永远是朝阳产业 7494972
- 8 央视镜头下的吴倩 7357244
- 9 52岁女子跳“断头舞”走红 7208231
- 10 纳斯达克中国金龙指数跌幅扩大至6% 7165342