whatis 加其他命令=查看其他命令用法
pwd 返回当前工作目录
ls列出当前目录内容,有哪些文件
ls -l 显示详细信息 ll
ls -l -a 显示隐藏文件(以.开头)
ls -l -a -h
cd + 目录名 进文件
cd.. 返回上级目录
pwd 显示当前目录
cp复制 文件 cp a.txt b.txt
文件夹(目录)cp -r
less 当终端有大量内容输出时可帮助仔细查看
head -n 2 a.txt 查看开头两行
tail -n 2 a.txt 查看结尾两行
find *. +文件类型 查找同一类型文件
date 查看当前时间
cat a.txt 连接打印文件
cat a.txt b.txt>c.txt a,b合并到c
cal 打印日历
which +命令 展示命令存放位置
whereis
man + 命令 查看命令帮助手册
touch 修改时间戳(文件属性 修改时间和访问时间)
touch a.txt 新建空白文件
top 相当于任务管理器
rm + 文件 删除
rm -r 删除目录
mv a.txt (b.txt目的地) 剪切
mv a.txt ./桌面/b.txt 剪切
mkdir 创建文件夹
linux 文件操作系统
最顶层目录 /
大数据常用centos
环境准备:vmware(vbox)虚拟化软件
关联linux7.x镜像
linux部署
linux :
1.概述
1.为什么要使用linux ?
java、前端、大数据、算法 =》 app 服务器 =》 linux
2.
2.linux 概述:
1.文件操作系统:
层级式的文件操作系统
linux 最顶层目录:/
3.linux版本:
广义 :
ubuntu、小红帽、centos、debian、等 基于linux 内核进行开发
狭义:centos
6.x =》
7.x =》 7.5
4.学习linux ?
1.环境准备:
1.vmware (vbox) 虚拟化的软件
2.关联 linux7.x镜像 即可
5.linux 内核 谁发明?
linux 林纳斯 =》 git
2.部署linux
1.磁盘划分: 60G
/ => 根目录 划分多少磁盘 文件系统选择ext4
/boot =》linux启动的时候 系统自身的资源 1g 文件系统选择ext4
swap =》 内存不足 可以使用 磁盘充当内存 2g 4g 文件系统不做更改还是swap
2.远程连接:
1.ip =》 192.168.10.131
ifconfig =》 网卡 对应的ip ens33
2.port =》 22 1-65535
3.username =》 root
4.passwd =》 123456
xshell
3.linux 基本操作:
[root@sygy10 ~]#
root 登录机器的用户名
root 最高权限用户
sygy10 登录机器的机器名 hostname
~ 登录机器的用户 家目录 【就是一个目录】
家目录:
root =》 /root
xxxx => /home/xxxx
1.基本命令
1.pwd 当前光标所在目录的位置
[root@sygy10 ~]# pwd
/root (/root就是root的家目录)
2.ls 【查看】当前光标所在目录的 下面有什么东西
[root@sygy10 ~]# ls
ls 显示文件夹和文件名字
ls -l 显示文件夹和文件名字 详细信息
drwxr-xr-x. 2 root root 4096 4月 12 18:54 bigdata
权限 用户 大小
ls -l -a 显示文件夹和文件名字 详细信息 显示隐藏文件【 文件或者文件夹 以.开头的文件 】
ls -l -a -h 显示文件大小
进制k,字节?
ls -l <=> ll
为什么等价?
ll -a
ll -a -h
ll -ah
ll -r -t (按操作时间降序排列)
命令帮助:
命令 --help -help -h
[root@sygy10 ~]# ls --help
用法:ls [选项]... [文件]...
[] 可选
... 可以选取多个
uage:
ls [option]...[file]...
ls [options] [files]
3.mkdir 创建文件夹
[root@sygy10 ~]# mkdir bigdata
1.创建串级 文件夹
[root@sygy10 ~]# mkdir -p dir4/dir5/dir6
2.创建并级文件夹
[root@sygy10 ~]# mkdir dir1 dir2 dir3
4.cd 切换目录
[root@sygy10 ~]# cd bigdata
[root@sygy10 bigdata]# pwd
/root/bigdata
目录: 路径
绝对路径:光标从根目录开始路径
相对路径:光标从当前目录开始的路径
./ 当前路径
../ 上一层级路径
相对路径:
[root@sygy10 ~]# cd ./bigdata/
绝对路径:
[root@sygy10 ~]# cd /root/bigdata/
例如:
┍ A文件夹
C -|
┕ B文件夹
绝对路径: C:\A文件夹
相对路径(如果你在A文件夹时): ..\B文件夹 (‘..\’向上一级意思)
1.如何回到家目录: (三种方式)
1.家目录的绝对路径
cd /root
2.cd 回车
3.cd ~
~:
/root
/home/xxx
2. cd - [回到上一次操作命令的目录]
5.创建文件(三种方式)
1.touch xxx
[root@sygy10 bigdata]# touch 1.log
2.vim / vi xxx
[root@sygy10 bigdata]# vim 2.log
3.echo "xxx" > xx.log
echo "xxx" 打印
> 创建或者 覆盖一个文件
>> 追加文件
思考:
如何创建一个空文件? shell
1.touch xxx
2.vim / vi xxx
3.echo "" > xx.log
4. linux 有一个真正的 空文件
/dev/null
[root@sygy10 bigdata]# cat /dev/null > 7.log
done文件是否为空文件有影响吗?
6.vim / vi 编辑文件
vim 三种模式:
1.命令行模式
2.编辑模式
3.尾行模式
windows =》 1.打开文件 2.编写内容 3.退出保存
linux :
1.打开文件 【命令行模式】
[root@sygy10 bigdata]# vim 1.log
2.编写内容 【命令行模式 -》编辑模式 】
键盘输入 i =>insert
3.退出保存
1.【编辑模式 =》命令行模式 】
键盘输入 esc
2.【命令行模式 =》尾行模式 】 退出保存
键盘输入 shift+; => :
退出保存 :
输入指令:
w 保存
q 退出
!强制
补充:
1.命令行模式
1.光标移动
1.gg 首行
2.G 最后一行
3. num +G 指定行
4.shift +^ 行头
5.shift +$ 行尾
2.复制 【p】
1.yy 复制当前光标所在行
2.y num y 复制一段
3.撤回 u
4.删除
1.dd 删除当前光标所在行
2.d num d 删除一段
重点:3.dG 删除当前光标以下所有行
思考:
如何删除文件所有内容?
3.尾行模式:
1.退出保存
wq!
x =》 wq
快捷键 shift +zz
2.查找想要的关键词 :
:/keywords n查找下一个 N 往上查找
3.显示行号:
:set nu
:set nonu
7.查看文件
cat 文件所有内容 全部显示 【 文件比较小】
more 文件的内容 是一页一页显示的 按空格 往下翻 退出 按q ctrl +c ctrl +z
less 文件的内容 是一页一页显示的 按空格 往下翻 上下键 页面一行一行翻
vim 【编辑】
重点:tail 实时监控文件里面最新内容 (原来的内容与显示?)
-f
-F => -f +retry
日志:
app =》 sb an =》 log4j. =>
hadoop =》
namenode.log [100m]
mv namenode.log namenode_1.log
touch namenode.log
namenode.log
namenode_1.log [生产完的日志]
echo "" > namenode.log
cat :
一个日志文件 hadoop_namenode.log 100m :
error ?
cat anaconda.log | grep -A 10 error 后10行
cat anaconda.log | grep -B 10 error 前10行
cat anaconda.log | grep -C 10 error 前后10行
1. | 管道符 前一个命令的结果作为下一个命令的输入
2. grep 过滤出 关键词 所在的行
vim :/error
作业:
1.整理 linux 笔记
博客
基本命令:
1.mv + cp
1.mv 剪切
2.cp 复制
mv =》 文件个数 始终是1分
cp =》 文件个数 始终是2分
1.移动
[root@sygy10 bigdata]# mv 1.log ../1.log
[root@sygy10 bigdata]# cp ~/1.log ./
2.改名字
[root@sygy10 ~]# mv 1.log 1.log_blk
[root@sygy10 ~]# cp 1.log_blk 1.log
标准写法:
mv xx.log bigdata/xx.log
cp xx.log bigdata/xx.log
不标准写法:
mv xx.log bigdata/
cp xx.log bigdata/
2.上传下载
1.xshell 工具
2.命令
linux 安装一个 包 : pip
yum install -y lrzsz
rz 上传
sz 下载
3.xshell 工具(直接把文件拖拽进来)
3.rm 删除文件 或者 文件夹 (高危命令)
1.文件
[root@sygy10 ~]# rm 1.log_blk
rm:是否删除普通文件 "1.log_blk"?y
[root@sygy10 ~]# rm -f jdk-8u212-linux-x64.tar.gz
2.文件夹
[root@sygy10 ~]# rm -r bigdata/
rm:是否进入目录"bigdata/"? y
rm:是否删除普通文件 "bigdata/1.log"?y
rm:是否删除目录 "bigdata/"?y
[root@sygy10 ~]# rm -r -f dir1/
rm -rf xxx [通用的写法]
4. alias (别名)
别名使用:
alias ll='ls -l --color=auto'
alias aa="cd /tmp"
1.使用
[root@sygy10 ~]# alias aa="cd /tmp"
[仅仅当前会话生效]
2.aa 命令 在任何地方都能使用?
1.环境变量
[root@sygy10 tmp]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2.环境变量 配置文件 :
1.全局的 [所用用户都可以使用]
/etc/profile
2.个人的 【只能是当前用用户能使用,其他不能使用】
~/.bashrc
~/.bash_profile
3.生效
source /etc/profile
source ~/.bashrc
source ~/.bash_profile
eg : =》 1.命令 在任何地方都能使用
[root@sygy10 ~]# vim /etc/profile
配置了一个 aa 别名
eg: =》 2。所用用户都可以使用 aa
useradd zs 【创建用户】
su - zs 【切换用户】
[root@sygy10 tmp]# useradd zs
[root@sygy10 tmp]# su - zs
[zs@sygy10 ~]$
[zs@sygy10 ~]$ pwd
/home/zs
[zs@sygy10 ~]$ aa
[zs@sygy10 tmp]$ pwd
/tmp
[zs@sygy10 tmp]$
2.个人的 【只能是当前用用户能使用,其他不能使用】
vim ~/.bashrc
source ~/.bash_profile
5.历史命令
history
mysql =》
mysql -uroot -p
[root@sygy10 ~]# aa_zs
[root@sygy10 tmp]# !281
在MySQL里 mysql -uroot -p(不要在P后面输入密码,不然history之后免密会暴露,要换行输入密码)
123456
6.tab 自动补全的功能
按tab 键 按一次 自动补全 或者 过滤
按tab 键 按二次 过滤
7. 用户相关的命令
1.用户、用户组
1.用户
[root@sygy10 ~]# ll /usr/sbin/user*
-rwxr-x---. 1 root root 118192 11月 6 2016 /usr/sbin/useradd
-rwxr-x---. 1 root root 80360 11月 6 2016 /usr/sbin/userdel
-rwxr-x---. 1 root root 113840 11月 6 2016 /usr/sbin/usermod
2.用户组
[root@sygy10 ~]# ll /usr/sbin/group*
-rwxr-x---. 1 root root 65480 11月 6 2016 /usr/sbin/groupadd
-rwxr-x---. 1 root root 57016 11月 6 2016 /usr/sbin/groupdel
-rwxr-x---. 1 root root 57064 11月 6 2016 /usr/sbin/groupmems
-rwxr-x---. 1 root root 76424 11月 6 2016 /usr/sbin/groupmod
3.创建用户
[root@sygy10 ~]# useradd xinwei
[root@sygy10 ~]# id xinwei(查看)
uid=1002(xinwei) gid=1002(xinwei) 组=1002(xinwei)
用户 用户组 主组
4.创建一个用户:(发生三件事)
1.用户名称 xinwei
2.创建了一个用户组 xinwei
3.创建了一个 家目录 :/home/xinwei
用户 : 用户组 :
主组
附属组
/etc/passwd这个文件用来记录用户信息
1.用户信息 =》文件 记录 [root@sygy10 ~]# vim /etc/passwd
2.用户组信息 =》 文件 记录 [root@sygy10 ~]# vim /etc/group
5.切换用户 su
[root@sygy10 ~]# su - xinwei(建议用带-的)(加-的会去到要切换的用户的家目录)(加上默认执行个人的环境变量)
[root@sygy10 ~]# su xinwei(不加-的,原本目录在哪,就切换到哪)
6.样式丢失
如何解决:
1.-bash-4.2$ cd /etc/skel/
ll -a之后显示隐藏文件,把这些文件都转移到家目录里面样式就恢复了
2.-bash-4.2$ cp ./.* ~(当前目录下的隐藏文件移到家目录下面 )
7.用户组
[root@sygy10 ~]# groupadd bigdata
[root@sygy10 ~]# usermod -a -G bigdata zs(把bigdata组加到zs用户中))
参数(把谁加进去)
需求:
zs 要求 主组是 bigdata ,附属组 zs 也要
1.[root@sygy10 ~]# usermod -g bigdata zs(-g 强行使用某个组作为新主组)
2.[root@sygy10 ~]# usermod -a -G zs zs(-a -G 追加附属组)
8.修改用户的密码 ;
passwd :
1.root /当前用户 : :
[root@sygy10 ~]# passwd zs
9.sudo 普通用户 临时 使用root的最大权限
(临时最大权限 sudo 里面别名alias里 ll不好使)
1.配置文件 /etc/sudoers
zs ALL=(ALL) NOPASSWD: ALL
2. 使用
sudo xx
思考:
sudo su - xxx :
1.命令报不报错 (不)
2.需不需要输入密码 (不需要)
cdh : hdfs yarn hive hbase
su - yarn [切换不了] 改一下,改成是/bin/bash就可以了
su - hive 【有点问题】
/sbin/nologin =》 还有个提示
8.文件权限的命令
1.权限
-rw-r--r--. 1 root root 7 4月 13 13:53 1.log
drwxr-xr-x. 2 root root 4096 4月 12 14:03 dir2
drwxr-xr-x: 10字母 =》 权限
第一字母:
d: 文件夹
-:文件
l:软连接 (windows 快捷方式)
权限:rwxr-xr-x 9个决定的 755
第一组:rwx =》 4+2+1 = 7 所属用户的权限
第二组 r-x =》 4+0+1 = 5 所属用户组的权限
第三组 r-x =》 4+0+1 = 5 其他用户组的权限
权限:
r 读权限 4
w 写权限 2
x 执行权限 1 执行?
- 没权限 0
- rw- r-- r-- =》644
2.修改权限命令 修改文件夹时用 -R
chmod
chmod 646 ./1.log
3.chown 改变 所属者
[root@sygy10 tmp]# chown zs:zs 1.log
9.其他命令:
1.查找文件:
1.find
[root@sygy10 ~]# find / -name "*1.log*"
2.locate
[root@sygy13 ~]# locate dir1
/root/dir1
2.系统相关的命令:
1.内存
free
2.磁盘
df
3.负载
top
load average: 0.00, 0.01, 0.05 各自不要超过 10
pid代表进程号
Ctrl+z 退出
3.可能遇到的问题 :
编辑文件 swp文件
ll -a 检查出.xxx.swp文件
rm -rf 删掉.xxx.swp文件
进程+端口号 :(通过进程名字拿到程序pid,拿到pid之后可以在查看端口号)
yum : httpd
输入 yum install -y httpd 命令
1.查看进程号:
1.java 代码 =》 jdk =》 jps
2. ps -ef | grep 程序的名字(pid) => pid
root 12048 1 0 22:40 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 12072 12048 30 22:40 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
启动用户 子pid 父pid
杀死进程 kill -9 12072(pid进程号)
2.查看端口号 port
netstat -nlp | grep 12048(pid)
tcp6 0 0 :::80 :::* LISTEN 12048/httpd
默认对外提供端口号80
service httpd start
ps -ef | grep http
kill -9 $(pgrep -f httpd)
通讯的命令:(自己电脑连到机房电脑,判断自己网络和机房网络是否互通,防火墙打没打开)
1.ping ip
2.telnet ip port (ping端口)
下载 :
1. wget
2.curl
命令 + url (地址)
软连接 更改home目录,小盘变大盘?
tar :
linux 处理 归档文件的命令
归档文件:
普通文件:1.log 1m
归档文件:1.log.tar 1m
压缩文件:1.log.tar.gz 0.9m
1.普通 =》压缩 归档文件
1.log =》1.log.tar.gz
tar -zcvf xxx.tar.gz file...
-cf => 创建一个新归档 + 使用归档文件
z => 压缩 gz
v =》详细地列出处理的文件
eg:
[root@sygy10 ~]# tar -zcvf A.tar.gz dir1 dir2(把dir1 dir2压缩到A文件夹)
2.解压
tar -zxvf xxx.tar.gz
-xf => 解压 +使用归档文件
z => 压缩 gz
v =》详细地列出处理的文件
eg:tar -zxvf A.tar.gz -C ./B/ (把A.tar.gz解压到B文件夹使用的是-C命令)默认解压到当前文件夹
百度 、谷歌 、 加一个功能 =》 github 码云 flinkcdc =》 maxwell 源码 =》 flink antrl4 sql
shell :
1.什么是shell ? 脚本语言 python
1.一个编程的语言
2.可以执行的文件
3.文件内容 linux命令组成的
1.shell语法入门
1.入门
1.文件 xxx.sh 结尾
2.第一行 #!/bin/bash(可写可不写)
1.编写脚本 (创建一个shell文件)
vim wc.sh
2.得有执行权限【不一定】
1.不给文件权限
sh xxx.sh
[root@sygy10 shell]# sh ./wc.sh
word count
[root@sygy10 shell]# cat wc.sh
#!/bin/bash
echo "word count"
2.给文件 执行权限(常用)
[root@sygy10 shell]# chmod 744 ./wc.sh
[root@sygy10 shell]# ./wc.sh
word count
[root@sygy10 shell]# sh ./wc.sh
word count
补充:
1.给权限
[root@sygy10 shell]# chmod u+x ./wc.sh(u+x 自身加执行权限)
[root@sygy10 shell]# ./wc.sh
word count
[root@sygy10 shell]# ~/shell/wc.sh
word count
[root@sygy10 shell]# sh ~/shell/wc.sh (平台调度时建议使用)
word count
2. debug (报错会有-号提示)
1.[root@sygy10 shell]# sh -x ./wc.sh
2.-x加在shell脚本文件中
#!/bin/bash -x
echo "word count"
2.定义变量 引用
eg:
[root@sygy10 shell]# cat variable.sh
name="zhangsan"
dt1="date"
dt2=`date`
echo $name
echo $dt1
echo $dt2
1.定义变量的方式:(变量名首字母最好大写)
key=value
注意:
1.= 前后不能有空格
2.变量名一般都是大写的【标准】
2.变量的种类:
shell中变量的数据类型 =》全都是 string
1.静态
k="v" k='v' k=v
2.动态
k=`v` : v是变量 v系统自带的命令
3.引用变量:
${k}
任务调度:
shell =》
时间点: T+1 、h+1 20min
20220414 =》20220413
20220414 0:05
1.yarn资源
2.看你几点上班
crontab 命令 =》 定时调度
开源框架:
dophschudule 【恢复数据、重跑数据】
xxl 【shell -》 】
azkanban xx
ozzio xx
airflow 【费劲】
runduck
自己开发
3.shell脚本 参数传递 :
1.$n
$1 $2
第一个参数 第二个参数
[root@sygy10 shell]# cat parameter.sh
echo "脚本文件名: $0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "参数个数: $#"
echo "传递的参数作为一个字符串: $*"
echo "传递的参数作为一个字符串: $@"
echo "脚本运行时的pid :$$"(最好加上,防止kill错进程)
补充:
1.传递参数 “空格” 作为符号分割
2.参数本身带有空格 要加双引号
4.数组
语法格式:
arr=(v1 v2 ... vn)
1.数组用()表示
2.元素用 空格 分割
eg:
[root@sygy10 shell]# cat arr.sh
arr=(zs lisi ww zl)
echo "所有元素 : ${arr[@]}"
echo "第一个元素 : ${arr[0]}"
echo "元素个数 : ${#arr[@]}"(个数跟 # 命令有关)
5.流程控制
分支
循环
1.分支 if else
语法格式:
if condition;then
业务代码
else
业务代码
fi(关掉if)
condition => 条件判断语法
[ condition ] (注意:前后都有空格)
结果:
非空 true
空 false
[ hadoop ]
$? => 获取上一个程序运行的结果 :
成功 0
失败 非0的数据
条件表达式:
1.数值判断
= 等于
== 等于
-gt 大于
-lt 小于
-eq 等于
-ge 大于等于
-le 小于等于
-ne 不等于
2.权限判断
-r
-w
-x
3.文件判断
-f (判断是不是文件)
-e (判断文件是否存在)
-d (判断是不是文件夹)
eg:
[root@sygy10 shell]# cat if.sh
name1="zs"
name2="lisi"
if [ ${name1} == ${name2} ];then 注意:[空格${name1}空格==空格${name2}空格]
echo "等于"
else
echo "不等于"
fi
if elif 语法格式:
if condition;then
业务代码
elif condition;then
业务代码
else
业务代码
fi
eg:
[root@sygy10 shell]# cat if_2.sh
score=$1
if [ ${score} -gt 90 ];then
echo "优秀"
elif [ ${score} -ge 60 ];then
echo "良"
else
echo "不及格"
fi
循环:
语法格式:
foreach:
for el in item1 item2 ... itemn
do
业务代码
done (关掉循环)
for i :
语法格式 :
for((i=0;i<size;i++))
do
业务代码
done
eg:
[root@sygy10 shell]# cat for.sh
for x in 1 2 3 4
do
echo "${x}"
done
echo "-----------------"
for((i=0;i<5;i++))
do
echo "v is ${i}"
done
while:(常用)
while condition
do
业务代码
done
eg:
[root@sygy10 shell]# cat while.sh
i=1
while ((${i}<=5))
do
echo "v is ${i}"
let i++
done
总结:
条件表达式 不能用 < >
while for 能用 < > 不能用 -gt
[] =》 条件判断
() => 数值运算
https://blog.csdn.net/taiyang1987912/article/details/39551385?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=1
监控 服务器
ip hostname
linux01 linux02 linux03
df (磁盘)
free (内存)
for x in 1 2 3 4(常用)
do
echo "${x}"
done
[root@sygy10 shell]# cat split.sh
str="linu01,linu02,linux03" 字符串=》数组(常用)
arr=(${str//,/ })(把,替换成空格)
for linux in ${arr[@]}
do
echo ${linux}
done
Java str.split(",")
shell =>
IFS变量 =》 字符串分割的效果
补充: linux 文本分析的 命令
awk =》 取出文本内容
sed =》 文本替换
awk :
1.获取列
[root@sygy10 shell]# cat 1.log | awk '{print $1}'
a
1
[root@sygy10 shell]# cat 1.log | awk '{print $1,$2}'
a b
1 2
2.获取行
[root@sygy10 shell]# cat 1.log | awk 'NR==1{print}'
a b c
[root@sygy10 shell]# cat 1.log | awk 'NR==2{print}'
1 2 3
[root@sygy10 shell]# cat 1.log | awk 'NR>1{print}'
1 2 3
[root@sygy10 shell]# cat 1.log | awk 'NR>=1{print}'
2.sed
文本替换
1.a 替换成 dd
[root@sygy10 shell]# cat 2.log
a a b
1 a 3
[root@sygy10 shell]# sed -i 's/a/dd/' 2.log #每行 第一次遇到 a 替换成dd
[root@sygy10 shell]# cat 2.log
dd a b
1 dd 3
2.全局替换
把所有的a 都替换成 dd
[root@sygy10 shell]# sed -i 's/a/dd/g' 2.log
坑:
[root@sygy10 shell]# sed -i 's#dd#a#g' 2.log(#号是自己定义的)
替换文件路径:
/path/a
p1="/path/a"
p1="/path1/a1"
sed -i 's/\/path\/a/\/path1\/a1/g' 3.log(转义)
sed -i 's#/path/a#/path1/a1#g' 3.log
sql => 文件
spark-submit -f xxx.sql
hive -f "sele"
-e
linux模板机:
1. ip 动态ip =》静态ip
1.内网
2.学习方便
2.关闭防火墙 :
1-65535
关闭防火墙
3.额外的安装包 :
1.jdk =》 卸载掉
2.mysql =》 mysql自带的额外包【安装mysql 去掉就行】 【superset mysql自带的额外包】
ip:
1.win =》 vmware :
1.子网ip 1-255
192.168.10.0
2.网关
192.168.10.2
2.linux => 静态ip
IPADDR=192.168.10.13
GATEWAY=192.168.10.2
DNS1=192.168.10.2
[root@sygy10 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.10.10
GATEWAY=192.168.10.2
DNS1=192.168.10.2
【重启网络或者 重启机器】
service network restart
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
额外的安装包 :
1.jdk =》 卸载掉
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
linux =》 centos :
1.安装软件:
1.yum
2.rpm
3.tar
rpm :
卸载:
1.查询 java
rpm -qa | grep -i java
2.卸载
rpm -e --nodeps xxx
克隆之后:
1.机器的名字
vim /etc/hostname
2.机器的ip
10 -》 03
vim /etc/sysconfig/network-scripts/ifcfg-ens33
改ip 跟机器号对应上
规范:
[hadoop@sygy03 ~]$ mkdir app project software shell data log
MySQL:
1.版本:
5.6 【少】
5.7 【多】
8.x 【】
2.部署平台:
win =》
mac =》
linux =》
1.两种方式
1.rpm包 =》 部署简单 【学习使用】
2.tar包 =》 部署复杂 【生产上用】
安装mysql:
1.卸载 mysql 相关的包
[root@sygy03 software]# rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@sygy03 software]# rpm -e --nodeps mariadb-libs
[root@sygy03 software]# rpm -qa|grep mariadb
2.安装mysql
1.解压
[root@sygy03 software]# tar -xvf ./mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar -C ./mysql
2.安装
rpm :
rpm -ivh mysql-community-common-8.0.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.21-1.el7.x86_64.rpm
3.启动
1.查看配置mysql
vim /etc/my.cnf
日志文件:/var/log/mysqld.log
监控:tail -20f /var/log/mysqld.log
2.mysql 初始化
mysqld --initialize --user=mysql
临时密码:
root@localhost: pGj/roOO)9vw
root
(mdeIsSmq3s6
3.启动mysql
systemctl start mysqld
4.登录mysql
[root@sygy03 mysql]# mysql -uroot -p\(mdeIsSmq3s6
转义
5.修改密码
alter user root@localhost identified by '123456';
6.修改任何 ip 都可以访问 mysql
update mysql.user set host='%' where user='root';
7.刷新权限(只要MySQL修改系统相关的东西就需要刷新权限)
flush privileges;
mysql 远程连接工具:
1.dbvear =》 hive phoniex clickhouse
2.netcat
3. db
mysql 语法:
1.聚合函数(分组函数)
group By =》 分组
聚合函数 =》 指标统计 sum avg max min count
需求:
统计 每个部门有多少个人 ?
c查什么:
维度 : 部门
指标 : 人数
聚合统计逻辑:
聚合统计:
group by +聚合函数
group by =》 分组
20,<20,20,20>
30,<30,30,30,30>
10,<10,10,10,10>
聚合函数 =》 指标 count
20,3
30,4
2.开窗函数
1.聚合函数 : 多行数据 按照一定规则 进行聚合 为一行
sum avg max 。。。
理论上: 聚合后的行数 <= 聚合前的行数 [看维度选取 groupby 里面的字段]
2.需求:
既要显示 聚合前的数据 又要显示 聚合后的数据 ?
eg:
id name sal dt sal_all
1 zs 1000 2022-4 1000
2 ls 2000 2022-4 2000
3 ww 3000 2022-4 3000
1 zs 1000 2022-5 2000
2 ls 2000 2022-5 4000
3 ww 3000 2022-5 6000
窗口函数:
窗口 + 函数
窗口: 函数运行时 计算的数据集的范围
函数:运行时的函数
1.聚合函数
2.内置窗口函数
语法结构:
函数 over([partition by xxx,...] [order by xxx,...] )
over() :以谁进行开窗 【table】
partition by: 以谁进行分组 【group by column】
order by: 以谁进行排序 【column】
窗口函数:
数据:
服务器 每天的启动 次数
linux01,2022-04-15,1
linux01,2022-04-16,5
linux01,2022-04-17,7
linux01,2022-04-18,2
linux01,2022-04-19,3
linux01,2022-04-20,10
linux01,2022-04-21,4
统计累计问题:
需求:
每个服务器每天的累计 启动次数
name dt cnt
linux01,2022-04-15,1
linux01,2022-04-16,5
linux01,2022-04-17,7
linux01,2022-04-18,2
linux01,2022-04-19,3
linux01,2022-04-20,10
linux01,2022-04-21,4
name dt cnt cnt_all
linux01,2022-04-15,1 1
linux01,2022-04-16,5 6
linux01,2022-04-17,7 13
linux01,2022-04-18,2 15
linux01,2022-04-19,3 18
linux01,2022-04-20,10 28
linux01,2022-04-21,4 32
create table window01(
name varchar(50),
dt varchar(20),
cnt int
);
每个服务器每天的累计 启动次数
1.聚合函数
COUNT,SUM,MIN,MAX,AVG
select
name,
dt,
cnt,
sum(cnt) over(partition by name order by dt ) as cnt_all
from window01;
2.内置窗口函数
窗口大小:
select
name,
dt,
cnt,
sum(cnt) over(partition by name order by dt ) as sum_all,
-- sum(cnt) over(partition by name order by dt ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) as sum_all1
-- sum(cnt) over(partition by name order by dt ROWS BETWEEN 3 PRECEDING AND CURRENT ROW ) as sum_all2
-- sum(cnt) over(partition by name order by dt ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING ) as sum_all3
-- sum(cnt) over(partition by name order by dt ROWS BETWEEN 3 PRECEDING AND UNBOUNDED FOLLOWING) as sum_all4
sum(cnt) over(partition by name order by dt ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) as sum_all5
from window01;
2.内置窗口函数
1.取值 串行
2.排序
RANK
ROW_NUMBER
DENSE_RANK
CUME_DIST
PERCENT_RANK
NTILE
NTILE:
ntile
需求:
把数据按照某个字段进行排序 ,把数据分成几分
select
name,
dt,
cnt,
sum(cnt) over(partition by name order by dt ) as sum_all,
ntile(2) over(partition by name order by dt ) as n2,
ntile(3) over(partition by name order by dt ) as n3
from window01 ;
把数据平均分配 指定 N个桶 ,如果不能平均分配 ,优先分配到 编号 小的里面
RANK
ROW_NUMBER
DENSE_RANK
RANK: 从1 开始 , 按照顺序 相同会重复 名次会留下 空的位置 生成组内的记录编号
ROW_NUMBER: 从1 开始 , 按照顺序 生成组内的记录编号
DENSE_RANK:从1 开始 , 按照顺序 生成组内的记录编号 相同会重复 名次不会会留下空的位置
select
name,
dt,
cnt,
sum(cnt) over(partition by name order by dt ) as sum_all,
RANK() over(partition by name order by cnt desc ) as rk,
ROW_NUMBER() over(partition by name order by cnt desc) as rw,
DENSE_RANK() over(partition by name order by cnt desc ) as d_rk
from window01 ;
1. 串行
LEAD
LAG
1. 串行
LEAD:窗口内 向下 第n行的值
LAG:窗口内 向上 第n行的值
LEAD(column,n,default)
column => 列名
n =》 取 几行
default =》 取不到就给一个默认值
select
name,
dt,
cnt,
sum(cnt) over(partition by name order by dt ) as sum_all,
LEAD(dt,1,"9999-99-99") over(partition by name order by dt ) as lead_alias,
LAG(dt,1,"9999-99-99") over(partition by name order by dt ) as lag_alias
from window01 ;
2.取值
FIRST_VALUE
LAST_VALUE