Alex 的 Hadoop 菜鸟教程: 第17课 Spark 安装以及使用教程

声明本文基于Centos6.x + CDH 5.x本文基于CSDN的markdown编辑器写成,csdn终于支持markdown了,高兴!Spark是什么

Spark是Apache的顶级项目。项目背景是 Hadoop 的 MapReduce 太挫太慢了,于是有人就做了Spark,目前Spark声称在内存中比Hadoop快100倍,在磁盘上比Hadoop快10倍。

安装Spark

spark有5个组件

开始安装Spark

安装组件包

我挑选host1作为master 和 worker,所以在host1上安装以下包

sudo yum install spark-core spark-master spark-worker spark-python

host2 作为 history-server 和 worker

sudo yum install spark-core spark-worker spark-history-server spark-python配置Spark

Spark支持两种模式

独立模式: 在独立模式, Spark使用一个 Master 服务来运行任务。

YARN模式: 在YARN模式, YARN ResourceManager 代替了Spark Master。Job还是由NodeManager运行。YARN 模式搭建会比较复杂,但是它支持安全机制,并且跟YARN集群的配合更好。

本教程中使用独立模式

编辑每一台安装了Spark机器上的 /etc/spark/conf/spark-env.sh 修改master所在机器的机器名,在这个教程中就是host1

STANDALONE_SPARK_MASTER_HOST=’host1′

注意: 包裹host1的符号也要换成单引号

创建Spark History Server需要的hdfs文件夹 /user/spark/applicationHistory/

$ sudo -u hdfs hadoop fs -mkdir /user/spark $ sudo -u hdfs hadoop fs -mkdir /user/spark/applicationHistory $ sudo -u hdfs hadoop fs -chown -R spark:spark /user/spark$ sudo -u hdfs hadoop fs -chmod 1777 /user/spark/applicationHistory

在Spark客户端,在本例中就是host2,创建一份新的配置文件

cp /etc/spark/conf/spark-defaults.conf.template /etc/spark/conf/spark-defaults.conf

把下面这两行增加到/etc/spark/conf/spark-defaults.conf 里面去

spark.eventLog.dir=/user/spark/applicationHistoryspark.eventLog.enabled=true

在所有的机器上复制hdfs-site.xml到 /etc/spark/conf 下

cp /etc/hadoop/conf/hdfs-site.xml /etc/spark/conf/启动Spark

在host1上启动master服务

sudo service spark-master start

在其他节点上启动woker服务,本教程中就是 host1 和 host2

sudo service spark-worker start

在其中一个节点上启动history服务,本教程中用host2启动history

sudo service spark-history-server start启动顺序管理界面

打开浏览器访问 :18080 可以看到Spark的管理界面

使用Spark

使用 spark-shell 命令进入spark shell

[root@host1 impala]:02:07,059 INFO [main] spark.SecurityManager (Logging.scala:logInfo(59)) – Changing view acls to: root2015-02-10 09:02:07,069 INFO [main] spark.SecurityManager (Logging.scala:logInfo(59)) – Changing modify acls to: root2015-02-10 09:02:07,070 INFO [main] spark.SecurityManager (Logging.scala:logInfo(59)) – SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); users with modify permissions: Set(root)2015-02-10 09:02:07,072 INFO [main] spark.HttpServer (Logging.scala:logInfo(59)) – Starting HTTP Server2015-02-10 09:02:07,217 INFO [main] server.Server (Server.java:doStart(272)) – jetty-8.y.z-SNAPSHOT::02:07,352 INFO [main] util.Utils (Logging.scala:logInfo(59)) – Successfully started service ‘HTTP class server’ on port 59058.Welcome to______/ __/__ ___ _____/ /___\ \/ _ \/ _ `/ __/ ‘_/ /___/ .__/\_,_/_/ /_/\_\ /_/Using Scala (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_25)…2015-02-10 09:02:21,572 INFO [main] storage.BlockManagerMaster (Logging.scala:logInfo(59)) – Registered BlockManager:/user/spark/applicationHistory/:02:22,672 INFO [main] repl.SparkILoop (Logging.scala:logInfo(59)) – Created spark context..Spark context available as sc.scala>

我们来开始玩一下Spark。还是做之前用YARN做的wordcount任务,看看Spark如何完成这项任务。

STEP1

创建测试文本

$ echo “Hello World Bye World” > file0$ echo “Hello Hadoop Goodbye Hadoop” > file1$ hdfs dfs -mkdir -p /user/spark/wordcount/input$ hdfs dfs -put file* /user/spark/wordcount/inputSTEP2

进入 spark-shell 运行 wordcount任务脚本

val file = sc.textFile(“hdfs://mycluster/user/spark/wordcount/input”)val counts = file.flatMap(line => line.split(” “)).map(word => (word, 1)).reduceByKey(_ + _)counts.saveAsTextFile(“hdfs://mycluster/user/spark/wordcount/output”)

这回不用写java代码了,简单了好多。这里用的是Scala语言。 Spark支持 Java, Scale, Python 三种语言,但是对Scala的支持最全,建议开始用java来写,后期还是熟悉下Scala比较好。

STEP3去旅行不在于记忆,而在于当时的那份心情。

Alex 的 Hadoop 菜鸟教程: 第17课 Spark 安装以及使用教程

相关文章:

你感兴趣的文章:

标签云: