Hadoop和Spark的统一部署

Spark三种部署方式

  Spark应用程序在集群上部署运行时,可以由不同的组件为其提供资源管理调度服务(资源包括CPU、内存等)。比如,可以使用自带的独立集群管理器(standalone),或者使用YARN,也可以使用Mesos。因此,Spark包括三种不同类型的集群部署方式,包括standalone、Spark on Mesos和Spark on YARN。
1.standalone模式
  与MapReduce1.0框架类似,Spark框架本身也自带了完整的资源调度管理服务,可以独立部署到一个集群中,而不需要依赖其他系统来为其提供资源管理调度服务。在架构的设计上,Spark与MapReduce1.0完全一致,都是由一个Master和若干个Slave构成,并且以槽(slot)作为资源分配单位。不同的是,Spark中的槽不再像MapReduce1.0那样分为Map 槽和Reduce槽,而是只设计了统一的一种槽提供给各种任务来使用。
2.Spark on Mesos模式
  Mesos是一种资源调度管理框架,可以为运行在它上面的Spark提供服务。Spark on Mesos模式中,Spark程序所需要的各种资源,都由Mesos负责调度。由于Mesos和Spark存在一定的血缘关系,因此,Spark这个框架在进行设计开发的时候,就充分考虑到了对Mesos的充分支持,因此,相对而言,Spark运行在Mesos上,要比运行在YARN上更加灵活、自然。目前,Spark官方推荐采用这种模式,所以,许多公司在实际应用中也采用该模式。
3. Spark on YARN模式
  Spark可运行于YARN之上,与Hadoop进行统一部署,即“Spark on YARN”,资源管理和调度依赖YARN,分布式存储则依赖HDFS。

  

Hadoop和Spark的统一部署

  一方面,由于Hadoop生态系统中的一些组件所实现的功能,目前还是无法由Spark取代的,比如,Storm可以实现毫秒级响应的流计算,但是,Spark则无法做到毫秒级响应。另一方面,企业中已经有许多现有的应用,都是基于现有的Hadoop组件开发的,完全转移到Spark上需要一定的成本。因此,在许多企业实际应用中,Hadoop和Spark的统一部署是一种比较现实合理的选择。
由于Hadoop MapReduce、HBase、Storm和Spark等,都可以运行在资源管理框架YARN之上,因此,可以在YARN之上进行统一部署。这些不同的计算框架统一运行在YARN中,可以带来如下好处:
 计算资源按需伸缩;
 不用负载应用混搭,集群利用率高;
 共享底层存储,避免数据跨集群迁移。

Hadoop单机/伪分布配置

  1.创建hadoop用户 sudo useradd -m hadoop -s /bin/bash

    设置密码: sudo passwd hadoop

    为hadoop用户增加管理员权限:sudo adduser hadoop sudo

  2.安装SSH、配置SSH无密码登陆

    集群、单节点模式都需要用到 SSH 登陆:sudo apt-get install openssh-server

    SSH登陆:ssh localhost  (注意配置SSH免密登陆)

  3.安装JAVA环境

   解压文件到指定目录。 

    使用vim编辑器打开了hadoop这个用户的环境变量配置文件:vim ~/.bashrc

   

    保存.bashrc文件并退出,使配置立即生效:source ~/.bashrc

   查看是否安装成功:java -version

   

    4.安装Hadoop

   下载解压文件

   修改权限:sudo chown -R hadoop ./hadoop

   检查版本信息:./bin/hadoop version

   Hadoop伪分布式配置:

   通过 gedit 编辑core-site.xml文件: gedit ./etc/hadoop/core-site.xml

   

    

    配置完成,执行NameNode格式化:./bin/hdfs namenode -format

      启动SSH:./sbin/start-dfs.sh

    5.安装Spark(python)

   下载和解压Spark文件

   修改Spark的配置文件spark-env.sh,在第一行添加配置信息:

    export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

   有了上面的配置信息以后,Spark就可以把数据存储到Hadoop分布式文件系统HDFS中,也可以从HDFS中读取数据。如果没有配置上面信息,Spark就只能读写本地数据,无法读写HDFS数据。

   修改环境变量:vim ~/.bashrc    在.bashrc文件中添加如下内容

   

    PYTHONPATH环境变量主要是为了在Python3中引入pyspark库,PYSPARK_PYTHON变量主要是设置pyspark运行的python版本。

   让环境变量生效:source ~/.bashrc

   配置完成后就可以直接使用,不需要像Hadoop运行启动命令。如果在使用Spark的过程中需要用到 HDFS,就要首先启动 Hadoop。

   启动pyspark: bin/pyspark

   

   参考链接:http://dblab.xmu.edu.cn/blog/1689-2/

posted @ 2022-02-25 22:49  hungry_J  阅读(84)  评论(0编辑  收藏  举报