【Spark】入门安装使用

当你看到这篇文章的时候,想必你已经从某个渠道已经了解到了Spark,这里 贴一下官方的介绍吧:

Apache Spark is a fast and general-purpose cluster computing system. It provides high-level APIs in Java, Scala, Python and R, and an optimized engine that supports general execution graphs. It also supports a rich set of higher-level tools including Spark SQL for SQL and structured data processing, MLlib for machine learning, GraphX for graph processing, and Spark Streaming.

简单来说,它跟hadoop是同一类东西,作为大数据计算的框架,只是hadoop必须依赖hdfs存储,而Spark可依赖内存去迭代计算,当然快啊,其实spark也可以读取或者存储数据到hdfs。 这个玩意诞生于加州大学伯克利分校的,2010年开源出来。 我写这篇文章的时候最新版本已经到了1.6.2, 发展算比较快吧。

上面这段英文里面加粗的是Spark的周边产品,例如Spark Streaming就是用来做流式计算,类似storm,只不过这个更粗粒度,有兴趣可以深究,但是今天仅仅介绍一下Spark的基本安装和操作。

每个人使用Spark的目的不一样, 我研究Spark主要是为了研究一下R语言在这上面运行的情况。从1.4开始,spark加入了R语言的支持,名叫sparkR。

R语言你可以理解成一个免费的软件,软件里面已经帮你实现了很多算法,例如回归算法,求指数,求对数算法。这款软件在学术界用的比较多,因为你可以直接在里面写公式求结果,非常简单。同时,你也可以通过Java程序去调用R语言的API。

 

安装准备:

  1.  OS: linux

  2. 下载安装包spark-1.6.2.tgz:http://spark.apache.org/downloads.html  直接linux机器上解压就好了。

  3. 准备2台linux机器apc-lgdcdevl201,apc-lgdcdevl202,进程分布如下:

apc-lgdcdevl201: master , worker

apc-lgdcdevl202: worker

4、假设你的HDFS已经安装好,并且已经启动(如果不知道怎么安装,需要看我以前的Hadoop文章)

 

配置:

  1. 在conf/slaves文件中添加对应的host列表,  启动时会在这里配置的所有机器上启动worker进程。

[szuser@apc-lgdcdevl201 conf]$ cat slaves
# A Spark Worker will be started on each of the machines listed below.
apc-lgdcdevl201
apc-lgdcdevl202

2.在conf/spark-env.sh文件中添加对应的HADOOP配置,主要用于读取hdfs的数据。

export JAVA_HOME=/usr/local/jdk1.7.0_76
export SCALA_HOME=
export SPARK_HOME=/home/szuser/ahu/spark/
export SPARK_MASTER_IP=10.12.76.127
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/home/szuser/ahu/hadoop-cluster/etc/hadoop
export SPARK_LIBRARY_PATH=$SPARK_HOME/lib
export SCALA_LIBRARY_PATH=$SPARK_LIBRARY_PATH

配置完成后,把代码分别copy到apc-lgdcdevl201,apc-lgdcdevl202

 

启动Spark集群:

执行sbin/start-all.sh   通过jps命令查看Master和Worker进程是否启动,同时也可以访问master的UI,端口默认是8080,如何被占用了就是8081

Image 6

 

 

如果你能访问这个UI,说明你已经启动成功了。

下面我们来开始使用一下spark了,不要鸡冻, 先进入spark-shell( 一个交互式的scala代码运行窗口),输入如下命令进入:

[szuser@apc-lgdcdevl201 spark]$ MASTER=spark://10.12.76.127:7077 bin/spark-shell

我们来写段小代码,任务是:尝试从hdfs读取文件,然后输出第一行。

先用如下命令查看hdfs里面有什么文件

[szuser@apc-lgdcdevl202 spark]$ hdfs dfs -ls -R /

发现在user/szuser目录里面有个output/part-r-00000文件,然后在shell窗口输入如下代码:

scala>  val textFile = sc.textFile(“output/part-r-00000″)

scala> textFile.first()

此时你就可以读取hdfs的文件内容到textFile变量里面,然后打印出第一行,注意默认是读取的user/szuser目录下面的文件,类似linux文件系统默认是进入自己的home目录。当然spark也是可以从本地读取文件,如果你没有安装hdfs也可以通过如下代码测试:

scala>  val textFile = sc.textFile(“file:////home/szuser/ahu/spark/README.md”)

scala> textFile.first()

 

 

关闭Spark:

执行sbin/stop-all.sh  会关闭Master 和Worker进程。

 

总结: 可以发现spark的安装部署是比较简单的,使用也还可以,Spark主要是以RDD为算子,然后针对这个RDD进行各种操作。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>