公司的服务器怎么个事,服务器是什么东西
通俗讲:服务器=公司里专门“干活/提供服务”的电脑。和你笔记本一样也是计算机,但更稳定、一直开机、通常在机房/云上,给内部同事或系统用。
一张脑内地图
你电脑 →(VPN / 跳板机)→ 登录服务器 → 运行脚本/任务
服务器再去连:数据库、存储(HDFS/MinIO/NAS)、消息(Kafka/Redis)、计算集群(Spark/YARN/K8s)、调度器(DolphinScheduler)
服务器都有哪些“形态”
物理机(裸金属):真正的一台大电脑(机房里的铁盒子)。
虚拟机(VM):在物理机上“切”出来的多台逻辑机器(常见:KVM/VMware)。
容器:更轻量的运行环境(Docker/K8s 里跑的一个进程组)。
云服务器:公有云提供的 VM/容器(本质还是上面几种)。
常见“角色”
应用/任务节点:跑你的脚本、DolphinScheduler 的 worker、API 等。
数据库:MySQL/Postgres/ClickHouse,用来存表、查 SQL。
大数据计算:Spark/YARN/Presto/Flink,做分布式算子。
存储:HDFS、MinIO、NAS(共享盘)。
消息与缓存:Kafka、RabbitMQ、Redis。
监控与日志:Prometheus/Grafana、ELK(Elastic+Kibana)。
你如何跟它打交道(跟你现在工作强相关)
进得去:先连 VPN,再过 跳板机/堡垒机,再
ssh user@host
到目标服务器。身份与权限:
系统层:Linux 用户/组、
sudo
、目录读写(ls -l
看权限)。应用层:Dolphin 权限、数据库账户、对象存储桶权限等。
跑任务的几种方式:
DolphinScheduler:你点“运行”,它会在 某个 worker 节点 以指定 Linux 用户拉起你的 SQL/Shell/Spark 任务。日志在
/data/dolphinscheduler/.../logs/...
(你截图里那种路径)。SQL 节点:只需要能连上对应 数据库,不需要 Spark。
Spark 节点:需要机器上有
JAVA_HOME
、SPARK_HOME
、集群配置(YARN/K8s/Standalone)。如果你用的是 Spark 任务类型而那台机器没装/没配好 Spark,就会跑不起来。
怎么看“到底在哪台机、什么环境”(30 秒自检):
hostname -f # 我在哪台主机 whoami # 我是谁 pwd # 我在哪个目录 cat /etc/os-release # 系统版本 java -version # 有没有 Java(跑 Spark 必备) spark-submit --version # 有没有 Spark(若报错=可能未装/未入 PATH) which python && python -V echo $PATH
传文件/拿日志:
scp
/rsync
,或挂载共享盘。会话别掉线:长任务用
tmux
/screen
,即使断网也不丢进程。资源自查:
htop
、free -h
、df -h
、nproc
、ulimit -a
。
为啥“我数据源是 SQL,却有人让装 Spark?”
只有当你选择了 Spark/Flink 这类“分布式计算节点” 才需要装并配置它们。
纯 SQL 节点 不需要 Spark,但需要能连上对应 数据库实例(host、port、账号、库、表权限)。
很多公司的“公共脚本”/模板可能默认用 Spark,如果你套用了,就会依赖 Spark 环境(即便只是在里头做了点简单转换)。
环境与权限的三层理解
OS 层:能不能登录、能不能读写某个目录、能不能
sudo
。网络层:能不能从这台机连到那台库(端口是否放行、是否需要走代理)。
应用层:Dolphin 的项目/任务可见性、数据库的
SELECT/INSERT
权限、对象存储桶的读写策略。
你在公司常会遇到的坑
以为“服务器=一台机器”,实际是一片集群(登上登录机≠跑任务的执行机)。
环境不一致:登录机有
python3.10
,worker 节点只有3.8
;你本地能跑,线上不行。路径/权限:把输出写到你没权限的目录,任务就“成功但没数据”。
没用虚拟环境:系统 Python 被全员共享,依赖打架。
日志看错地方:Dolphin 的“任务成功”只是 Shell 返回码 0;SQL 本身如果没查到数据、或者你用
sleep(...)
之类规避了错误,调度也会判成功。
速查:你现在就能用的小命令
# 1) 我现在这台机有哪些关键信息 hostname -f && whoami && pwd && date # 2) 看任务日志(按你的习惯路径) ls -ltr /data/dolphinscheduler/dpsdata/worker-server/logs | tail tail -n 200 <具体日志文件> # 3) 确认有没有 Spark / Java(仅当你跑 Spark 任务才需要) java -version spark-submit --version # 4) 资源与磁盘 htop # 或 top free -h df -h