您的位置:首页 > 运维架构 > Docker

Docker -- 分布式处理与大数据平台-Spark

2020-07-20 15:37 316 查看

Spark

Apache Spark 是一个围绕速度、易用性和复杂分析构建的大数据处理框架,基于Scala开发。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。与Hadoop和Storm等其他大数据及MapReduce技术相比,Spark支持更灵活的函数定义,可以将应用处理速度提升1-2个数量级,并且提供了众多方便的实用工具,包括SQL查询、流处理、机器学习和图处理等。
Spark 目前支持Scala、Java、Python、Clojure、R程序设计语言编写应用。除了Spark核心API之外,Spark生态系统中还包括其他附加库,可以在大数据分析和机器学习领域提供更多的能力。这些库包括:Spark Streaming(用于构建弹性容错的流处理App),Spark SQL(支持SQL语句以及结构化数据处理),Spark MLlib(用于机器学习),Spark GraphX(用于图数据处理)。除了这些库以外,还有一些其他的库,如BlinkDB和Tachyon。
Spark典型架构包括三个主要组件:驱动程序、集群管理器、工作者节点,如图所示:

1 使用官方镜像

可以使用sequenceiq/spark 镜像,版本方面支持Hadoop2.6.0、Apache Spark v1.6.0 (CentOS)。同时此镜像还包含Dockerfile,用户可以基于它构建自定义的Apache Spark 镜像(https://github.com/sequenceiq/docker-spark)。

$ docker pull sequenceiq/spark
$ docker build --rm -t sequenceiq/spark .
# 运行容器时,需映射 YARN UI需要的端口
$ docker run -it -p 8088:8088 -p 8042:8042 -h sandbox sequenceiq/spark bash
# 启动后,可以使用bash命令行来查看namenode日志等信息:
bash-4.1# cat /usr/local/hadoop/logs/hadoop-root-namenode-b2c74d0b0240.out
# 可以使用daemon模式运行此Spark环境
$ docker run -d -h sandbox sequenceiq/spark
$ docker ps -a

2 验证

基于YARN 部署Spark系统时,有两种部署方式可选:YARN客户端模式和YARN集群模式,下面分别论述两种部署方式。

2.1 YARN 客户端模式

在YARN客户端模式中,SparkContext(或称为驱动程序)运行在客户端进程中,主(master)应用仅处理来自YARN的资源管理请求:

# 运行 spark shell
spark-shell \
--master yarn-client \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1

# 执行以下指令,若返回1000则符合预期
scala> sc.parallelize(1 to 1000).count()

2.2 YARN 集群模式

在YARN集群模式中,Spark 驱动程序运行于主应用的进程中,即由YARN从集群层面进行管理。下面,以Pi值计算为例,展示两种模式的区别:
Pi计算(YARN 集群模式)

# 执行以下指令成功后,日志中会新增记录“Pi is roughly 3.1418”
# 集群模式下用户必须指定 --files 参数,以开启metrics
spark-submit \
--class org.apache.spark.examples.SparkPi \
--files $SPARK_HOME/conf/metrics.properties \
--master yarn-cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
$SPARK_HOME/lib/spark-examples-1.6.0-hadoop2.6.0.jar

Pi 计算(YARN 客户端模式)

# 执行以下指令,成功后,命令行将显示“Pi is roughly 3.1418”
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-client \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
$SPARK_HOME/lib/spark-example-1.6.0-hadoop2.6.0.jar

2.3 容器外访问Spark

如果用户需要从容器外访问Spark 环境,则需要设置YARN_CONF_DIR 环境变量。参见相关资源部分的Spark镜像仓库,即可见yarn-remote-client 文件夹。此文件夹内置远程访问的配置信息:
export YARN_CONF_DIR="

pwd
/yarn-remote-client "
只能使用根用户访问Docker 的HDFS环境。当从容器集群外部使用非根用户访问Spark环境时,则需要配置HADOOP_USER_NAME 环境变量:
export HADOOP_USER_NAME=root

3 相关资源

Spark 的相关资源如下:
Spark 官网:http://spark.apache.org/
Spark 官方仓库:https://github.com/apache/spark
Spark 2.0更新点:http://spark.apache.org/releases/spark-release-2-0-0.html
Spark 镜像:https://hub.docker.com/r/sequenceiq/spark/
Spark 镜像仓库:https://github.com/sequenceiq/docker-spark

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: