Spark修炼之道(基础篇)——Linux大数据开发基础:第七节:进程管理

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本节主要内容进程管理简介进程管理常用命令计划任务1. 进程管理简介(1)进程概念进程是操作系统中非常重要的一个概念,进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程,例如://ps命令列出当前所有对应当前用户的活动进程xtwy@ubuntu:~$ ps

本节主要内容

  1. 进程管理简介
  2. 进程管理常用命令
  3. 计划任务

1. 进程管理简介

(1)进程概念

进程是操作系统中非常重要的一个概念,进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程,例如:

//ps命令列出当前所有对应当前用户的活动进程
xtwy@ubuntu:~$ ps
  PID TTY          TIME CMD
 2087 pts/0    00:00:00 bash
 2105 pts/0    00:00:00 ps
xtwy@ubuntu:~$ bash
//一个bash程序对应多个进程
xtwy@ubuntu:~$ ps
  PID TTY          TIME CMD
 2087 pts/0    00:00:00 bash
 2141 pts/0    00:00:00 bash
 2156 pts/0    00:00:00 ps

子进程与父进程:一个进程产生另外一个进程,产生的进程称为子进程,生成另外一个进程的进程称为父进程。

//ps -l显示长格式进程信息
//其中PID表示进程ID,PPID表示其父进程ID
xtwy@ubuntu:~$ ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  2087  2085  0  80   0 -  1443 wait   pts/0    00:00:00 bash
0 S  1000  2141  2087  0  80   0 -  1443 wait   pts/0    00:00:00 bash

(2)进程状态

进程状态总体来看主要包括三种,分别是就绪状态、运行状态、等待状态,就绪状态指的是进程除了CPU资源,其他运行资源都已获得,当就就绪状态的进程得到CPU资源时,则进入进程进入运行状态,运行状态的进程在时间片用完后会重新转换成就绪状态,如果在运行时进程遇到IO等阻塞操作,则进程会进入等待状态,等待状态的进程当阻塞操作完成后,进程将进入就绪状态
这里写图片描述

上述三种进程状态还可以进一步细化,如下图:
这里写图片描述

(3)前台进程与后台进程

前台进程指的是进程在执行时会将命令行阻塞,直到进程执行完毕;后台进程指的是进程在执行时不会阻塞当前命令行,而是在系统后台执行。

//直接ping,作为前台进程执行
root@ubuntu:~# ping www.baidu.com 
PING www.a.shifen.com (115.239.211.112) 56(84) bytes of data.
64 bytes from 115.239.211.112: icmp_seq=1 ttl=128 time=4.50 ms

//加&符号表示作为后台进程进行执行
root@ubuntu:~# ping www.baidu.com -a &
[1] 13330

2. 进程管理常用命令

(1) ps命令

  ps 命令常用选项包括:
  (1)a显示所有用户的进程
  (2)u显示用户名和启动时间
  (3)x显示所有进程,包括没有控制终端的进程
  (4)e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略
  (5)l显示进程详细信息,按长格式显示

下面给出几个演示:
(1)ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息

这里写图片描述

(2) ps -aux 显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息
这里写图片描述

输出格式中对应字段含义:
USER: 进程所有者
PID: 进程号
%CPU: CPU占用率
%MEM: 内存占用率
VSZ:表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
RSS:指明了当前实际占用了多少内存;
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该进程程的状态,有以下值
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的进程
N: 低优先序的进程
L: 有记忆体分页分配并锁在记忆体内
START: 进程开始时间
TIME: 执行的时间
COMMAND:所执行的指令

(3) ps -l 按长格式显示进程详细信息
这里写图片描述

输出格式对应字段含义:
F 进程的标志, 
S 进程的状态, 
PID 进程的ID, 
PPID 进程的父进程ID,
C 进程的CPU占用率, 
PRI 进程的优先权,
NI 进程的Nice值,
ADDR 进程的地址空间,
SZ 进程占用内存的大小,
WCHAN 进程当前是否在运行,
TTY 进程所属终端,
Time 进程的运行时间,
CMD 进程的命令.

(2) kill 命令

有时候某个进程可能会长期占用CPU资源或无法正常执行或超出运行时间等,此时可能希望人工干预直接将进程杀死,这时候kill命令可以派上用场。

(1)kill pid,关闭进程
有时间kill并不能保证一定会关闭某个进程,例如
这里写图片描述
此时可以采用强制关闭的方式
(2)kill -9 pid,强制关闭进程
下面给出了强制进程的演示
这里写图片描述

这里写图片描述
强制关闭进程后,终端强制退出
这里写图片描述

(3) renice 修改进程的优先级

