如何在CDH5上运行Spark应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在CDH5上运行Spark应用相关的知识,希望对你有一定的参考价值。

参考技术A How-to: Run a Simple Apache Spark App in CDH 5 编写而成,没有完全参照原文翻译,而是重新进行了整理,例如:spark 版本改为 1.2.0-cdh5.3.0 ,添加了 Python 版的程序。

本文主要记录在 CDH5 集群环境上如何创建一个 Scala 的 maven 工程并且编写、编译和运行一个简单的 Spark 程序

如何在 Windows 上设置 Spark?

【中文标题】如何在 Windows 上设置 Spark?【英文标题】:How to set up Spark on Windows? 【发布时间】:2014-10-18 07:59:25 【问题描述】:

我正在尝试在 Windows 上设置 Apache Spark。

经过一番搜索,我明白独立模式是我想要的。 为了在 Windows 中运行 Apache spark,我应该下载哪些二进制文件?我在 spark 下载页面看到了带有 hadoop 和 cdh 的发行版。

我在网络上没有对此的引用。对此的分步指南非常感谢。

【问题讨论】:

【参考方案1】:

Cloudera 和 Hortonworks 是启动 Microsoft Windows 中的 HDFS。您还可以使用 VMWare 或 VBox 启动虚拟机,以使用 Scala、R、Java、Python 为您的 HDFS 和 Spark、Hive、HBase、Pig、Hadoop 建立构建。

【讨论】:

【参考方案2】:

尝试使用 spark-2.x.x,构建 Spark 源代码对我不起作用。

    所以,虽然我不打算使用 Hadoop,但我还是下载了嵌入了 hadoop 的预构建 Spark:spark-2.0.0-bin-hadoop2.7.tar.gz

    将SPARK_HOME指向解压目录,然后添加到PATH:;%SPARK_HOME%\bin;

    从 Hortonworks 存储库或亚马逊 AWS 平台 winutils 下载可执行文件 winutils。

    创建一个放置可执行文件 winutils.exe 的目录。例如,C:\SparkDev\x64。添加指向该目录的环境变量%HADOOP_HOME%,然后将%HADOOP_HOME%\bin添加到PATH中。

    使用命令行,创建目录:

    mkdir C:\tmp\hive
    

    使用您下载的可执行文件,向您创建的文件目录添加完全权限,但使用 unixian 形式:

    %HADOOP_HOME%\bin\winutils.exe chmod 777 /tmp/hive
    

    键入以下命令行:

    %SPARK_HOME%\bin\spark-shell
    

Scala 命令行输入应该会自动显示。

备注:不需要单独配置Scala。它也是内置的。

【讨论】:

【参考方案3】:

Ani Menon 的指南(谢谢!)几乎可以在 Windows 10 上为我工作,我只需要从那个 git(当前为 hadoop-2.8.1)中获得一个更新的 winutils.exe:https://github.com/steveloughran/winutils

【讨论】:

【参考方案4】:

以下是在 windows 10 上安装 spark 并从 python 运行它的七个步骤:

第 1 步:通过此链接 - https://spark.apache.org/downloads.html 将 spark 2.2.0 tar(磁带存档)gz 文件下载到任何文件夹 F。解压后将解压后的文件夹复制到需要的文件夹A。将spark-2.2.0-bin-hadoop2.7文件夹重命名为spark。

让 spark 文件夹的路径为 C:\Users\Desktop\A\spark

第 2 步:通过此链接 - https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz 将 hardoop 2.7.3 tar gz 文件下载到同一文件夹 F。将其解压并将解压后的文件夹复制到同一个文件夹 A. 将文件夹名称从 Hadoop-2.7.3.tar 重命名为 hadoop。 让 hadoop 文件夹的路径为 C:\Users\Desktop\A\hadoop

第 3 步:创建一个新的记事本文本文件。将此空记事本文件另存为 winutils.exe(另存为类型:所有文件)。将此 O KB winutils.exe 文件复制到 spark 中的 bin 文件夹 - C:\Users\Desktop\A\spark\bin

第 4 步:现在,我们必须将这些文件夹添加到系统环境中。

