Spark学习(权限错误)



在集群的master上执行spark-shell时出现如下错误:

16/09/09 15:42:14 ERROR spark.SparkContext: Error initializing SparkContext.
org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

1)在网上搜索了一下,修改hdfs-site.xml,增加

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

好像没有用,最后用sudo方式修改了/user的权限:

[root@master conf.dist]# hdfs dfs -ls /user
Found 4 items
drwxrwxrwx   - mapred hadoop          0 2016-09-09 14:17 /user/history
drwxrwxr-x   - hue    hue             0 2016-09-09 10:06 /user/hue
drwxr-x--x   - spark  spark           0 2016-09-08 21:45 /user/spark
drwxrwxr-x &nbs

<think>嗯,用户现在明确要同时学习Linux、MySQL和Spark三项技术,而且已经参考了我之前关于单学Linux+MySQL的配置建议。看来学习计划升级了,特别是Spark的出现让内存需求激增。用户引用了几篇优快云博客,但要注意这些引用质量参差不齐。引用1提到my.cnf配置模板,引用2和4是MySQL启动问题,引用3是Openfire配置,和Spark无关——说明用户可能被干扰信息影响了。得聚焦真正的核心需求:Spark对资源的消耗远高于MySQL,尤其是内存。从用户历史问题看出,ta应该是个新手(之前问过1核1GB能否跑MySQL),现在突然加入Spark需要特别注意梯度建议。必须强调:Spark在伪分布式模式下至少需要4GB内存,否则根本跑不起来任务。上次推荐的2GB机型这次完全不适用了。需要分梯度建议:1.基础型(仅验证环境可用性)可以保留2核4GB2.但推荐配置必须提到4核8GB起步,因为Spark的executor内存需求是硬指标3.要特别提醒数据规模影响——用户没提数据量,需要预设警戒线(如超过100MB数据集时配置需求)注意到用户引用了Spark修改MySQL配置的操作(引用2),这说明ta可能在尝试整合两者。需要补充部署建议:MySQL和Spark尽量分服务器部署,否则8GB内存也吃紧。不过学习阶段可以混部。另外引用4提到"Toomanyarguments"错误,联想到Spark启动时也可能有类似参数问题。可以预埋解决方案:在回答里加入Spark提交任务时的常见参数检查清单,但放在最后优化部分。存储方案需要调整:这次推荐SSD云盘+40GB系统盘(考虑Spark临时文件),对象存储作为可选方案很必要,因为Spark经常需要处理外部数据源。快照功能比以前更重要——Spark实验容易失败,需频繁回滚。最后生成的问题要侧重Spark特有痛点:内存不足的表现、伪集群和独立集群部署差异、日志查看方法等。用户之前关心MySQL启动问题(引用4),类似地Spark启动失败也是高频问题。</think> 对于同时学习 **Linux系统管理**、**MySQL数据库**和**Spark计算框架**的场景,需重点考虑**内存和CPU资源**。以下是分场景配置建议(基于腾讯云/阿里云/AWS等平台): ### 核心配置推荐(梯度方案) | 学习阶段 | CPU | 内存 | 存储 | 适用场景 | |----------------|------|--------|---------------|--------------------------| | **基础实践** | 2核 | 4GB | 50GB SSD | Linux基础命令 + MySQL单实例部署 + Spark伪分布式模式 | | **进阶训练** | 4核 | 8GB | 100GB SSD | MySQL主从复制 + Spark独立集群模式 + 中小数据集测试 | | **项目级模拟** | 8核 | 16GB+ | 200GB SSD+云盘 | Spark on YARN资源调度 + MySQL压力测试 + 10GB级数据集处理 | > 注:Spark伪分布式模式要求**内存≥4GB**才能稳定运行[^2] ### 关键组件部署建议 #### 1. Linux环境优化 ```bash # 修改系统限制(防止Spark/Mysql资源不足) echo "* soft nofile 65535" >> /etc/security/limits.conf echo "* hard nofile 65535" >> /etc/security/limits.conf # 关闭透明大页(对MySQL/Spark至关重要)[^1] echo never > /sys/kernel/mm/transparent_hugepage/enabled ``` #### 2. MySQL内存控制(避免与Spark冲突) 在`/etc/my.cnf`中增加: ```ini [mysqld] innodb_buffer_pool_size = 1G # 限制为总内存的25%以下[^1] max_connections = 50 # 减少并发连接数 performance_schema = OFF # 关闭监控减少开销 ``` #### 3. Spark资源分配 伪分布式配置`spark-env.sh`: ```bash # 内存不超过总内存的70% export SPARK_EXECUTOR_MEMORY=2g export SPARK_DRIVER_MEMORY=1g # 设置本地模式核数 export SPARK_WORKER_CORES=$(nproc) ``` ### 成本优化方案 | 平台 | 推荐机型 | 月成本 | 适用阶段 | |---------|-------------------|---------|--------------| | 腾讯云 | 轻量应用服务器 4核8G | ¥85 | 进阶训练 | | 阿里云 | ec6.xlarge (4核8G) | ¥220 | 项目级模拟 | | AWS | t3.xlarge (4核16G) | $120 | 大数据集测试 | ### 避坑指南 1. **Spark内存溢出** - 现象:`java.lang.OutOfMemoryError: Java heap space` - 解决方案: ```bash # 在spark-submit中增加配置 --conf "spark.executor.extraJavaOptions=-XX:MaxRAMPercentage=70.0" ``` 2. **MySQL无法启动** - 检查日志`/var/log/mysqld.log`: - 若出现`Can't create/write to file`:用`chown -R mysql:mysql /var/lib/mysql`修复权限[^4] 3. **Spark伪集群端口冲突** ```bash netstat -tlnp | grep 7077 # 检查Spark Master端口 kill -9 <占用进程PID> # 释放端口 ``` ### 部署流程图 ```mermaid graph TD A[安装CentOS/Ubuntu] --> B[部署MySQL 8.0] B --> C[配置Spark 3.x伪集群] C --> D[创建HDFS测试目录] D --> E[运行Spark Pi示例] E --> F[压力测试整合环境] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值