root@ubuntu:/home/xtwy# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 12331 12306  0  99  19 -  1120 wait   pts/0    00:00:00 su
0 S     0 12340 12331  0  99  19 -  1144 wait   pts/0    00:00:00 bash
4 R     0 12368 12340  0  99  19 -   625 -      pts/0    00:00:00 ps
//重新指定权限
root@ubuntu:/home/xtwy# renice -5 12340
12340: old priority 19, new priority -5
//子进程的权限随父进程权限改变而改变
root@ubuntu:/home/xtwy# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 12331 12306  0  99  19 -  1120 wait   pts/0    00:00:00 su
0 S     0 12340 12331  0  75  -5 -  1144 wait   pts/0    00:00:00 bash
4 R     0 12373 12340  0  75  -5 -   625 -      pts/0    00:00:00 ps

(4) 进程的前台后台切换

(1)ctr+c命令终止进程
ping baidu.com -a 命令将一直执行,终端被占用,要终止进程,需要使用ctr+c命令终止当前进程执行

root@ubuntu:/home/xtwy# ping baidu.com -a 
PING baidu.com (180.149.132.47) 56(84) bytes of data.

^C64 bytes from 180.149.132.47: icmp_seq=1 ttl=128 time=138 ms

--- baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 138.291/138.291/138.291/0.000 ms

(2)ctr+z命令挂起进程

root@ubuntu:/home/xtwy# ping baidu.com -a 
PING baidu.com (180.149.132.47) 56(84) bytes of data.
^Z
[1]+  Stopped                 ping baidu.com -a
root@ubuntu:/home/xtwy# jobs
[1]+  Stopped                 ping baidu.com -a

(3)fg命令将进程转到前台执行

root@ubuntu:/home/xtwy# fg
ping baidu.com -a
64 bytes from 180.149.132.47: icmp_seq=2 ttl=128 time=135 ms
64 bytes from 180.149.132.47: icmp_seq=3 ttl=128 time=139 ms
64 bytes from 180.149.132.47: icmp_seq=4 ttl=128 time=135 ms
^Z
[1]+  Stopped                 ping baidu.com -a

(4) bg命令将进程转到后台执行

root@ubuntu:/home/xtwy# bg
[1]+ ping baidu.com -a &
root@ubuntu:/home/xtwy# 64 bytes from 180.149.132.47: icmp_seq=5 ttl=128 time=134 ms
jobs64 bytes from 180.149.132.47: icmp_seq=6 ttl=128 time=135 ms

[1]+  Running                 ping baidu.com -a &

(5)jobs命令查看任务

root@ubuntu:/home/xtwy# jobs
[1]+  Running                 ping baidu.com -a &

(5) top命令动态显示进程信息

top命令动态显示进程信息,可以对进程的CPU、内存使用情况进行动态监测
这里写图片描述

(6) pstree显示进程树

将进程间的关系以树结构的形式展示

这里写图片描述

3. 计划任务的设定

(1) at命令安排作业在某一时刻执行一次

at命令指定时间的方式
绝对计时方法:
hh:mm MM/DD/YY
相对计时方法:
now+n minutes
mow+n hours
now+n days

//5分钟后执行echo "hello" > /home/xtwy/hellohello.txt
xtwy@ubuntu:~$  at now+5 minutes
warning: commands will be executed using /bin/sh
at> echo "hello" > /home/xtwy/hellohello.txt
at> <EOT>
job 1 at Tue Sep  1 07:21:00 2015
//查看进程是否启动
xtwy@ubuntu:~$ at -l
1   Tue Sep  1 07:21:00 2015 a xtwy

(2)crontab周期性运行作业

crontab 常用选项如下:
-l   显示当前的crontab
-r   删除当前的crontab
-e   使用编辑器编辑当前crontab文件

采用crontab -e 命令进入计划任务编辑状态,时间及脚本设置格式如下:
分钟    小时   天    月    星期   命令/脚本

例如在每周五下午6点关机,其命令设置如下:
分钟   小时    天   月    星期    命令/脚本
00     18      *    *    5    /usr/bin/shudown -h now

操作方法:
//显示当前的计划任务
xtwy@ubuntu:~$ crontab -l
no crontab for xtwy

//进入计划任务编辑状态
xtwy@ubuntu:~$ crontab -e 
no crontab for xtwy - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny

Choose 1-4 [2]: 3
crontab: installing new crontab

//设置完成后再进行计划任务的查看
xtwy@ubuntu:~$ crontab -l
# m h  dom mon dow   command
30 9 * * 1-5 echo "test crontab" >> test.txt