4a:创建系统变量(不是用户变量,因为用户变量会继承系统变量的所有属性) 变量名:SPARK_HOME 变量值:C:\Users\Desktop\A\spark

找到路径系统变量并点击编辑。您将看到多条路径。不要删除任何路径。添加此变量值 - ;C:\Users\Desktop\A\spark\bin

4b:创建系统变量

变量名:HADOOP_HOME 变量值:C:\Users\Desktop\A\hadoop

找到路径系统变量并点击编辑。添加这个变量值 - ;C:\Users\Desktop\A\hadoop\bin

4c:创建系统变量变量名:JAVA_HOME 在 Windows 中搜索 Java。右键单击并单击打开文件位置。您将不得不再次右键单击任何一个 java 文件,然后单击打开文件位置。您将使用此文件夹的路径。或者您可以搜索 C:\Program Files\Java。我系统上安装的Java版本是jre1.8.0_131。 变量值:C:\Program Files\Java\jre1.8.0_131\bin

找到路径系统变量并点击编辑。添加此变量值 - ;C:\Program Files\Java\jre1.8.0_131\bin

第 5 步:打开命令提示符并转到您的 spark bin 文件夹(键入 cd C:\Users\Desktop\A\spark\bin)。输入 spark-shell。

C:\Users\Desktop\A\spark\bin>spark-shell

这可能需要一些时间并给出一些警告。最后会显示 欢迎使用 spark 2.2.0 版

第 6 步:键入 exit() 或重新启动命令提示符并再次转到 spark bin 文件夹。输入 pyspark:

C:\Users\Desktop\A\spark\bin>pyspark

它会显示一些警告和错误但忽略。它有效。

第 7 步:下载完成。如果你想直接从 python shell 运行 spark 那么: 转到 python 文件夹中的 Scripts 并键入

pip install findspark

在命令提示符下。

在python shell中

import findspark
findspark.init()

导入必要的模块

from pyspark import SparkContext
from pyspark import SparkConf

如果您想跳过导入 findspark 和初始化的步骤,请按照 importing pyspark in python shell

【讨论】:

【参考方案5】:

本地模式安装Spark的步骤:

    Install Java 7 or later。 要测试java安装是否完成,打开命令提示符输入java并回车。 如果你收到'Java' is not recognized as an internal or external command.的消息,你需要配置你的环境变量,JAVA_HOMEPATH指向jdk的路径。

    Download and install Scala.

    Control Panel\System and Security\System 中设置SCALA_HOME 转到“高级系统设置”并在环境变量的PATH 变量中添加%SCALA_HOME%\bin

    从Python Download link 安装 Python 2.6 或更高版本。

    Download SBT。安装它并将SBT_HOME设置为环境变量,值为<<SBT PATH>>

    从HortonWorks repo 或git repo 下载winutils.exe。由于我们没有在 Windows 上安装本地 Hadoop,我们必须下载 winutils.exe 并将其放在创建的 Hadoop 主目录下的 bin 目录中。 在环境变量中设置HADOOP_HOME = <<Hadoop home directory>>

    我们将使用预构建的 Spark 包,因此请为 Hadoop Spark download 选择 Spark 预构建包。下载并解压。

    在环境变量的PATH变量中设置SPARK_HOME并添加%SPARK_HOME%\bin

    运行命令:spark-shell

    在浏览器中打开 http://localhost:4040/ 以查看 SparkContext Web UI。

【讨论】:

很棒的指南,不需要任何本地编译。 我得到“java.lang.IllegalArgumentException:实例化'org.apache.spark.sql.hive.HiveSessionState'时出错”。安装 hive 需要额外的步骤吗? @Stefan ***.com/questions/42264695/… 这很有帮助,谢谢。此外,如果有人在运行 spark-shell 时出现错误提示“未能找到 spark jars 目录”,请确保您的 SPARK_HOME 路径中没有空格。在这方面苦苦挣扎了很久。 这是黄金。我无法解释在 Windows 中使用 Spark 和 Scala 时遇到的麻烦。我首先尝试了 Windows Ubuntu Bash。不是个好主意!也许如果你有最新的创作者更新(Ubuntu 16),否则会有大量错误和网络问题。【参考方案6】:

