首页 > 编程知识 正文

Alex 的 Hadoop 菜鸟教程: 第17课 更快速的MapReduce - Spark

时间:2023-05-04 16:59:16 阅读:28735 作者:3021

原文地址: http://blog.csdn.net/ns rainbow/article/details/43735737最新课程请关注原作者博客,获得更好的显示体验

本文介绍了Spark,Centos6.x CDH 5.x Spark是Apache的顶级项目。 项目背景是Hadoop的MapReduce受挫太晚了,所以有人做了Spark。 目前,Spark声称内存比Hadoop快100倍,磁盘比Hadoop快10倍。

Spark spark安装有五个组件

用于spark-core: spark核心包spark-worker: spark-worker的脚本用于spark-master: spark-master的脚本spark-python :

由于选择了host1作为工具包的安装master和worker,因此在host1上安装以下工具包

sudoyuminstallspark-core spark-master spark-workers park-python host 2是history-server和workersudoyuminstalllspark-core

独立模式:是独立模式,Spark使用主服务执行任务。 YARN模式:是YARN模式,而YARN资源管理器取代了Spark Master。 作业仍在由节点管理器运行。 虽然YARN模式的构建变得复杂,但它支持安全机制,并且与YARN群集的合作会更好。 本教程使用独立模式

编辑安装了Spark的每台计算机上的/etc/spark/conf/spark-env.sh以更改安装了master的计算机的计算机名称。 在本教程中是host1

# # # #

创建Spark History Server所需的hdfs文件夹/user/spark/application history/$ sudo-uhdfshadoopfs-mkdir/user/spark $ sudo-- 应用历史记录$ sudo-uhdfshadoopfs-chown-RS park 3360 spark/user/spark $ sudo-uhdfshadoopfs-chmod 1777应用程序创建新的配置文件CP/etc/spark/conf/spark-defaults.conf.template/etc/spark/conf/spark-defaults.conf,然后单击要添加到etc中的spark-defaults.conf中的spark.event log.dir=/user/spark/applicationhistoryspark.event log.enabled=trrr

启动Spark以在主机1上启动主服务

sudo服务spark-master start

在其他节点上启动woker服务。 在本教程中,您将看到主机1和主机2

sudo服务spark-worker start

在任一节点上启动历史记录服务。 在本教程中,您将在host2上启动history

打开sudoservicespark-history-serverstart启动顺序masterworkerhistory-server浏览器访问http://host1:18080时,spark管理界面会显示

使用Spark并使用spark shell命令进入spark shell

[ root @ host1impala ] # spark-shell 2015-02-1009336002336007,059 info [ main ] spark.security manager (loging.sc al )

) - 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-SNAPSHOT2015-02-10 09:02:07,350 INFO [main] server.AbstractConnector (AbstractConnector.java:doStart(338)) - Started SocketConnector@0.0.0.0:590582015-02-10 09:02:07,352 INFO [main] util.Utils (Logging.scala:logInfo(59)) - Successfully started service ‘HTTP class server‘ on port 59058.Welcome to ____ __ / __/__ ___ _____/ /__ _ / _ / _ `/ __/ ‘_/ /___/ .__/_,_/_/ /_/_ version 1.2.0 /_/Using Scala version 2.10.4 (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 BlockManager2015-02-10 09:02:22,472 INFO [main] scheduler.EventLoggingListener (Logging.scala:logInfo(59)) - Logging events to file:/user/spark/applicationHistory/local-14235301409862015-02-10 09: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/input
STEP2 进入 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 我们去看下结果,我用Pig看下结果
grunt> lshdfs://mycluster/user/spark/wordcount/input <dir>hdfs://mycluster/user/spark/wordcount/output <dir>grunt> cd outputgrunt> lshdfs://mycluster/user/spark/wordcount/output/_SUCCESS<r 2> 0hdfs://mycluster/user/spark/wordcount/output/part-00000<r 2> 8hdfs://mycluster/user/spark/wordcount/output/part-00001<r 2> 10hdfs://mycluster/user/spark/wordcount/output/part-00002<r 2> 33grunt> cat part-00000(Bye,1)grunt> cat part-00001(World,2)grunt> cat part-00002(Goodbye,1)(Hello,2)(Hadoop,2)
更深入的学习请看手册 Spark Programming Guide , 另外这个手册写的真不错。
参考资料 how to run a simple spark app in cdh 5
Spark Programming Guide

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。