通过下面方式进行查看计划:
xtwy@ubuntu:~$ cd /var/spool/cron
xtwy@ubuntu:/var/spool/cron$ ls
atjobs  atspool  crontabs
//crontabs目录只有root用户才能查看
xtwy@ubuntu:/var/spool/cron$ cd crontabs/
bash: cd: crontabs/: Permission denied
xtwy@ubuntu:/var/spool/cron$ su root
Password: 
root@ubuntu:/var/spool/cron# cd crontabs/
root@ubuntu:/var/spool/cron/crontabs# ls
xtwy
root@ubuntu:/var/spool/cron/crontabs# ls -l
total 4
-rw------- 1 xtwy crontab 275 2015-09-01 17:45 xtwy
root@ubuntu:/var/spool/cron/crontabs# cat xtwy 
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.qUgCZF/crontab installed on Tue Sep  1 17:45:15 2015)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
# m h  dom mon dow   command
30 9 * * 1-5 echo "test crontab" >> test.txt

添加公众微信号,可以了解更多最新Spark、Scala相关技术资讯
这里写图片描述

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
21天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何开发ODPS Spark任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
109 3
|
8天前
|
机器学习/深度学习 分布式计算 大数据
Spark 适合解决多种类型的大数据处理问题
【9月更文挑战第1天】Spark 适合解决多种类型的大数据处理问题
20 3
|
12天前
|
分布式计算 大数据 Apache
跨越界限:当.NET遇上Apache Spark,大数据世界的新篇章如何谱写?
【8月更文挑战第28天】随着信息时代的发展,大数据已成为推动企业决策、科研与技术创新的关键力量。Apache Spark凭借其卓越的分布式计算能力和多功能数据处理特性,在大数据领域占据重要地位。然而,对于.NET开发者而言,如何在Spark生态中发挥自身优势成为一个新课题。为此,微软与Apache Spark社区共同推出了.NET for Apache Spark,使开发者能用C#、F#等语言编写Spark应用,不仅保留了Spark的强大功能,还融合了.NET的强类型系统、丰富库支持及良好跨平台能力,极大地降低了学习门槛并拓展了.NET的应用范围。
28 3
|
17天前
|
分布式计算 大数据 数据处理
Apache Spark的应用与优势:解锁大数据处理的无限潜能
【8月更文挑战第23天】Apache Spark以其卓越的性能、易用性、通用性、弹性与可扩展性以及丰富的生态系统,在大数据处理领域展现出了强大的竞争力和广泛的应用前景。随着大数据技术的不断发展和普及,Spark必将成为企业实现数字化转型和业务创新的重要工具。未来,我们有理由相信,Spark将继续引领大数据处理技术的发展潮流,为企业创造更大的价值。
|
1天前
|
SQL 分布式计算 大数据
代码编码原则和规范大数据开发
此文档详细规定了SQL代码的编写规范,包括代码的清晰度,执行效率,以及注释的必要性。它强调所有SQL关键字需统一使用大写或小写,并禁止使用select *操作。此外,还规定了代码头部的信息模板,字段排列方式,INSERT, SELECT子句的格式,运算符的使用,CASE语句编写规则,查询嵌套规范,表别名定义,以及SQL注释的添加方法。这些规则有助于提升代码的可读性和可维护性。
|
1天前
|
SQL 分布式计算 大数据
大数据开发SQL代码编码原则和规范
这段SQL编码原则强调代码的功能完整性、清晰度、执行效率及可读性,通过统一关键词大小写、缩进量以及禁止使用模糊操作如select *等手段提升代码质量。此外,SQL编码规范还详细规定了代码头部信息、字段与子句排列、运算符前后间隔、CASE语句编写、查询嵌套、表别名定义以及SQL注释的具体要求,确保代码的一致性和维护性。
|
8天前
|
Java Spring API
Spring框架与GraphQL的史诗级碰撞:颠覆传统,重塑API开发的未来传奇!
【8月更文挑战第31天】《Spring框架与GraphQL:构建现代API》介绍了如何结合Spring框架与GraphQL构建高效、灵活的API。首先通过引入`spring-boot-starter-data-graphql`等依赖支持GraphQL,然后定义查询和类型,利用`@GraphQLQuery`等注解实现具体功能。Spring的依赖注入和事务管理进一步增强了GraphQL服务的能力。示例展示了从查询到突变的具体实现,证明了Spring与GraphQL结合的强大潜力,适合现代API设计与开发。
21 0
|
1月前
|
分布式计算 Hadoop 大数据
Spark 与 Hadoop 的大数据之战:一场惊心动魄的技术较量,决定数据处理的霸权归属!
【8月更文挑战第7天】无论是 Spark 的高效内存计算,还是 Hadoop 的大规模数据存储和处理能力,它们都为大数据的发展做出了重要贡献。
60 2