分享

Apache Spark源码走读之10 -- 在YARN上运行SparkPi

xioaxu790 2014-12-19 21:16:00 发表于 连载型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 17261
本帖最后由 pig2 于 2015-1-6 14:13 编辑
问题导读
1、如何直接将spark在yarn上面运行?
2、结合yarn,需要修改Hadoop哪些配置文件?
3、什么是SparkPi?




本文接前几篇

Apache Spark源码走读之7 -- Standalone部署方式分析

Apache Spark源码走读之8 -- Spark on Yarn

Apache Spark源码走读之9 -- Spark源码编译



概要
“spark已经比较头痛了,还要将其运行在yarn上,yarn是什么,我一点概念都没有哎,再怎么办啊。不要跟我讲什么原理了,能不能直接告诉我怎么将spark在yarn上面跑起来,I'm a dummy, just told me how to do it.”

如果你和我一样是一个对形而上的东西不是太感兴趣,而只纠结于怎么去做的话,看这份guide保证不会让你失望, :)。

前期准备
本文所有的操作基于arch linux,保证下述软件已经安装
  • jdk
  • scala
  • maven


搭建hadoop
hadoop像它的Logo一样,真得是一个体形无比巨大的大象,如果直接入手去搞这个东东的话,肯定会昏上好长一段时间。个人取巧,从storm弄起,一路走来还算平滑。

hadoop最主要的是hdfs和MapReduce Framework,针对第二代的hadoop即hadoop 2这个Framework变成了非常流行的YARN, 要是没听说过YARN,都不好意思说自己玩过Hadoop了。

不开玩笑了,注意上面一段话中最主要的信息就是hdfs和mapreduce framework,我们接下来的所有配置都是围绕这两个主题来的。

创建用户
添加用户组: hadoop,  添加用户hduser
  1. groupadd hadoop
  2. useradd -b /home -m -g hadoop hduser
复制代码



下载hadoop运行版
假设当前是以root用户登录,现在要切换成用户hduser
  1. su - hduser
  2. id ##检验一下切换是否成功,如果一切ok,将显示下列内容
  3. uid=1000(hduser) gid=1000(hadoop) groups=1000(hadoop)
复制代码


下载hadoop 2.4并解压
  1. cd /home/hduser
  2. wget http://mirror.esocc.com/apache/hadoop/common/hadoop-2.4.0/hadoop-2.4.0.tar.gz
  3. tar zvxf hadoop-2.4.0.tar.gz
复制代码


设置环境变量
  1. export HADOOP_HOME=$HOME/hadoop-2.4.0
  2. export HADOOP_MAPRED_HOME=$HOME/hadoop-2.4.0
  3. export HADOOP_COMMON_HOME=$HOME/hadoop-2.4.0
  4. export HADOOP_HDFS_HOME=$HOME/hadoop-2.4.0
  5. export HADOOP_YARN_HOME=$HOME/hadoop-2.4.0
  6. export HADOOP_CONF_DIR=$HOME/hadoop-2.4.0/etc/hadoop
复制代码


为了避免每次都要重复设置这些变量,可以将上述语句加入到.bashrc文件中。

创建目录
接下来创建的目录是为hadoop中hdfs相关的namenode即datanode使用
  1. mkdir -p $HOME/yarn_data/hdfs/namenode
  2. mkdir -p $HOME/yarn_data/hdfs/datanode
复制代码


修改Hadoop配置文件
下列文件需要相应的配置
  • yarn-site.xml
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml


切换到hadoop安装目录
  1. $cd $HADOOP_HOME
复制代码


修改etc/hadoop/yarn-site.xml, 在<configuration>和</configuration>之间添加如下内容,其它文件添加位置与此一致
  1. <property>
  2.    <name>yarn.nodemanager.aux-services</name>
  3.    <value>mapreduce_shuffle</value>
  4. </property>
  5. <property>
  6.    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
  7.    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  8. </property>
复制代码


etc/hadoop/core-site.xml
  1. <property>
  2.    <name>fs.default.name</name>
  3.    <value>hdfs://localhost:9000</value> <!--YarnClient会用到该配置项-->
  4. </property>
复制代码


etc/hadoop/hdfs-site.xml
  1. <property>
  2.    <name>dfs.replication</name>
  3.    <value>1</value>
  4. </property>
  5. <property>
  6.    <name>dfs.namenode.name.dir</name>
  7.    <value>file:/home/hduser/yarn_data/hdfs/namenode</value> <!--节点格式化中被用到-->
  8. </property>
  9. <property>
  10.    <name>dfs.datanode.data.dir</name>
  11.    <value>file:/home/hduser/yarn_data/hdfs/datanode</value>
  12. </property>
