Azure HDInsight 和 Spark 大数据分析(一)

What is HDInsight?

Microsoft Azure HDInsight 是基于 Hortonoworks Data Platform (HDP) 的 Hadoop 集群,包括Storm, HBase, Pig, Hive, Sqoop, Oozie, Ambari等(具体的组件请参看最后的附录)。Azure HDInsight 支持 Windows的集群部署,也支持 Linux 集群部署。Hortonworks 是我目前所知唯一支持在 Windows 上部署的 Hadoop Cluster。

以下是 HDInsight 在两个平台上部署的比较:


Category


Hadoop on Linux


Hadoop on Windows


Cluster OS


Ubuntu 12.04 Long Term Support (LTS)


Windows Server 2012 R2


Cluster Type


Hadoop


Hadoop, HBase, Storm


Deployment


Azure Management Portal, Azure CLI, Azure PowerShell


Azure Management Portal, Azure CLI, Azure PowerShell, HDInsight .NET SDK


Cluster UI


Ambari


Cluster Dashboard


Remote Access


Secure Shell (SSH)


Remote Desktop Protocol (RDP)

What is Spark?

Spark 是基于内存计算的大数据并行计算框架,快如闪电的大数据分析工具。Spark 于2009年诞生于加州大学伯克利分校 AMP Lab,目前已是 Apache 软件基金旗下的顶级开源项目。Spark支持Python、Java和Scala编程语言。您无需是专家级的编程者即可从 Spark 中受益。

Spark本身用Scala语言编写,运行于Java虚拟机(JVM)。只要在安装了Java 6以上版本的便携式计算机或者集群。如果您想使用Python API需要安装Python解释器(2.6或者更高版本),请注意Spark暂不支持Python 3。

Which version of Spark can I install?

In this topic, we use a Script Action custom script to install Spark on an HDInsight cluster. This script can install Spark 1.2.0 or Spark 1.0.2 depending on the version of the HDInsight cluster you provision.

  • If you use the script while provisioning an HDInsight 3.2 cluster, it installs Spark 1.2.0.
  • If you use the script while provisioning an HDInsight 3.1 cluster, it installs Spark 1.0.2.

You can modify this script or create your own script to install other versions of Spark.

Using the Spark shell to run interactive queries

Perform the following steps to run Spark queries from an interactive Spark shell. In this section, we run a Spark query on a sample data file (/example/data/gutenberg/davinci.txt) that is available on HDInsight clusters by default.

  1. From the Azure portal, enable Remote Desktop for the cluster you created with Spark installed, and then remote into the cluster. For instructions, see Connect to HDInsight clusters using RDP.
  2. In the Remote Desktop Protocol (RDP) session, from the desktop, open the Hadoop command line (from a desktop shortcut), and navigate to the location where Spark is installed; for example, C:\apps\dist\spark-1.2.0.
  3. Run the following command to start the Spark shell:
     .\bin\spark-shell --master yarn
    

    After the command finishes running, you should get a Scala prompt:

     scala>
    
  4. On the Scala prompt, enter the Spark query shown below. This query counts the occurrence of each word in the davinci.txt file that is available at the /example/data/gutenberg/ location on the Azure Blob storage associated with the cluster.
    val file = sc.textFile("/example/data/gutenberg/davinci.txt")
    
    val counts = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
    
    counts.toArray().foreach(println)
    
  5. The output should resemble the following:

  6. Enter :q to exit the Scala prompt.
    :q
    

    Spark核心概念

    现在您已经在shell中运行了第一个Spark代码,是时候开始学习更深入的编程了。

    每一个Spark应用程序都包含在集群上运行各种并行操作的驱动程序,驱动程序包含应用程序的主函数和定义在集群上的分布式数据集。在前面的示例中,驱动程序是Spark shell本身,您只需输入您想要执行的操作即可。

    驱动程序通过 SparkContext 对象访问Spark计算集群。在shell中,SparkContext被自动创建为名称是sc的变量,在示例1-1中我们输入sc,则shell显示其类型。

Example 1-1. Examining the sc variable

>>> sc

<pyspark.context.SparkContext object at 0x1025b8f90>

