1.Linux介绍
Linux 内核最初只是由芬兰人林纳斯·托瓦兹( Linus Torvalds) 在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。 Linux 能运 行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。 Linux 继承 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、 Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等,其中以 centos在企业中使用最广。
2.Centos 安装
1)下载地址
官网下载链接: http://isoredirect.centos.org/centos/7/isos/x86_64/
阿里云站点: http://mirrors.aliyun.com/centos/7/isos/x86_64/
2)安装 VMWARE15.5
参考地址:https://blog.csdn.net/weixin_43921994/article/details/105765088
vmware是一个虚拟化工具,它可以安装在我们windows,然后在 vmware里安装 linux系统
3)在VMWARE中安装linux系统
第一步 :选择创建新的虚拟机
第二步:选择默认典型,下一步
第三步:选择默认的稍后安装操作系统
第四步:选择linux和对应的安装版本
第五步:安装位置选择资源充足的盘
第六步:磁盘大小更改成40G,大数据组件需要较多的存储,资源不充足最少 20G
第七步:完成之后界面
第八步:选择上面虚拟机中的设置修改
#内存:改为 2-4GB(电脑总内存 8GB就每台给 2G,电脑内存 16GB就每台给 4G)
#CPU:可以选择1*2或 2*2核心的配置
#ISO 镜像选择 :一定选择自己准备的ISO镜像的路径
#网络:此处选择 nat模
第九步:选择第一行的install安装
默认进入选型是第二个,用鼠标左键点入进入黑窗口,按键盘的向上键跳到第一行,选择Enter确认安装想要把鼠标跳出黑窗口,按ctrl+alt键
第十步:等待出现这个界面,选择英文即可
第十一步进入配置修改界面
#修改时间,日期,时区选择亚洲上海,选择左上角 done保存退出
#更改安装包的方式,默认 mininal安装代表最小化;更改安装方式为 GNOME desktop(这是桌面化安装生产机房一般采专用此方式 ),完成后左 上角选择 done。
#配置 hosts主机名和网络,此处我们只设置一下 host名字,进入系统后采用命令行的方式修改也可以
我们将host名设置为 node01,选择 apply应用,左上角 done退出。其中 ens33是网卡的名字
第十二步:选择右下角开始安装
第十三步:设置root用户密码和普通用户的密码
#更改 root密码: ********
#设置普通用户名称 test,密码 *********
第十四步:等待安装
第十五步:安装完成,选择reboot重启
#设置 lisense许可证
第十六步:一路next
4)网络配置
选择虚拟网络编辑器
选择 nat模式,然后点击右下角的更改设置
设置子网 IP:192.168.52.0
子网掩码:255.255.255.0
个人电脑网络设置:找到网络连接中的VMnet8
网卡设置:#vim /etc/sysconfig/network-scripts/ifcfg-ens33 进入网卡设置
编辑
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#需编辑
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4f81f256-131f-4fdb-9365-1ae4c7882aa2
DEVICE=ens33
#需编辑
ONBOOT=yes
IPADDR=192.168.52.100
NETMASK=255.255.255.0
GATEWAY=192.168.52.1 DNS1=8.8.8.8
#重启网卡 service network restart
测试网络是否连通外网:ping www.baidu.com
到此 centos7.4安装完成,网络也配置成功
5)Linux远程连接工具
Linux系统中是通过 SSH服务实现的远程登录功能,默认 ssh服 务端口号为 22。Window系统上Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell,XShell等
SecureCRT安装:https://blog.csdn.net/qq_39052513/article/details/100272502
3.Linux文件与目录结构
1)文件
Linux系统中一切皆文件
2)目录结构
4.linux中文本编辑器
vim是从 vi 发展出来的一个文本编辑器 。代码补完、编译及错误跳转等方便编程的功能特别丰富
1.进入插入模式
i: 插入光标前一个字符
I: 插入行首
a: 插入光标后一个字符
A: 插入行未
o: 向下新开一行 ,插入行首
O: 向上新开一行 ,插入行首
2.进入末行模式
在命令模式下 ,用户按 “:”键即可进入末行模式
3.退出
:q 退出
:q! 退出并不保存
:w 保存 :wq 保存并退出
:x 保存并退出
4.查找命令
/: str查找
n: 下一个
N:上一个
5.替换命令
把 abc全部替换成 123
:%s/abc/123/g---末行模式下,将当前文件中的所有 abc替换成 123。如果不使用 g, 则只会替换每一行的第一个 abc
:1, 10s/abc/123/g---末行模式下,将第一行至第 10行之间的 abc替换成 123
6.vim里面执行shell下命令
末行模式里输入 !,后面跟命令
7.进入命令模式
ESC:从插入模式或末行模式进入命令模式
8.移动光标
h: 左移
j: 下移
k: 上移
l: 右移
M: 光标移动到当前屏幕的中间行
L: 光标移动到当前屏幕最后一行行首
gg: 光标移动 文件开头
G: 光标移动到文件末尾
G: 移动到指定行 ,行号 G (扩展:打开文件时跳转指定行 ,vi 文件名 +行数 )
w: 向后一次移动一个字
b: 向前一次移动一个字
{: 按段移动 ,上移
}: 按段移动 ,下移
Ctr-d: 向下翻半屏
Ctr-u: 向上翻半屏
Ctr-f: 向下翻一屏
Ctr-b: 向上翻一屏
9.撤销命令
u: 一步一步撤销
Ctr-r: 反撤销
10.删除命令
x: 删除光标后一个字符 ,相当于 Del
X: 删除光标前一个字符 ,相当于 Backspace
dd: 删除光标所在行 ,n dd 删除指定的行数
D: 删除光标后本行所有内容 ,包含光标所在字符
d0: 删除光标前本行所有内容 ,不包含光标所在字符
dw: 删除光标开始位置的字 ,包含光标所在字符
11.复制粘贴
yy: 复制当前行 ,n yy 复制 n 行
p: 在光标所在位置向下新开辟一行 ,粘贴
12.替换操作
r: 替换当前字符
R: 替换当前行光标后的字符
13.文本行移动
>>: 文本行右移
<<: 文本行左移
14.重复命令
.: 重复上一次操作的命令
15.可视模式
v: 按字符移动 ,选中文本
V: 按行移动 ,选中文本可视模式可以配合 d, y, >>, << 实现对文本块的删除 ,复制 ,左右移动
5.linux常用基本命令
1)基础快捷键
ctrl + c 停止进程
ctrl+l 清屏;彻底清屏是: reset
ctrl + q 退出
善于用 tab键补全 提示 (更重要的是可以防止敲错 )
上下键 查找执行过的命令
ctrl +alt
2)文件命令
#pwd 显示当前工作目录的绝对路径
#ls,ll,ll -a
#cd 进入到某一个目录下
#mkdir 创建文件夹
#rmdir 删除文件夹
#touch 创建文件
#cp 复制文件 /文件夹
#cp -r 递归复制,多级目录
#mv 移动文件 夹/重命名
#rm 删除文件
#rm -rf 强制删除文件不需要确认
#cat 查看文件
#more 查看文件
#less 查看文件
#echo 输出 #head 查看文件头部
#tail 查看文件末尾
#tail -f 实时查看文件末尾
#nl 文件带行号标准输出
# > 覆盖
# >> 追加
#ln -s 目标目录 软链接地址 创建 软链接
rm -rf 软链接地址 删除软连接
ln -snf 新目标目录 软链接地址 修改软连接
# history 查看已经执行过历史命令
3)文本处理类命令
wc [option] [file]...
-l: 统计行数
-c: 统计字节数
-w;统计单词数
tr: 转换字符或删除字符
tr '集合 1' '集合 2'
tr -d '字符集合 '
cut:
-d字符:指定分隔符
-f#: 指定要显示字段
单个数字:一个字段
逗号分隔的多个数字:指定多个离散字段
-:连续字段,如 3-5;
例子:cut test.txt -f "1,3" -d " "------# 以空格分开每一行并输出第 1个和第 3个字段
sort [option] file...
-f: 忽略字符大小写;
-n: 比较数值大小;
-t: 指定分隔符
-k: 指定分隔后进行比较字段
-u: 重复的行,只显示一次;
uniq:移除重复的行
-c:显示每行重复的次数
-d:仅显示重复过的行
-u: 仅显示不曾重复的行
4)系统信息命令
#date 查看当前系统时间
#data -s 修改时间
#w 显示登陆用户
#uname -a 查看系统内核
#cat /proc/cpuinfo 查看 cpu信息
#cat /proc/meminfo 查
5)压缩/解压命令
#tar -xvf file.tar 解压 .tar结尾的
#tar -zxvf file.tar.gz 解压 .tar.gz文件
#tar -cf file.tar file 创建包含 files的文件 file.tar
#gzip -d file.gz 将 file.gz解压缩为 file
6)网络命令
#ping host(主机名 ) 网络是否连通
#telnet ip 端口 网络是否连通
#curl url 调用
#ifconfig 查看本机 ip等信息
#telnet ip 端口 查看端口是否占用
(没有这个命令执行 yum -y install telnet )
#wget file 下载文件
#tcpdump tcp port 端口 抓包 tcp
#hostname 查看主机名
7)权限命令
1.文件权限命令:
#chmod 777 file 为所有用户添加读,写,执行权限
#chmod 755 file 为所有者添加 rwx权限,为组和其他用户添加
rx权限
2.文件所属用户和用户组权限命令:
#chown hadoop:hadoop file 将 file的用户和用户组都改为 hadoop
8)用户管理命令
useradd 用户名 添加新用户
useradd -g 组名 用户名 给某个组创建用户
passwd 用户名 设置用户密码
cat /etc/passwd 查看创建了那些用户
Su 用户名 切换用户
userdel 用户名 删除用户但保存用户主目录
userdel -r 用户名 用户和用户主目录,都删除
whoami 显示自身用户名称
who am i 显示登录用户的用户名
usermod -g 更改用户组 用户名
例子:
2.修改配置文件
[root@hadoop101 ~]#vi /etc/sudoers 修改 /etc/sudoers 文件,找到下面一行 (91行),在 root下面添加一行,
如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoopALL=(ALL) ALL
或者配置成采用 sudo命令时,不需要输入密码
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoopALL=(ALL) NOPASSWD:ALL
修改完毕,现在可以用 hadoop帐号登录,然后用命令 sudo ,即可 获得 root权限进行操作。
9)用户组管理命令
groupadd 组名 添加组
groupdel 组名 删除组
groupmod -n 新组名 老组名 指定工作组的新组名
cat /etc/group 查看创建了哪些组
10)搜索查找命令
1.find查找文件或者目录
常用: find / -name file 查找 /目录下 file文件
2.grep 过滤查找及“ “|”管道符 (详细使用见下一章中的 grepgrep)
1.管道符,“ ,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
2.grep常常跟在 |的后面做过滤查找
3.反转 grep -v
4.示例
#查找某文件在第几行 ls | grep -n test
#查找某进程 ps -ef | grep PID
#查看日志中含有 errer cat file |grep error
3.which 查找命令
white 命令
11)磁盘分区挂载命令
df -h 查看磁盘使用 /剩余空间
fdisk -l 磁盘分区
mount 挂载
umount 卸载
12)进程管理命令
UID 用户 ID
PID 进程 ID
ps aux | grep xxx 查看系统中所有进程
ps -ef | grep xxx 可以查看子父进程之间的关系
kill -9 PID 强制杀死进程
top 查看所有进程 /cpu/内存 /负载
netstat -anp |grep 进程号 查看该进程网络信息
netstat -nlp | grep 端口号 查看网络端口号占用情况
13)crond系统定时任务
Crontab -e 编辑定时文件
参考文档:https://blog.csdn.net/qq_22172133/article/details/81263736
14)rpm包管理与yum管理
1.rpm相关命令:
rpm -qa|grep 包名 查找已经安装的 rpm某包
rpm -ivh 包名 安装 rpm包
rpm -e 包名 删除 rpm包
rpm -e -- nodeps 软件包 删除 rpm包不检查依赖
2.yum源管理:详情见链接文档
https://blog.csdn.net/qingfenggege/article/details/80394564
3.yum在线安装 lrzsz上传下载工具
yum -y install lrzsz
15)ssh免密
1.ssh是什么?
SSH(SecureShell),是建立在应用层基础上的安全协议,其 SSH客户端适用于多种平台,可以有效防止远程管理过程中的信息泄露问题。
2.配置 hadoop用户 ssh免密:
ssh-keygen -t rsa
三台机器在 hadoop用户下,执行以下命令将公钥拷贝到 node01服 务器上面去
ssh-copy-id node01
node01在 hadoop用户下,执行以下命令,将 authorized_keys拷贝 到 node02与 node03服务器
cd /home/hadoop/.ssh/ scp authorized_keys node02:$PWD
scp authorized_keys node03:$PWD
16)防火墙
systemctl stop firewalld.service 关闭防火墙
systemctl status firewalld.service 查看防火墙状态
systemctl disable firewalld.service 禁止开启启动防火墙
6.linux实用故障排查
1)排查思路
大数据集群运行在linux系统上总会遇见各种各样的问题,我们要定位问题,基本从这几个方面入手排查: cpu, 内存,磁盘 IO,网络, GC等。
2) cpu
一些概念:多核,超线程,CPU频率( 2.2GHZ)(节能模式,普通模式,超能模式,bios里设置, 搭集群要注意下这个参数尽量关闭节能模式) bios里可以关闭 。
#1 查看物理 CPU个数
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
#2查看逻辑 cpu个数
cat /proc/cpuinfo |grep "processor"|wc -l
#3 在生产集群中我们通常通过 top来查看 cpu的使用率来判断系统
的负载情况 ,Top 然后按 1,可以看到 cpu的使用率
3)内存
#1,常见内存大小 64 G--- 128G-- 256G--- 512G,通过 free -g来查看系 统内存是否不足
4)磁盘IO
#1磁盘种类:
sata(150M/s左右 ) sas(300 M/S左右) ssd(最快也最贵)一般磁盘 2T-4T,服务器支持的最大存储也不同,比较常见的 48T,一 般服务器可以支持 12-24块盘 。
#2磁盘 io的查看: 可以定位是否是因为 io过大导致性能下降
iostat -mx 2
如果没有这个命令:yum install -y sysstat
#3 df -h 查看磁盘空间
#4 df -T 查看磁盘的格式化的格式,主流一般是 xfs和 ext4,系统盘默认是 xfs,后续添加数据盘尽量也是 xfs格式这样统一比较好,也方便写脚本批量挂盘
#5 lsblk 能够查看盘与分区以及 ssd盘,用 fdisk查看盘可能识别不到ssd
#6 fdisk -l 查看磁盘与未挂载的磁盘和分区信息
#7 cat /etc/fstab 查看磁盘挂载信息,新加磁盘要手动永久挂在需要在这个配置文件里添加, 6列。如果这个文件写错了,重启服务器正常模式下是启动不了的!!!
5)网络
#1 查看是否 ping通:ping IP
#2 查看某端口是否被监听
示例:比如你起启动datanode没有启动,查看日志报错: Address in used ,翻译过来就是端口被占用,那你得查看下这个端口被哪个程序占用了,就用 netatat -anp|grep 端口号,就可以知道它的进程,比如下图进程pid就是 107484,就可以用 kill -9 PID强制杀死
#3网卡模式配置( bound6,负载均衡
6)系统负载
Top
Uptime
W
cat /proc/loadavg
7)GC问题
#1是否 full GC(GC是 java里面 JVM的东西,不了解的可以去看下)
Jps查出要查看的 pid,用 jstat -gcutil pid,看第四列 O如果 100%就是 fullGC
8)日志查看
#1首先要知道日志的位置 ,一种是去配置文件查看有没有配置相关位置,一种是去通过进程查看如下 用 ps -ef |grep pid通过显示出来的信息可以找到日志的位置 。
# 2查看日志
实时查看日志文件后100行: tail -f 100 file
静态查看:vim filelog,然后 可以通过关键字 error/warn等查
7.linux运维之生产监控工具
1.zabbix:https://blog.51cto.com/u_14154700/2419934
2.nagios(网络监控):https://www.cnblogs.com/52-qq/p/9773880.html
3.Prometheus(普罗米修斯 ):https://blog.csdn.net/csolo/article/details/82460539
4.ganglia (hadoop集群监控常用工具):https://www.cnblogs.com/marility/p/9444357.html
8.自动化运维工具ansible与pdsh
https://www.cnblogs.com/keerya/p/7987886.html#_label2_0_1
https://blog.csdn.net/weixin_42193400/article/details/82148974
9.并行管理工具 pdsh与 pssh
相关文档:https://www.cnblogs.com/goldenblade/p/9604642.html
10.linux知识点扩展
1)运行级别
运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
运行级别 1:单用户工作状态 root权限,用于系统维护,禁止远程登陆运行级别
2:多用户状态 (没有 NFS) 运行级别
3:完全的多用户状态 (有 NFS),登陆后进入控制台命令行模式运行级别
4:系统未使用,保留运行级别
5:X11控制台,登陆后进入图形 GUI模式 运行级别 6:系统正常关闭并重启,默认运行级别不设为
6,否则不能正常启动
2)运行级别原理
1.在目录 /etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)
2.在/etc/rc.d下有 7个名为 rcN.d的目录,对应系统的 7个运行级别
3.rcN.d目录下都是一些符号链接文件,这些链接文件都指向 init.d目 录下的 service脚本文件,命名规则为 K+nn+服务名或 S+nn+服务名,其中 nn为两位数字。
4。系统会根据指定的运行级别进入对应的 rcN.d目录,并按照文件名顺序检索目录下的链接文件
对于以 K开头的文件,系统将终止对应的服务对于以 S开头的文件,系统将启动对应的服务
5。查看运行级别用: runlevel
6。进入其它运行级别用: init N
7。另外 init0为关机, init 6为重启系统
由于现在的 Linux系统安装完后就运行在第 5个级别,即系统启动后直接进入图形界面,而不用在字符模式下登录后用 startx或者 xinit 来起动图形界面。建议在系统安装完成后把系统的默认运行等级设置在第 3级,在字符终端登录后,再手工输入 startx 命令起动图 形界面。可以用如下的方法修改:
用文本编辑器修改 /etc/inittab文件:
把代码 : id:5:initdefault:这一行,修改成代码 : id:3:initdefault:保存后就 reboot重起,系统就默认起动到字符界面。不同运行级别之间的 差别的在于系 统默认起动的服务的不同,如运行级别 3默认不启动 X图形界面服务,而运行级别 5 却默认起动。
本质上是没有区别的,更无所谓不同级别间功能强弱的问题。用户完全可自给定义不同级别的默认服务。在任何运行级别,用户都可用 init 命令来切换到其他运行级别。
3)开机过程
通电 ->BIOS->MBR->GRUB->Kernel->/sbin/init->Runlevel
1.BIOS
BIOS: Basic Input/Output System 执行系统完整性检查,从软盘,光盘,硬盘中查找 boot loader(取决与你的启动顺序)BIOS的主要功能就是搜索并加载执行 MBR boot loader程序
2.MBR
MBR: Master Boot Record. MBR位于主盘的第一快扇区,如 :/dev/hda或者 /dev/sda.MBR共 512bytes. 1-446bytes存放主要的 boot loader信息, 447~510bytes存放 分区表信息,最后 2个 bytes存放 mbr验证信息。MBR包含 GRUB信息。(或者 LILO信息) MBR 的主要功能就是加载并执行 GRUB boot loader。
3.GRUB
GRUB:Grand Unified Bootloader. 如果你有多个 kernel p_w_picpaths安装在你的系统中,你可以通过GRUB选择那个被执行。GRUB启动的时候会有个选择界面,几秒钟没有任何输入的话,将会
加载你 GRUB配置文件中指定的默认 kernel p_w_picpath 。
GRUB的配置文件:/boot/grub/grub.conf (/etc/grub.conf is a link to this).
GRUB 的主要功能就是加载并执行 Kernel and initrd p_w_picpaths.
4.Kernel
挂载 grub.conf 中指定 “root=” 的根目录
执行 /sbin/init 程序 因为 /sbin/init 是 LINUX kernel执行的第一程序,理所当然 /sbin/init 的 PID为 1. ‘ps -ef | grep init’ 命令可以验证 .
initrd: Initial RAM Disk. 在 kernel完全起来, root文件系统被挂载之前, initrd被 kernel当做 临时 root文件系统。当然 initrd还包含了一些编译好的驱动,这些驱动用来在启动的时候访问硬件。
5.Init
查看 /etc/inittab配置文件来决定 Linux的运行( run level)。
LINUX的运行级别:
0 – halt (关机 )
1 – Single user mode (单用户模式 )
2 – Multiuser, without NFS (多用户模式 ,无网络 )
3 – Full multiuser mode (多用户模式 ,有网络 ,无图形界面 )
4 – unused (没用 ,用户自定义 )
5 – X11 (多用户模式 ,有网络 ,有图形界面 )
6– reboot (重启 )
Init从/etc/inittab配置文件中得到默认启动级别,然后加载并执行相应级别的程序 . 执行 ‘grep initdefault /etc/inittab’ 命令可得到你系统的默认启动级别 。
6.Runlevel programs
当 LINUX系统启动完成后,你会发现许多的服务进程也启动了,例如:“starting sendmail …. OK”. 这些服务程序都放在相应 LINUX系 统启动级别的文件夹下面。根据你 LINUX默认启动级别,系统将会执行以下其中一个文件架下面的服务程序:
Run level 0 – /etc/rc.d/rc0.d/
Run level 1 – /etc/rc.d/rc1.d/
Run level 2 – /etc/rc.d/rc2.d/
Run level 3 – /etc/rc.d/rc3.d/
Run level 4 – /etc/rc.d/rc4.d/
Run level 5 – /etc/rc.d/rc5.d/
Run level 6 – /etc/rc.d/rc6.d/
11.linux的零拷贝
参考文档:https://www.cnblogs.com/skying555/p/11122072.html
“零拷贝 ” 描述的是 CPU不执行拷贝数据从一块内存区域到另一块区域的任务的计算机操作。它通常用于在网络上传输文件时节省 CPU周期和内存带宽。简单来说,零拷贝就是一种避免 CPU 将数据从一 块存储拷贝到另外一块存储的技术。
“零拷贝 ”正是通过消除这些 多余的拷贝来提升性能的 。在数据传输的过程中, 避免数据在内核空间缓冲区和用户空间缓冲区之间进行拷贝 ,以及数据在内核空间缓冲区内的 CPU拷贝 。