复制代码



etc/hadoop/mapred-site.xml
  1. <property>
  2.       <name>mapreduce.framework.name</name>
  3.       <value>yarn</value>
  4. </property>
复制代码



格式化namenode
  1. $ bin/hadoop namenode -format
复制代码


启动hdfs相关进程
启动namenode
  1. $ sbin/hadoop-daemon.sh start namenode
复制代码



启动datanode
  1. $sbin/hadoop-daemon.sh start datanode
复制代码




启动mapreduce framework相关进程
启动Resource Manager
  1. sbin/yarn-daemon.sh start resourcemanager
复制代码


启动Node Manager
  1. sbin/yarn-daemon.sh start nodemanager
复制代码


启动Job History Server
  1. sbin/mr-jobhistory-daemon.sh start historyserver
复制代码



验证部署
  1. $jps
  2. 18509 Jps
  3. 17107 NameNode
  4. 17170 DataNode
  5. 17252 ResourceManager
  6. 17309 NodeManager
  7. 17626 JobHistoryServer
复制代码



运行wordCount
验证一下hadoop搭建成功与否的最好办法就是在上面跑个wordcount试试
  1. $mkdir in
  2. $cat > in/file
  3. This is one line
  4. This is another line
复制代码


将文件复制到hdfs中
  1. $bin/hdfs dfs -copyFromLocal in /in
复制代码


运行wordcount
  1. bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.0.jar wordcount /in /out
复制代码


查看运行结果
  1. bin/hdfs dfs -cat /out/*
复制代码


先歇一会,配置到这里,已经一头汗了,接下来将spark在yarn上的运行,再坚持一小会


在yarn上运行SparkPi
下载spark
下载spark for hadoop2的版本

运行SparkPi
继续以hduser身份运行,最主要的一点就是设置YARN_CONF_DIR或HADOOP_CONF_DIR环境变量
  1. export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
  2. SPARK_JAR=./assembly/target/scala-2.10/spark-assembly_2.10-0.9.1-hadoop2.2.0.jar \
  3. ./bin/spark-class org.apache.spark.deploy.yarn.Client \
  4. --jar ./examples/target/scala-2.10/spark-examples_2.10-assembly-0.9.1.jar \
  5. --class org.apache.spark.examples.JavaSparkPi \
  6. --args yarn-standalone \
  7. --num-workers 1 \
  8. --master-memory 512m \
  9. --worker-memory 512m \
  10. --worker-cores 1
复制代码



检查运行结果
运行结果保存在相关application的stdout目录,使用以下指令可以找到

cd $HADOOP_HOME
find . -name "*stdout"
假设找到的文件为./logs/userlogs/application_1400479924971_0002/container_1400479924971_0002_01_000001/stdout,使用cat可以看到结果
  1. cat ./logs/userlogs/application_1400479924971_0002/container_1400479924971_0002_01_000001/stdout
  2. Pi is roughly 3.14028
复制代码


相关内容


Apache Spark源码走读之1 -- Spark论文阅读笔记

Apache Spark源码走读之2 -- Job的提交与运行

Apache Spark源码走读之3-- Task运行期之函数调用关系分析

Apache Spark源码走读之4 -- DStream实时流数据处理

Apache Spark源码走读之5-- DStream处理的容错性分析

Apache Spark源码走读之6-- 存储子系统分析

Apache Spark源码走读之7 -- Standalone部署方式分析

Apache Spark源码走读之8 -- Spark on Yarn

Apache Spark源码走读之9 -- Spark源码编译


Apache Spark源码走读之11 -- sql的解析与执行

Apache Spark源码走读之12 -- Hive on Spark运行环境搭建

Apache Spark源码走读之13 -- hiveql on spark实现详解

Apache Spark源码走读之14 -- Graphx实现剖析

Apache Spark源码走读之15 -- Standalone部署模式下的容错性分析

Apache Spark源码走读之16 -- spark repl实现详解

Apache Spark源码走读之17 -- 如何进行代码跟读

Apache Spark源码走读之18 -- 使用Intellij idea调试Spark源码

Apache Spark源码走读之19 -- standalone cluster模式下资源的申请与释放

Apache Spark源码走读之20 -- ShuffleMapTask计算结果的保存与读取

Apache Spark源码走读之21 -- WEB UI和Metrics初始化及数据更新过程分析

Apache Spark源码走读之22 -- 浅谈mllib中线性回归的算法实现

Apache Spark源码走读之23 -- Spark MLLib中拟牛顿法L-BFGS的源码实现

Apache Spark源码走读之24 -- Sort-based Shuffle的设计与实现

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条