在创建了SparkContext对象之后,您就可创建RDD。在示例2-1和示例2-2中,我们调用 sc.textFile() 创建RDD,以变量lines记录读入的文本文件内容。

若要运行这些操作,驱动程序通常管理者多个拥有 executor的工作节点。比如,我们在集群中执行count()操作,不同的机器可能计算lines变量不同的部分。我们只在本地运行Spark shell,则它被执行在单机中,如果我们将shell连接至集群它也可并行的分析数据。示例1-1展示如何将Spark执行在集群之上。

图1-1. Components for distributed execution in Spark

Spark 的 API 很大程度上依靠在驱动程序里传递函数到集群上运行。比如,我们扩展上面的README示例,筛选文本中包含的特定关键词"Python",代码如示例1-2(Python),示例1-3(Scala)。

示例1-2 Python filtering example

>>> lines = sc.textFile("README.md")

>>> pythonLines = lines.filter(lambda line: "Python" in line)

>>> pythonLines.first() u‘## Interactive Python Shell‘

Example 1-3. Scala filtering example

scala> val lines = sc.textFile("README.md") // Create an RDD called lines lines: spark.RDD[String] = MappedRDD[...]

scala> val pythonLines = lines.filter(line => line.contains("Python")) pythonLines: spark.RDD[String] = FilteredRDD[...]

scala> pythonLines.first() res0: String = ## Interactive Python Shell


Spark传递函数

如果您不熟悉示例1-2和1-3中的 lambda表达式 或者 => 语法,那么在此说明其实它是在Python和Scala中的定义内联函数的简短写法。如果您在Spark中使用这些语言,您可定义函数然后将其名称传递给Spark。比如,在Python语言中:

def hasPython(line):

return "Python" in line

pythonLines = lines.filter(hasPython)

Spark传递函数也支持Java语言,但在此情况下传递函数被定义为类,实现调用函数的接口。比如:

JavaRDD<String> pythonLines = lines.filter(

new Function<String, Boolean>() {

Boolean call(String line) { return line.contains("Python"); }

}

);

Java 8 中介绍了调用了lambda的的简短写法,与Python和Scala很类似。

JavaRDD<String> pythonLines = lines.filter(line -> line.contains("Python"));

We discuss passing functions further in "Passing Functions to Spark" on page 30.

我们在30页的"Spark传递函数"中深入讨论传递函数。

Spark API包含许多魅力无穷的基于函数的操作可基于集群并行计算,比如筛选(filter)操作,我们在后面的文章详细介绍。Spark自动将您的函数传递给执行(executor)节点。因此,您可在单独的驱动程序中编写代码,它会自动的在多个节点中运行。

附录

What are the Hadoop components?

In addition to the previous overall configurations, the following individual components are also included on HDInsight clusters.

  • Ambari: Cluster provisioning, management, and monitoring.
  • Avro (Microsoft .NET Library for Avro): Data serialization for the Microsoft .NET environment.
  • Hive & HCatalog: Structured Query Language (SQL)-like querying, and a table and storage management layer.
  • Mahout: Machine learning.
  • MapReduce and YARN: Distributed processing and resource management.
  • Oozie: Workflow management.
  • Phoenix: Relational database layer over HBase.
  • Pig: Simpler scripting for MapReduce transformations.
  • Sqoop: Data import and export.
  • Tez: Allows data-intensive processes to run efficiently at scale.
  • ZooKeeper: Coordination of processes in distributed systems.
时间: 2024-10-01 06:34:55

Azure HDInsight 和 Spark 大数据分析(一)的相关文章

Azure HDInsight 和 Spark 大数据实战(二)

