怎样为公司做网站,北京海淀网站建设公司,wordpress教程 搬家方法,博客建站模板点击蓝字关注我前面用了一篇文章详细的介绍了集群HDFS文件系统的搭建#xff0c;HDFS文件系统只是一个用于存储数据的系统#xff0c;它主要是用来服务于大数据计算框架#xff0c;例如MapReduce、Spark#xff0c;本文就接着上一篇文章来详细介绍一下Spark集群的搭建及Spa… 点击蓝字关注我前面用了一篇文章详细的介绍了集群HDFS文件系统的搭建HDFS文件系统只是一个用于存储数据的系统它主要是用来服务于大数据计算框架例如MapReduce、Spark本文就接着上一篇文章来详细介绍一下Spark集群的搭建及Spark的运行原理、运行模式。—▼—Spark集群环境搭建如果已经理解了前文Hadoop集群环境的搭建那么学习Spark集群环境的搭建会容易很多因为Hadoop和Spark不仅安装包目录结构非常相似在配置方面也十分接近。均是在master节点上进行所有配置然后打包复制到每个slave节点然后启动集群Spark即可下面就来详细介绍一下Spark集群环境的搭建。下载安装进入Spark的下载目录https://spark.apache.org/downloads.html可以看到Spark分多个版本有基于Hadoop构建好的有没基于Hadoop构建的有基于Hadoop2.6之前版本构建的也有基于Hadoop2.7以后版本构建的由于前面讲解Hadoop集群环境搭建时采用的是Hadoop 3.2.1因此而且本文需要使用HDFS依赖Hadoop因此需要下载Pre-built for Apache Hadoop 2.7 and later,把spark-2.4.4-bin-hadoop2.7.tgz文件下载到home路径下然后解压到指定目录$ tar -zxvf ~/spark-2.4.4-bin-hadoop2.7.tgz -C /usr/local/然后进入目录并像Hadoop那样修改Spark目录的拥有者$ cd /usr/local$ sudo mv ./spark-2.4.4-bin-hadoop2.7 ./spark$ sudo chowm -R user_name ./spark配置环境变量修改bashrc配置环境变量把Spark的bin和sbin路径加入到环境变量$ vim ~/.bashrcexport SPARK_HOME/usr/local/sparkexport PATH$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbinexport PYTHONPATH$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATHexport PYSPARK_PYTHONpython3Master节点配置进入Spark目录修改spark-env.sh文件$ cd /usr/local/spark$ vim ./conf/spark-env.sh在spark-env.sh中添加下面内容export SPARK_DIST_CLASSPATH$(/usr/local/hadoop/bin/hadoop classpath)export HADOOP_CONF_DIR/usr/local/hadoop/etc/hadoopexport SPARK_MASTER_IP10.110.113.132SPARK_MASTER_IP指定的是master节点的IP后面启动集群Spark时slave节点会注册到SPARK_MASTER_IP如果这一项不配置Spark集群则没有可使用资源修改slaves文件配置完master节点信息之后需要配置slave节点信息slave节点的信息配置在slaves文件里由于Spark目录下没有这个文件因此需要首先从slaves.template拷贝一下$ cd /usr/local/spark/$ cp ./conf/slaves.template ./conf/slaves然后添加如下内容slave0slave0slave1需要注意的是slaves文件里配置的是运行作业任务的节点(worker)这样的话master的节点只作为控制节点而不作为工作节点如果需要把master节点的资源也充分利用起来需要把master节点也加入到slaves文件中。slave节点配置首先在master节点上把配制好的目录进行打包拷贝到每个slave节点上$ cd /usr/local$ tar -zcf ~/spar.tar.gz ./spark$ scp ~/spark/tar.gz slave0:~/$ scp ~/spark/tar.gz slave1:~/$ scp ~/spark/tar.gz slave2:~/然后在每个slave节点上执行下方命令把文件解压到相应路径下$ sudo rm -rf /usr/local/spark$ sudo tar -zxvf ~/spark.tar.gz -C /usr/local$ sudo chown -R user_name /usr/local/spark这样就完成了slave节点的配置。启动Spark集群如果要使用HDFS的话在启动Spark集群前需要先启动Hadoop集群$ cd /usr/local/hadoop/$ ./sbin/start-all.sh然后进入Spark目录启动Spark集群$ cd /usr/local/spark$ ./sbin/start-all.sh需要说明一下前面配置Hadoop集群是提到需要配置ssh免密登陆对于Spark也是同样的道理如果不配置ssh免密登陆的话执行./sbin/start-all.sh会提示输入密码。除了使用./sbin/start-all.sh启动Spark集群外还可以分开启动先启动master节点然后启动slave节点$ ./sbin/start-master.sh$ ./sbin/start-slaves.sh如果前面没有完成Master节点配置指定master节点IP那么执行./sbin/start-slaves.sh时则无法注册master节点的IP这样集群计算资源则无法使用。除了配置spark-env.sh指定master节点IP外还可以通过下面方式指定注册的master节点IP$ ./sbin/start-slave.sh 10.110.113.132然后分别在master节点和slave节点执行下面命令会看到分别多出一个Master进程和Worker进程。Spark基本使用运行原理如果使用过tensorflow的话应该对Spark的使用很容易理解Spark的计算过程和tensorflow有相似之处。回忆一下我们在使用tensorflow时需要首先构造一个计算图然后实例化一个session然后用session.run来启动图运算。其实Spark也是这样RDD(弹性分布式数据集)是Spark中最重要的概念之一它提供了一个共享内存模型。Saprk的执行过程中主要包括两个动作转换与行动。其中转换操作就如同tensorflow中的构造计算图的过程在这个过程中Spark构造一个有向无环图(DAG)但是不进行运算输入为RDD输出则是一个不同的RDD当执行行动操作时就如同tensorflow中的session.run开始执行运算。Spark中有很多转换操作例如groupByKeyreduceByKeysortByKeymapfilterjoin……行动操作包括countcollectfirstforeachreducetake……运行模式Spark中通过master url来执行Spark的运行模式Spark的运行模式包括本地运行、集群运行、yarn集群等关于Spark master url的指定不同运行模式的含义如下URL值运行模式local使用1个线程本地化运行local[K]使用K个线程本地化运行local[*]使用逻辑CPU个数数量的线程来本地化运行spark://HOST:PORT指定集群模式运行Sparkyarn-cluster集群模式连接YARN集群yarn-client客户端模式连接YARN集群mesos://HOST:PORT连接到指定的Mesos集群示例下面就以一个简单的示例把前面Hadoop和Spark串联在一起讲解一下HDFSSpark的使用方法。上传数据到HDFS新建一个hello_world.txt的本地文件并在文件中添加3行hello world然后上传至HDFS$ cd /usr/local/hadoop/$ ./bin/hdfs dfs -mkdir -p /usr/hadoop$ touch hello_world.txt$ echo -e hello world \nhello world \nhello world hello_world.txt$ ./bin/hdfs dfs -put ./hello_world.txt /usr/hadoop编写Spark程序新建一个spark.py的Python文件$ vim spark.py添加如下内容from pyspark import SparkConffrom pyspark import SparkContextconf SparkConf().setAppName(FirstProject).setMaster(local[*])sc SparkContext.getOrCreate(conf)rdd sc.textFile(hdfs:///master:9000/usr/hadoop/hello_world.txt)rdd.map(lambda line: line).foreach(print)然后运行程序$ python spark.pyhello worldhello worldhello world以上就是Spark的集群配置过程和基本使用方法。▲END有趣的灵魂在等你 长按扫码可关注 相关文章效率工具 | 推荐一款提高Python编程效率的神器实用工具 | 推荐5款值得安装的Windows工具学习资源 | 推荐2份Github热门校招面试汇总资料文章好看就点这里