在yarn上安装spark,以及遇到的问题

本文详细介绍了Spark的安装过程,包括解压包至指定目录、配置slaves文件、修改spark-env.sh以适配Hadoop环境,以及如何自定义启动脚本。此外,还解决了在内存充足情况下运行内存不足的错误,以及在YARN上运行spark-submit时因JDK问题导致的故障。

安装:

  1. 安装在客户端:解压包解压在 /opt/software/spark(自己定义的目录)
  2. 配置文件:
    修改slaves文件:其中配置worker的节点
    在这里插入图片描述修改配置文件:spark-env.sh,配置hadoop相关信息
    在这里插入图片描述

3.修改命令:
sbin目录下的 start-all.sh 改为: start-1.6.3.sh(自定义)
4.修改环境变量:
在这里插入图片描述

问题:

1.在内存充足的情况下,运行时,报错:运行内存不足:
解决方法:查看配置文件 spark-env.sh 是不是配置了其他的参数
在这里插入图片描述
2.在yarn上运行spark-submit时出现:
在这里插入图片描述解决:因为jdk的问题
需要在yarn-site.xml中添加:

<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<think>嗯,用户问的是如何在Docker上部署HDFS、ZooKeeper、YARNSpark集群。这个问题看起来有点复杂,但让我一步步来理清楚思路。首先,我需要确认用户的需求。他们可能想要一个本地的测试环境,或者是一个开发用的小型集群,所以使用Docker来简化部署流程是合理的。 接下来,我得考虑各个组件之间的依赖关系。HDFS是Hadoop的核心,ZooKeeper用于协调,YARN负责资源管理,而Spark则运行在YARN之上。所以部署顺序应该是先HDFS和ZooKeeper,然后YARN,最后Spark。 然后,我需要确定是否使用现有的Docker镜像还是自己构建。可能社区已经有一些预配置好的镜像,比如sequenceiq/hadoop-docker,这样可以省去很多配置步骤。过用户可能需要自定义配置,比如修改core-site.xml等文件,这候可能需要自定义Dockerfile。 网络配置也是一个关键点。所有容器需要互相通信,所以使用Docker自定义网络比较合适,通过--network参数指定,确保每个容器都能通过主机名解析到其他容器。 数据持久化方面,HDFS的数据需要持久化,否则容器停止后数据会丢失。所以需要挂载volume,比如使用-v参数将本地目录挂载到容器的/data目录。 对于ZooKeeper,单节点可能够可靠,但如果是测试环境的话可以接受。如果是生产环境可能需要多个节点,但用户的问题可能更偏向于测试用途。 YARN的配置需要指向HDFS和ZooKeeper,所以需要确保在启动YARN容器,配置文件中正确设置了HDFS的地址和ZooKeeper的连接字符串。 Spark运行在YARN上,所以需要配置SPARK_HOME,并且在提交作业指定yarn作为master。可能还需要将Spark安装包放在每个节点上,或者通过共享存储挂载。 另外,可能需要处理端口映射,比如HDFS的50070,YARN的8088,Spark的8080等,方便用户访问Web界面进行监控。 还需要考虑容器的启动顺序,确保HDFS和ZooKeeper先启动,再启动YARN,最后启动Spark。可能需要使用docker-compose来编排服务,这样可以一键启动所有服务,并定义依赖关系。 可能遇到的问题包括容器间的网络通,配置文件中的主机名错误,端口没有正确映射,或者数据卷权限问题。需要提醒用户检查这些点,比如使用docker network inspect查看网络配置,或者进入容器内部检查配置文件。 总结下来,步骤大致是:创建Docker网络,启动HDFS和ZooKeeper容器,配置YARN并启动,然后配置Spark以使用YARN作为资源管理器,最后测试集群是否正常工作。可能还需要给出示例的docker-compose.yml文件和配置文件的修改示例,帮助用户更好地理解如何操作。 </think>在Docker上部署HDFS、ZooKeeper、YARNSpark集群的步骤如下: ### 1. 创建Docker网络 ```bash docker network create hadoop-network ``` ### 2. 部署ZooKeeper ```bash docker run -d \ --name zookeeper \ --network hadoop-network \ -p 2181:2181 \ zookeeper:latest ``` ### 3. 部署HDFS(使用Hadoop镜像) ```bash docker run -d \ --name hadoop-master \ --network hadoop-network \ -p 9000:9000 -p 50070:50070 \ -e "CLUSTER_NAME=hadoop-cluster" \ -e "HDFS_CONF_dfs_replication=1" \ bde2020/hadoop-base:latest ``` ### 4. 部署YARN ```bash docker run -d \ --name yarn-master \ --network hadoop-network \ -p 8088:8088 \ -e "HADOOP_MASTER=hadoop-master" \ bde2020/hadoop-yarn:latest ``` ### 5. 部署Spark(基于YARN模式) ```bash docker run -d \ --name spark-worker \ --network hadoop-network \ -p 8080:8080 \ -e "SPARK_MASTER=yarn" \ -e "HADOOP_MASTER=hadoop-master" \ bde2020/spark:latest ``` ### 6. 验证集群状态 - **HDFS Web UI**: `http://localhost:50070` - **YARN Web UI**: `http://localhost:8088` - **Spark Web UI**: `http://localhost:8080` ### 7. 提交Spark作业示例 ```bash docker exec -it spark-worker spark-submit \ --master yarn \ --deploy-mode cluster \ /path/to/your-application.jar ``` --- ### 注意事项 1. **配置文件同步**:需确保所有容器的`core-site.xml`、`hdfs-site.xml`、`yarn-site.xml`配置一致。 2. **数据持久化**:通过`-v /宿主机/目录:/容器目录`实现HDFS/YARN数据持久化。 3. **资源限制**:根据硬件性能调整`yarn-site.xml`中的内存和CPU参数。 4. **多节点扩展**:可通过Docker Compose或Kubernetes实现多节点集群。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值