这是一个简单的最小脚本,可以从任何 python 控制台运行。 它假定您已将下载的 Spark 库提取到 C:\Apache\spark-1.6.1。

这可以在 Windows 中运行,无需构建任何东西,并解决了 Spark 抱怨递归酸洗的问题。

import sys
import os
spark_home = 'C:\Apache\spark-1.6.1'

sys.path.insert(0, os.path.join(spark_home, 'python'))
sys.path.insert(0, os.path.join(spark_home, 'python\lib\pyspark.zip')) 
sys.path.insert(0, os.path.join(spark_home, 'python\lib\py4j-0.9-src.zip')) 

# Start a spark context:
sc = pyspark.SparkContext()

# 
lines = sc.textFile(os.path.join(spark_home, "README.md")
pythonLines = lines.filter(lambda line: "Python" in line)
pythonLines.first()

【讨论】:

【参考方案7】:

这里是让它在 Windows 中运行而无需重建所有内容的修复程序 - 例如,如果您没有最新版本的 MS-VS。 (您将需要一个 Win32 C++ 编译器,但您可以免费安装 MS VS 社区版。)

我已经在 Spark 1.2.2 和 mahout 0.10.2 以及 2015 年 11 月的最新版本中进行了尝试。存在许多问题,包括 Scala 代码尝试运行 bash 脚本(mahout /bin/mahout) 当然不行,sbin脚本还没有移植到windows,如果没有安装hadoop,winutils就会丢失。

(1) 安装 scala,然后将 spark/hadoop/mahout 解压到 C: 的根目录下,在它们各自的产品名称下。

(2) 将 \mahout\bin\mahout 重命名为 mahout.sh.was(我们不需要它)

(3) 编译以下 Win32 C++ 程序,并将可执行文件复制到名为 C:\mahout\bin\mahout 的文件中(没错——没有 .exe 后缀,就像 Linux 可执行文件一样)

#include "stdafx.h"
#define BUFSIZE 4096
#define VARNAME TEXT("MAHOUT_CP")
int _tmain(int argc, _TCHAR* argv[]) 
    DWORD dwLength;     LPTSTR pszBuffer;
    pszBuffer = (LPTSTR)malloc(BUFSIZE*sizeof(TCHAR));
    dwLength = GetEnvironmentVariable(VARNAME, pszBuffer, BUFSIZE);
    if (dwLength > 0)  _tprintf(TEXT("%s\n"), pszBuffer); return 0; 
    return 1;

(4) 创建脚本 \mahout\bin\mahout.bat 并粘贴下面的内容,虽然 _CP 类路径中 jar 的确切名称将取决于 spark 的版本和驯象师。根据您的安装更新任何路径。使用不带空格的 8.3 路径名。请注意,您不能在此处的类路径中使用通配符/星号。

set SCALA_HOME=C:\Progra~2\scala
set SPARK_HOME=C:\spark
set HADOOP_HOME=C:\hadoop
set MAHOUT_HOME=C:\mahout
set SPARK_SCALA_VERSION=2.10
set MASTER=local[2]
set MAHOUT_LOCAL=true
set path=%SCALA_HOME%\bin;%SPARK_HOME%\bin;%PATH%
cd /D %SPARK_HOME%
set SPARK_CP=%SPARK_HOME%\conf\;%SPARK_HOME%\lib\xxx.jar;...other jars...
set MAHOUT_CP=%MAHOUT_HOME%\lib\xxx.jar;...other jars...;%MAHOUT_HOME%\xxx.jar;...other jars...;%SPARK_CP%;%MAHOUT_HOME%\lib\spark\xxx.jar;%MAHOUT_HOME%\lib\hadoop\xxx.jar;%MAHOUT_HOME%\src\conf;%JAVA_HOME%\lib\tools.jar
start "master0" "%JAVA_HOME%\bin\java" -cp "%SPARK_CP%" -Xms1g -Xmx1g org.apache.spark.deploy.master.Master --ip localhost --port 7077 --webui-port 8082 >>out-master0.log 2>>out-master0.err
start "worker1" "%JAVA_HOME%\bin\java" -cp "%SPARK_CP%" -Xms1g -Xmx1g org.apache.spark.deploy.worker.Worker spark://localhost:7077 --webui-port 8083 >>out-worker1.log 2>>out-worker1.err
...you may add more workers here...
cd /D %MAHOUT_HOME%
"%JAVA_HOME%\bin\java" -Xmx4g -classpath "%MAHOUT_CP%" "org.apache.mahout.sparkbindings.shell.Main"

不应更改变量 MAHOUT_CP 的名称,因为它在 C++ 代码中被引用。

当然,您可以注释掉启动 Spark master 和 worker 的代码,因为 Mahout 将根据需要运行 Spark;我只是将它放在批处理作业中,以向您展示如果您想在没有 Mahout 的情况下使用 Spark 时如何启动它。

(5) 以下教程是一个很好的起点:

https://mahout.apache.org/users/sparkbindings/play-with-shell.html

您可以在以下位置启动 Mahout Spark 实例:

"C:\Program Files (x86)\Google\Chrome\Application\chrome" --disable-web-security http://localhost:4040

【讨论】:

【参考方案8】:

您可以使用以下方式来设置 Spark:

从源代码构建 使用预构建版本

虽然build Spark from Source有多种方式。 首先,我尝试使用 SBT 构建 Spark 源代码,但这需要 hadoop。为了避免这些问题,我使用了预构建版本。

我下载了 hadoop 2.x 版本的 Prebuilt 版本而不是 Source 并运行它。 为此,您需要安装 Scala 作为先决条件。

我在这里整理了所有步骤:How to run Apache Spark on Windows7 in standalone mode

希望对你有帮助..!!!

【讨论】:

【参考方案9】:

我发现在 Windows 上最简单的解决方案是从源代码构建。

您几乎可以按照本指南进行操作:http://spark.apache.org/docs/latest/building-spark.html

下载并安装 Maven,并将MAVEN_OPTS 设置为指南中指定的值。

但是,如果您只是在玩 Spark,并且由于您自己的机器运行 Windows 的任何其他原因实际上不需要它在 Windows 上运行,我强烈建议您在 linux 虚拟机上安装 Spark .最简单的入门方法可能是下载由 Cloudera 或 Hortonworks 制作的现成图像,然后使用捆绑版本的 Spark,或者从源代码或从 spark 网站获得的编译二进制文件安装自己的。

【讨论】:

感谢您的提醒。链接已修复。 嗨,我在 windows 上的构建在 Cygwin 上运行良好,但是当我在 sbin 目录中运行命令 ./start-master.sh 时,我收到错误错误:无法找到或加载主类 org。 apache.spark.launcher.Main 完整登录 /cygdrive/c/Spark/spark-1.5.1/sbin/../logs/spark-auser-org.apache.spark.deploy.master.Master-1.host 嗨,Yashpal,我试过了,但我卡在第 5 步(winutils)。我无法将这些文件复制到我的 bin 目录中。【参考方案10】:

您可以从这里下载 spark:

http://spark.apache.org/downloads.html

我推荐你这个版本:Hadoop 2 (HDP2, CDH5)

从 1.0.0 版开始,有 .cmd 脚本可以在 windows 中运行 spark。

使用 7zip 或类似软件解压。

开始你可以执行/bin/spark-shell.cmd --master local[2]

要配置您的实例,您可以点击此链接:http://spark.apache.org/docs/latest/

【讨论】:

你会建议什么 hadoop 替代方案?我的意思是我们也可以在我们的 Windows PC 上安装的东西。 Redis?

以上是关于如何在CDH5上运行Spark应用的主要内容,如果未能解决你的问题,请参考以下文章

如何在CDH5上运行Spark应用

如何在CDH5上运行Spark应用

CDH5.12.0 如何升级到Spark2.0 版本

如何使用Spark SQL 的JDBC server

如何在 CDH 5.4.4 上从 Spark 查询 Hive

0644-5.16.1-如何在CDH5中使用Spark2.4 Thrift