大象跳舞系列之Spark on HDInsight (1)
HDInsight Linux在中国区正式上线,对于很多Azure上的大数据用户来说,是一件喜大普奔的事情:)除了底层虚拟机是Linux,更加符合用户的使用习惯以外,还增加了很多令人兴奋的新特性,例如R Server,Spark以及Kafka的支持,版本的更新,完整的监控等等,本文主要从以下几个方面来介绍Spark在HDInsight Linux上的创建,配置和开发:
第一部分:
- 为什么使用Spark
- HDInsight Linux简介
- 创建配置Spark on HDInsight
第二部分:
- HDInsight的监控和管理
- Spark集群使用及应用开发部署
第三部分
- 利用Spark进行机器学习
- Spark集群上的第三方应用
Spark简介
一说到大数据分析,我们直接的反应就是Hadoop集群,MapReduce,HDFS等等以及相关的生态系统,然而我们现在谈大数据,并不仅仅是海量数据的处理,同时也包括机器学习,流式分析,数据挖掘,图形计算……这也正是Spark作为一个基于内存的分布式并行大数据处理框架越来越火的原因之一,相对于传统的MapReduce, Spark具有以下优点:
高性能:相对于传统的MapReduce,基于磁盘的运算方式来讲,Spark是一个基于内存的分布式运算框架,并且由于RDD和Cache的使用,数据的交换基于内存,大幅度提升了性能,在不同的场景下,比MapReduce快10倍到100倍不等。
易于使用: 支持Java,Python,R, Scala开发语言,并且目前Spark提供超过80多种抽象的数据转换操作,让你可以快速构建并行处理程序。
生态系统:Spark目前已经构建出了完善而成熟的生态系统,内建对于HDFS, RDBMS, S3, Apache Hive, Cassandra and MongoDB, Azure Storage等数据源的良好支持。
统一引擎:从下图你可以看到,Spark SQL,Spark Streaming, Spark MLLib以及Graphx均基于Spark核心引擎,也就意味着在一个平台可以统一支持多种不同的应用,相对于Hadoop的碎片化的组建生态,对开发人员来讲简单很多也高效很多
多调度器支持:虽然Spark底层的数据存储依然依赖于HDFS,然而对于资源调度来说,Spark可以使用YARN,也可以使用Mesos甚至是独立的调度器,部署非常灵活,尤其是在容器技术大行其道的时候,你可以在容器上跑Spark,用Mesos来统一管理
什么是HDInsight
HDInsight是微软推出的基于云端的Hadoop大数据处理平台,支持Storm,Spark,HBase,R Server, Kafka,Interactive Hive(LLAP)等多种不同的大数据框架,HDInsight Linux顾名思义就是底层的头结点和数据节点都是基于Linux的,目前是Ubuntu 16.04 LTS。本身来讲HDInsight是基于大数据三大巨头之一的Hortonworks公司的Hortonworks Data Platform (HDP) 来构建的,并针对企业级用户在云端使用的需求,增强了管理和安全多方面的功能。
如果你之前在自己的数据中心,在云端使用HDInsight可以为企业带来诸多好处,例如:
易于使用,部署方便:对于HDInsight的集群部署来说,你不需要了解复杂的底层细节,头结点,数据节点的配置,不同的组件等等,在Azure的管理界面,经过几个简单的点击,几分钟的时间,一个16节点的集群就创建成功了
按需付费:你不需要为了你的企业运行大数据,一次采购大量的硬件,并且业务闲时机器闲置,浪费资源,你只需要在需要计算的时候,创建集群,运算完毕就可以删除该集群,Azure只按照使用量来计费,由于计算和存储分离的特性,你的数据库会保存在Azure存储上,每个月只需要少量存储的钱
弹性扩展:你可以根据你的也无需要,在界面上扩展或者伸缩节点数目,满足你的业务的弹性要求
丰富的服务和版本选择:HDInsight提供各个不同版本的HBase,Hadoop,Spark,Storm,Hive,Pig,R, Kafka等等生态系统组件,而且自动安装配置,满足你不同的业务需求
开源100%兼容:HDInsight基于HDP构建,与开源Hadoop完全兼容,这就意味着你已有的大数据方案,可以快速的迁移到云端而不需要或者轻微的改动(例如数据的存储位置)就可以使用
数据持久化:从以下架构可以看出,HDInsight的HDFS基于Azure Storage实现,意味着你存储的每一分数据,都会默认存储完全相同的三份,对于企业来说,数据安全就是核心,Azure的存储高可用性,保证了在任何情况下的数据可靠性
创建HDInsight Linux for Spark
从下图可以看到,创建HDInsight的简单步骤,你可以先创建一个存储账号,用于存储Spark要处理的数据,也可以在创建集群时一起创建,然后创建集群,完成后使用Spark SQL进行数据处理,在部署方式上,你可以使用ARM模板部署,Powershell部署或者Linux/Mac下使用Azure CLI部署,本例中使用Azure管理界面进行部署。
- 打开Azure新portal,https://portal.azure.cn, 选择新建,Intelligence + Analytics,就可以看到HDInsight图标,单击进行创建:
- 给你的cluster起一个名字,在本例中叫hdispark,配置集群,在集群类型中,可以看到我们可以选择Hadoop,HBase,Storm,Spark,R server等等,我们选择Spark,操作系统目前类型只支持Linux,版本选择Spark2.0,其对应的HDP是3.5版本:
- 在应用程序选项部分,你可以看到HDInsight Spark自带了一些第三方的,基于Spark的工具集和库,你可以根据需要选择使用,我们暂时忽略掉该部分,在下一章中详细介绍:
- 在凭据部分,第一个用户名和密码是你后面需要访问Ambari仪表板需要的用户名密码,第二个用户名密码是你使用SSH进行远程登录的用户名密码,按照你的习惯进行设置,但这些用户名和密码必须记住,旺季后无法恢复,后面会使用到:
- 数据源的部分,需要配置你的数据存储在什么地方,目前Data Lake中国暂时不支持,所以我们只使用Azure存储,配置你的数据处理存储在哪个账号里,如果是第一次创建,可以选择创建新建存储的账号,指定名称即可,或者你也可以使用你已经创建的存储账号:
注:如果你想删除Spark计算集群后,依然保存Hive和Oozie的数据,你需要提前创建一个SQL数据库用来保存数据:
- 在Spark集群中,默认需要两个头结点,你可以指定多个工作节点,在群集大小中,需要选择合适的节点大小,和数据节点的个数,这部分的选择关系到你有多大的数据量,需要多长时间完成,并且关系到成本,需要提前做规划,选择完成后,选择确定:
- 在高级特性配置中,你可以选择配置vNet,即将Spark集群部署到你的虚拟网络里面,这样虚拟网络的虚拟机可以直接访问集群;也可以自定义脚本,在集群部署完
成后再额外部署新的包或者执行安装后的操作;点击确定开始创建:
- 创建完成后,你就可以看到Spark集群的仪表板界面,就可以看到仪表板界面,包括集群仪表板,Ambari ,SSH登录信息,节点信息,在本例中一共有4个节点,2个头节点,2个工作节点:
在下一节中介绍如何对Spark集群进行监控,管理以及Spark上的应用开发和部署。
posted on 2017-03-15 11:09 StevenLian 阅读(572) 评论(0) 编辑 收藏 举报