博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache Spark源码走读之10 -- 在YARN上运行SparkPi
阅读量:4679 次
发布时间:2019-06-09

本文共 4071 字,大约阅读时间需要 13 分钟。

概要

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

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

前期准备

本文所有的操作基于arch linux,保证下述软件已经安装

  1. jdk
  2. scala
  3. maven

搭建hadoop

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

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

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

创建用户

添加用户组: hadoop,  添加用户hduser

groupadd hadoopuseradd -b /home -m -g hadoop hduser

下载hadoop运行版

假设当前是以root用户登录,现在要切换成用户hduser

su - hduserid ##检验一下切换是否成功,如果一切ok,将显示下列内容uid=1000(hduser) gid=1000(hadoop) groups=1000(hadoop)

下载hadoop 2.4并解压

cd /home/hduserwget http://mirror.esocc.com/apache/hadoop/common/hadoop-2.4.0/hadoop-2.4.0.tar.gz tar zvxf hadoop-2.4.0.tar.gz

设置环境变量

export HADOOP_HOME=$HOME/hadoop-2.4.0export HADOOP_MAPRED_HOME=$HOME/hadoop-2.4.0 export HADOOP_COMMON_HOME=$HOME/hadoop-2.4.0 export HADOOP_HDFS_HOME=$HOME/hadoop-2.4.0 export HADOOP_YARN_HOME=$HOME/hadoop-2.4.0 export HADOOP_CONF_DIR=$HOME/hadoop-2.4.0/etc/hadoop

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

创建目录

接下来创建的目录是为hadoop中hdfs相关的namenode即datanode使用

mkdir -p $HOME/yarn_data/hdfs/namenodemkdir -p $HOME/yarn_data/hdfs/datanode

修改Hadoop配置文件

下列文件需要相应的配置

  1. yarn-site.xml
  2. core-site.xml
  3. hdfs-site.xml
  4. mapred-site.xml

切换到hadoop安装目录

$cd $HADOOP_HOME

修改etc/hadoop/yarn-site.xml, 在<configuration>和</configuration>之间添加如下内容,其它文件添加位置与此一致

yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler

etc/hadoop/core-site.xml

fs.default.name
hdfs://localhost:9000

etc/hadoop/hdfs-site.xml

dfs.replication
1
dfs.namenode.name.dir
file:/home/hduser/yarn_data/hdfs/namenode
dfs.datanode.data.dir
file:/home/hduser/yarn_data/hdfs/datanode

etc/hadoop/mapred-site.xml

mapreduce.framework.name
yarn

格式化namenode

$ bin/hadoop namenode -format

启动hdfs相关进程

启动namenode

$ sbin/hadoop-daemon.sh start namenode

启动datanode

$sbin/hadoop-daemon.sh start datanode

启动mapreduce framework相关进程

启动Resource Manager

sbin/yarn-daemon.sh start resourcemanager

启动Node Manager

sbin/yarn-daemon.sh start nodemanager

启动Job History Server

sbin/mr-jobhistory-daemon.sh start historyserver

验证部署

$jps18509 Jps17107 NameNode17170 DataNode17252 ResourceManager 17309 NodeManager 17626 JobHistoryServer

运行wordCount

验证一下hadoop搭建成功与否的最好办法就是在上面跑个wordcount试试

$mkdir in$cat > in/fileThis is one lineThis is another line

将文件复制到hdfs中

$bin/hdfs dfs -copyFromLocal in /in

运行wordcount

bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.0.jar wordcount /in /out

查看运行结果

bin/hdfs dfs -cat /out/*

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

在yarn上运行SparkPi

下载spark

下载spark for hadoop2的版本

运行SparkPi

继续以hduser身份运行,最主要的一点就是设置YARN_CONF_DIR或HADOOP_CONF_DIR环境变量

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoopSPARK_JAR=./assembly/target/scala-2.10/spark-assembly_2.10-0.9.1-hadoop2.2.0.jar \ ./bin/spark-class org.apache.spark.deploy.yarn.Client \ --jar ./examples/target/scala-2.10/spark-examples_2.10-assembly-0.9.1.jar \ --class org.apache.spark.examples.JavaSparkPi \ --args yarn-standalone \ --num-workers 1 \ --master-memory 512m \ --worker-memory 512m \ --worker-cores 1

检查运行结果

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

cd $HADOOP_HOMEfind . -name "*stdout"

假设找到的文件为./logs/userlogs/application_1400479924971_0002/container_1400479924971_0002_01_000001/stdout,使用cat可以看到结果

cat ./logs/userlogs/application_1400479924971_0002/container_1400479924971_0002_01_000001/stdoutPi is roughly 3.14028

转载于:https://www.cnblogs.com/captain_ccc/articles/4129322.html

你可能感兴趣的文章
多线程学习(十二)
查看>>
CSS display属性的值及作用
查看>>
[独孤九剑]Oracle知识点梳理(一)表空间、用户
查看>>
tomcat_logs
查看>>
java数组
查看>>
安装theano
查看>>
神经网络从零到熟练——水果分类学习
查看>>
robotframework笔记19
查看>>
Oracle工具的探索之旅(四)
查看>>
我的收藏
查看>>
【转】【Html】Vuejs2.0学习之二(Render函数,createElement,vm.$slots,函数化组件,模板编译,JSX)...
查看>>
Memcached 安装及配置
查看>>
Asp.Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty
查看>>
3简述Linux 支持那些文件系统及其特点。
查看>>
语言精粹心得
查看>>
总结 — 各种数据访问方式
查看>>
在eclipse怎么用jdk去编译maven项目
查看>>
vue项目首页形成原理
查看>>
nginx 安装
查看>>
演示使用string对象
查看>>