Docker -- 分布式处理与大数据平台-Spark
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
- Docker -- 分布式处理与大数据平台-Storm
- Docker实战(十)之分布式处理与大数据平台
- Docker -- 分布式处理与大数据平台-Elasticsearch
- 分布式处理与大数据平台(RabbitMQ&Celery&Hadoop&Spark&Storm&Elasticsearch)
- Hadoop与分布式数据处理 Spark VS Hadoop有哪些异同点?
- 大数据平台安装测试(1)centos7.1 docker mesos tachyon hadoop (myriad? yarn?)spark hbase speaksql 选型分析
- Spark+Jupyter=在线文本数据处理逻辑测试平台
- Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化
- 【大数据平台技术】—— 使用Docker搭建Hadoop分布式集群 —— 酱懵静
- 技术分享:基于HBase和Spark构建企业级数据处理平台
- J2ME平台A-RPG游戏地图数据处理
- 分布式sparkSQL引擎应用:从远程通过thriftServer连接spark集群处理hive中的数据
- [置顶] spark数据导入、处理实例
- Spark Streaming:大规模流式数据处理的新贵
- MAC系统中搭建Spark大数据平台(包括Scala)
- Spark Streaming实时处理本地数据流
- Spark 流数据处理简介
- 许鹏:使用Spark+Cassandra打造高性能数据分析平台
- 工业互联网平台核心技术之一:数据集成与边缘处理技术