HDInsight cluster on Linux 登录 Azure portal (https://manage.windowsazure.com ) 点击左下角的 NEW 按钮,然后点击 DATA SERVICES 按钮,点击 HDINSIGHT,选择 HADOOP ON LINUX,如下图所示. 输入集群名称,选择集群大小和账号,设定集群的密码和存储账号,下表是各个参数的含义和配置说明. Name Value Cluster Name Name of the cluster. Clust

《Spark大数据分析:核心概念、技术及实践》大数据技术一览

本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1节,作者穆罕默德·古勒(Mohammed Guller)更多章节内容可以访问云栖社区"华章计算机"公众号查看. 大数据技术一览 我们正处在大数据时代.数据不仅是任何组织的命脉,而且在指数级增长.今天所产生的数据比过去几年所产生的数据大好几个数量级.挑战在于如何从数据中获取商业价值.这就是大数据相关技术想要解决的问题.因此,大数据已成为过去几年最热门的技术趋势之一.一些非常活跃的开源项目都

Spark大数据分析框架的核心部件

Spark大数据分析框架的核心部件 Spark大数据分析框架的核心部件包含RDD内存数据结构.Streaming流计算框架.GraphX图计算与网状数据挖掘.MLlib机器学习支持框架.Spark SQL数据检索语言.Tachyon文件系统.SparkR计算引擎等主要部件.这里做一个简单的介绍. 一.RDD内存数据结构 大数据分析系统一般包括数据获取.数据清洗.数据处理.数据分析.报表输出等子系统.Spark为了方便数据处理.提升性能,专门引入了RDD数据内存结构,这一点与R的机制非常类似.用户

容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析

摘要: 容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析 (二):Kubernetes如何助力Spark大数据分析 概述 本文为大家介绍一种容器化的数据服务Spark + OSS on ACK,允许Spark分布式计算节点对阿里云OSS对象存储的直接访问. 容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析 (二):Kubernetes如何助力Spark大数据分析 概述 本文为大家介绍一种容器化的数据服务Spark + OSS on

Python3实战Spark大数据分析及调度 (网盘分享)

Python3实战Spark大数据分析及调度 搜索QQ号直接加群获取其它学习资料:517432778 部分课程截图: 链接:https://pan.baidu.com/s/1YMmswv47fOUlt-z2A6691A 提取码:z5xv PS:免费分享,若点击链接无法获取到资料,若如若链接失效请加群 其它资源在群里,私聊管理员即可免费领取:群——517432778,点击加群,或扫描二维码   第1章 课程介绍 课程介绍 1-1 PySpark导学试看 1-2 OOTB环境演示 第2章 实战环境搭

python3实战Spark大数据分析及调度

python3实战Spark大数据分析及调度  分享 链接:https://pan.baidu.com/s/1YMmswv47fOUlt-z2A6691A提取码:z5xv 免费分享,如若链接失效请加群,群号517432778,点击加群,或扫描二维码 原文地址:https://www.cnblogs.com/qq865581497/p/11565577.html

Cassandra联手Spark 大数据分析将迎来哪些改变?

2014Spark峰会在美国旧金山举行,与会数据库平台供应商DataStax宣布,与Spark供应商Databricks合作,在它的旗舰产 品 DataStax Enterprise 4.5 (DSE)中,将Cassandra NoSQL数据库与Apache Spark开源引擎相结合,为用户提供基于内存处理的实时分析. Databricks是一家由Apache Spark创始人成立的公司.谈到这次合作,DataStax副总裁John Glendenning表示:“将Spark与Cassandra

Python Spark大数据分析实战教程下载|pyspark教程

分享网盘下载地址--https://pan.baidu.com/s/1c1OjpSW 密码: a5ks Python是数据分析最常用的语言之一,而Apache Spark是一个开源的强大的分布式查询和处理引擎. 本课程以案例驱动的方式讲解如何基于Python语言进行Spark Application编程,完成数据获取.处理.数据分析及可视化方面常用的数据分析方法与技巧,通过这些实际案例让学员轻松掌握使用PySpark分析来自不同领域的数据.

基于Python Spark的大数据分析_pyspark实战项目课程

基于Python Spark的大数据分析(第一期) 课程介绍地址:http://www.xuetuwuyou.com/course/173 课程出自学途无忧网:http://www.xuetuwuyou.com 讲师:轩宇老师 1.开课时间:小班化教学授课,第一期开课时间为5月20号(满30人开班,先报先学!): 2.学习方式:在线直播,共8次课,每次2小时,每周2次(周三.六,晚上20:30 - 22:30),提供在线视频,课后反复学习: 3.报名课程后,请联系客服申请加入班级答疑交流QQ群: