Linux命令大全 以及搭建hadoop

news/2024/5/14 18:39:54

Liunx系统目录

├── bin -> usr/bin # 用于存放二进制命令
├── boot # 内核及引导系统程序所在的目录
├── dev # 所有设备文件的目录(如磁盘、光驱等)
├── etc # 配置文件默认路径、服务启动命令存放目录
├── home # 用户家目录,root用户为/root
├── lib -> usr/lib # 32位库文件存放目录
├── lib64 -> usr/lib64 # 64位库文件存放目录
├── media # 媒体文件存放目录
├── mnt # 临时挂载设备目录
├── opt # 自定义软件安装存放目录
├── proc # 进程及内核信息存放目录
├── root # Root用户家目录
├── run # 系统运行时产生临时文件,存放目录
├── sbin -> usr/sbin # 系统管理命令存放目录
├── srv # 服务启动之后需要访问的数据目录
├── sys # 系统使用目录
├── tmp # 临时文件目录
├── usr # 系统命令和帮助文件目录
└── var # 存放内容易变的文件的目录

Linux常用基本命令

文件相关的命令

ls

  ls:查看指定的文件夹下面所有的文件以及目录
        语法:ls [-l|-a] [目录名称]
                -l:显式文件的详细信息,包括文件的权限,大小,时间,用户等等
                -a:显式文件夹下面的所有的隐藏文件以及普通文件
            注意:如果省略目录名称,则默认查询是当前的目录。
       ll:相当于ls -l的简写

ls显示文件或目录
ls  -llist--列出文件详细信息
ls -aall--列出当前目录下所有文件及目录,包括隐藏的。相当于ll
ls -hhuman-readable--以人类可读的方式显示(K、M)
ll -ah列出当前文件或目录下的所有文件的详细信息。

pwd:查看当前用户所在的目录

参数功能
-P显示物理路径
-L显示逻辑路径
  1. -P参数会忽视''/'',显示实际的物理路径。

  2. -L参数(这也是默认选项)会把符号链接作为实际的路径来显示。

1.3 创建文件:touch、echo、cat

echo

一般是把内容写入文件,创建新的文件或旧文件

字符含义
-n不自动换行
-e解释转义字符

1、覆盖文件

        echo “内容”> 文件名:将想要的内容(支持文章所述的所有echo输出格式)覆盖到对应的文件当中去,文件中之前的内容将不复存在。实际上是修改原文件的内容, 且文件在系统中不存在时,此命令会先创建新文件再覆盖。

2、文件尾追加

        echo “内容”>> 文件名:将输入的内容(支持文章所述的所有echo输出格式)在文件最后一行后插入,对文件之前的内容不修改,只进行增添,也叫追加重定向

touch :

  1. 将已存在的文件的时间标签改修改为系统当前的时间(默认),也可以通过参数指定时间,但是数据原封不动。
  2. 用来创建新的空文件,这个应该是最常用的一种方法。
-a:或--time=atime或--time=access或--time=use  只更改存取时间;
-c: 或--no-create  不建立新文件
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify  只更该变动时间;
-r:<参考文件或目录>  把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间>  使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。
  1. access:最后一次访问文件的时间
  2. modify:最后一次对文件内容进行修改的时间
  3. change:最后一次对文件属性或状态进行修改的时间

cat:

cat 命令允许我们创建单个或多个文件、查看文件内容、连接文件和重定向终端或文件中的输出。

  • -n:显示行号,可与其他参数连用;
  • -b:显示非空行号,忽略空白行;
  • -s:压缩空白行,将连续多行空白行压缩成一行;
  • -E:在每一行的末尾显示$符号;
  • -T:将制表符(tab)显示为^I;
  • -A:相当于-vET的合集。

cat 文件名 >> 新文件名 创建新文件添加内容 用法同echo一致

cat 文件1 文件2 查看多个文件

创建文件:vim的使用

vim是vi的升级版本,有三种模式:命令模式、插入模式、编辑模式。使用ESC(末行模式)或i(插入)或:来切换模式。

:q  退出
:q!   强制退出
:wq   保存并退出
:set number/nu    显示行号
:set nonumber    隐藏行号
:set paste   保证复制粘贴的内容格式不会乱
yy    复制光标所在行 ,2yy是复制两行
p   粘贴
dd    删除光标所在行,2dd是删除两行
/apache    在文档中查找apache,按n跳到下一个,shift+n上一个
h(左移一个字符←)j(下一行↓)   k(上一行↑)、l(右移一个字符→)

复制文件、文件夹:cp

-i:交互模式,在覆盖已存在的文件前提示用户确认。
-r 或 -R:递归复制目录及其包含的所有子目录和文件。
-p:保留原文件的属性(权限、修改时间等)。
-v:显示详细的复制进度信息。
-u:仅当源文件比目标文件新时才进行复制。
-f 或 --force:强制复制,即使目标文件已存在也不提示,直接覆盖。

交互式复制并保留属性:

cp -ip source.txt destination.txt

强制覆盖已有文件:

cp -f source.txt existing_file.txt

同时复制多个文件到一个目录:

cp file1.txt file2.txt /path/to/directory/

使用通配符批量复制文件:

cp *.txt target_directory/

在一些情况下,你可能希望在复制过程中忽略某些错误,可以使用`-n`选项(no-clobber)来避免覆盖已存在的文件:    cp -n source.txt existing_file.txt

使用`--sparse=always`选项复制稀疏文件(sparse file):

cp --sparse=always sparse_file destination_file

删除文件:rm

DESCRIPTION
-f, --force           ignore nonexistent files and arguments, never prompt
#强制删除文件或目录,即使文件属性设为只读也直接删除,不产生提示确认。-i                    prompt before every removal# 删除之前逐一询问确认。-I                    prompt once before removing more than three files, orwhen removing recursively; less intrusive than -i,while still giving protection against most mistakes#如果文件数量超过3个,或者当递归删除时,提示用户。--interactive[=WHEN]  prompt according to WHEN: never, once (-I), oralways (-i); without WHEN, prompt always
#根据WHEN进行提示:never,once(等同于-I),或者always(-i);WHEN不填时,一直提示(always)--one-file-system  when removing a hierarchy recursively, skip anydirectory that is on a file system different fromthat of the corresponding command line argument--no-preserve-root  do not treat '/' specially#不对根目录/特别对待--preserve-root   do not remove '/' (default)#不删除根目录(默认情况)-r, -R, --recursive   remove directories and their contents recursively#递归地删除目录及其内容-d, --dir             remove empty directories#删除空目录-v, --verbose         explain what is being done                       #输出执行过程

查找文件 :find、Locate、which、whereis

find命令:

-a:and 必须满足两个条件才显示
-o:or 只要满足一个条件就显示
-name:按照文件名查找文件
-iname:按照文件名查找文件(忽略大小写)
-type:根据文件类型进行搜索
-perm:按照文件权限来查找文件
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-fprint 文件名:将匹配的文件输出到文件。
-newer file1 ! newer file2 查找更改时间比文件file1新但比文件file2旧的文件

-print 默认动作,将匹配的文件输出到标准输出
-exec 对匹配的文件执行该参数所给出的命令。相应命令的形式为 'command' { } \;,注意{ }和\;之间的空格。
-ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-delete 将匹配到的文件删除
|xargs  将匹配到的文件删除   |xargs rm -rf 

在/home目录下查找以.txt结尾的文件名

find /home/ -name "*.txt" 
在/home目录下查找以.txt结尾的文件名,但忽略大小写

find /home -iname "*.txt"
 查找 /home/ 下所有以.txt或.pdf结尾的文件

find /home/ -name "*.txt" -o -name "*.pdf"
查找 /home/ 下所有以a开头和以.txt结尾的文件

find /home/ -name "*.txt" -a -name "a*"
搜索/home目录下txt结尾的文件,并将输出到指定文件中(re.txt)

find /home/ -type f -name "*.txt" -fprint /tmp/re.txt

 基于目录深度搜索

[root@host-136 ~]# find /usr/local/ -maxdepth 3 -type d
/usr/local/
/usr/local/bin
/usr/local/etc
/usr/local/games
/usr/local/include
/usr/local/lib
/usr/local/lib64
/usr/local/libexec
/usr/local/sbin
/usr/local/share
/usr/local/share/applications
/usr/local/share/info
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man1x

 根据文件时间戳进行搜索

访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
 

[root@host-136 ~]# find /etc/ -type f -atime -7
/etc/fstab
/etc/crypttab
/etc/resolv.conf
/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
/etc/pki/ca-trust/ca-legacy.conf
/etc/pki/ca-trust/extracted/java/cacerts
/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem
/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
[root@host-136 ~]# find /etc -type f -atime +7
/etc/sasl2/smtpd.conf
/etc/ethertypes
/etc/makedumpfile.conf.sample
/etc/postfix/access
/etc/postfix/canonical
/etc/postfix/generic
/etc/postfix/header_checks
/etc/postfix/relocated
/etc/postfix/transport
/etc/postfix/virtual
[root@host-136 ~]# find /etc/ -type f -size +10k
/etc/ssh/moduli
/etc/postfix/access
/etc/postfix/canonical
/etc/postfix/header_checks
/etc/postfix/main.cf
/etc/postfix/transport
/etc/postfix/virtual
[root@host-136 ~]# find / -type f -name "*.txt" ! -perm 644
/usr/lib/firmware/ivtv-firmware-license-end-user.txt
/usr/lib/firmware/ivtv-firmware-license-oemihvisv.txt
/usr/share/licenses/shadow-utils-4.6/gpl-2.0.txt
/usr/share/licenses/shadow-utils-4.6/shadow-bsd.txt

locate,

定位的意思,作用是让使用者可以快速的搜寻系统中是否有指定的文件。

1) "locate"的速度比"find"快,因为它并不是真的查找文件,而是查数据库。
2) 新建的文件,我们立即用"locate"命令去查找,一般是找不到的,
   因为数据库的更新不是实时的,数据库的更新时间由系统维护。
3) "locate"命令所搜索的后台数据库在"/var/lib/mlocate"这个目录下,
   可能有些Linux系统位置不同,具体我们可以用"locate locate"查询。
4) 我们可以用"updatedb"命令来更新数据库,这样就能查询到刚才新建的文件了。
5) 并不是所有的目录下的文件都会用"locate"命令搜索到,
   "/etc/updatedb.conf"这个配置文件中,配置了一些"locate"命令的一些规则。

/etc/updatedb.conf配置文件解析:
1) PRUNE_BIND_MOUNTS = "yes"值为"yes"时开启搜索限制,此时,下边的配置生效;为"no"时关闭搜索限制。
2) PRUNEFS =后边跟搜索时,不搜索的文件系统。
3) PRUNENAMES = 后边跟搜索时,不搜索的文件类型。
4) PRUNEPATHS = 后边跟搜索时,不搜索的文件所在的路径。

"locate -c" 查询指定文件的数目。(c为count的意思)
"locate -e" 只显示当前存在的文件条目。(e为existing的意思)
"locate -h" 显示"locate"命令的帮助信息。(h为help的意思)
"locate -i" 查找时忽略大小写区别。(i为ignore的意思)
"locate -n" 最大显示条数" 至多显示"最大显示条数"条查询到的内容。
"locate -r" 使用正则运算式做寻找的条件。(r为regexp的意思)

1) 查找etc目录下所有以sh开头的文件

2) 查找etc目录下所有以sh开头的文件的数目

3) 查找etc目录下所有以sh开头的文件,并最多显示2条

4) 新建的文件,更新数据库后就能查询到了

5) 查找文件时,不区分大小写

6) 使用正则表达式,查找以akefile结尾的文件,并最多显示5条

7) 只显示当前存在的文件条目

which

which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果

  • -a:显示所有匹配的命令,而不仅仅是第一个匹配项。
  • --skip-alias:忽略别名,仅搜索实际的命令。
  • --skip-dot:忽略以 .开头的命令。
  • --tty-only:仅在终端中搜索命令。

查找命令的绝对路径:which ls

显示所有匹配的命令:which -a python

忽略别名,仅搜索实际的命令:which --skip-alias ll

忽略以 .开头的命令:which --skip-dot .bashrc

仅在终端中搜索命令: which --tty-only ls

whereis

查找所有与 `ls` 相关的文件:whereis ls

只查找 `ls` 的二进制文件:whereis -b  ls

`whereis` 命令搜索以下三个标准位置:

        (1). 二进制文件(通常位于 `/usr/bin`、`/usr/sbin`、`/bin` 或 `/sbin`)。

        (2). 源代码文件(通常位于 `/usr/src` 或 `/usr/local/src`)。

        (3). 手册页(通常位于 `/usr/share/man`)。

查看文件内容 head ,tail,less,more,wc

head 命令基本语法:

-n 或 --lines:指定要显示的行数。
-c 或 --bytes:指定要显示的字节数。
-q 或 --quiet:不显示文件名的标题信息。
-v 或 --verbose:显示文件名的标题信息。
-z 或 --zero-terminated:使用 NULL 字符分隔输出行。
-h 或 --help:显示帮助信息

显示文件的前 10 行:head file.txt

显示文件的前 5 行:head -n 5 file.txt

显示文件的前 100 个字节:head -c 100 file.txt

  1. UTF-8 编码:一个中文字符通常占据 3 个字节。

  2. GB2312 编码:一个中文字符占据 2 个字节。

  3. GBK/GB18030 编码:一个中文字符通常占据 2 个字节

tail 命令:

-n 或 --lines:指定要显示的行数。
-c 或 --bytes:指定要显示的字节数。
-f 或 --follow:实时监视文件的变化。
-q 或 --quiet:不显示文件名的标题信息。
-v 或 --verbose:显示文件名的标题信息。
-z 或 --zero-terminated:使用 NULL 字符分隔输出行。
-h 或 --help:显示帮助信息。

显示文件的后 10 行:tail file.txt

显示文件的后 5 行:tail -n 5 file.txt

显示文件的后 100 个字节:tail -c 100 file.txt

实时监视文件的变化:tail -f file.txt

如果同时指定 -n 和 -c 选项,则以行数为准。
如果行数超过了文件的总行数,则显示整个文件的内容。
对于二进制文件,使用 -n 选项可能会导致输出的行数不准确。
对于大文件,使用 -n 选项会比使用 -c 选项更快。
在一些 Unix 系统中,head 命令也可以通过相应的命令别名 top 或 tac 来调用。tail 命令则通过相应的命令别名 rlog 或 rtail 来调用。

动态显示access.log文件的变化情况。

 tail -f access.log/ tailf access.log

less命令:

使用 less 非常简单,只需要输入 less 命令,后接要查看的文件名即可,在 less 环境下,可以使用方向键或 Page Up/Page Down 键来滚动浏览文件。按 q 键可以退出 less

less 命令支持许多命令行选项以改变其行为。以下是一些常用的选项:

  • -N:显示行号
  • -m:显示更详细的提示信息
  • -E:在文件结束后自动退出
  • -S:禁用自动换行

  • 搜索内容在 less 中,可以使用 / 字符后接搜索模式来向前搜索内容,或者使用 ? 后接搜索模式来向后搜索内容。例如,要在文件中搜索 “example”,可以输入 /example 并按回车键。

less 可以同时打开多个文件。只需要在命令行中列出所有的文件名即可

more命令

+n   从笫n行开始显示。
-n   定义屏幕大小为n行。
+/pattern   在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示。
-c   从顶部清屏,然后显示。
-d   提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能。
-l   忽略Ctrl+l(换页)字符。
-p   通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似。
-s   把连续的多个空行显示为一行。
-u   把文件内容中的下画线去掉。

显示文件中从第3行起的内容

[root@localhost test]# cat log1.txt 
Thu Feb 25 09:46:34 2021
Create Relation ADR_CONTROL
Create Relation ADR_INVALIDATION
Create Relation INC_METER_IMPT_DEF
Create Relation INC_METER_PK_IMPTS
[root@localhost test]# more +3 log1.txt 
Create Relation ADR_INVALIDATION
Create Relation INC_METER_IMPT_DEF
Create Relation INC_METER_PK_IMPTS

从文件中查找第一个出现"INC_METER_PK_IMPTS"字符串的行,并从该处前两行开始显示输出

[root@localhost test]# cat log1.txt 
Thu Feb 25 09:46:34 2021
Create Relation ADR_CONTROL
Create Relation ADR_INVALIDATION
Create Relation INC_METER_IMPT_DEF
Create Relation INC_METER_PK_IMPTS
[root@localhost test]# more +/INC_METER_PK_IMPTS log1.txt ...跳过
Create Relation ADR_INVALIDATION
Create Relation INC_METER_IMPT_DEF
Create Relation INC_METER_PK_IMPTS

设定每屏显示行数

[root@localhost test]# cat log1.txt 
Thu Feb 25 09:46:34 2021
Create Relation ADR_CONTROL
Create Relation ADR_INVALIDATION
Create Relation INC_METER_IMPT_DEF
Create Relation INC_METER_PK_IMPTS
[root@localhost test]# more -3 log1.txt 
Thu Feb 25 09:46:34 2021
Create Relation ADR_CONTROL
Create Relation ADR_INVALIDATION
--更多--(55%)

列一个目录下的文件用分页显示

[root@localhost usr]# ll
总用量 244
dr-xr-xr-x.   2 root root 45056 5月  12 14:20 bin
drwxr-xr-x.   3 root root    18 5月  14 16:01 games
drwxr-xr-x.   4 root root    43 5月  12 14:19 include
dr-xr-xr-x.  37 root root  4096 5月  12 14:19 lib
dr-xr-xr-x. 126 root root 81920 5月  12 14:23 lib64
drwxr-xr-x.  49 root root 12288 5月  12 14:20 libexec
drwxr-xr-x.  12 root root   131 5月  12 14:16 local
dr-xr-xr-x.   2 root root 20480 5月  12 14:20 sbin
drwxr-xr-x. 223 root root  8192 5月  12 14:19 share
drwxr-xr-x.   4 root root    34 5月  12 14:16 src
lrwxrwxrwx.   1 root root    10 11月  3 2020 tmp -> ../var/tmp
[root@localhost usr]# ll |more -5
总用量 244
dr-xr-xr-x.   2 root root 45056 5月  12 14:20 bin
drwxr-xr-x.   3 root root    18 5月  14 16:01 games
drwxr-xr-x.   4 root root    43 5月  12 14:19 include
dr-xr-xr-x.  37 root root  4096 5月  12 14:19 lib
--更多--

wc

wc统计文本中行数、字数、字符数
wc -l将每个文件的行数及文件名输出到屏幕上
wc -c统计字节

过滤、查找:grep 

  • -i:忽略大小写,不区分大小写地匹配模式。
  • -r:递归地搜索目录及其子目录下的文件。
  • -l:只打印包含匹配模式的文件名,而不打印匹配的行。
  • -n:打印匹配行的行号。
  • -v:反转匹配,只打印不匹配模式的行。
  • -w:仅匹配整个单词,而不是部分匹配。
  • -c:打印匹配模式的行数统计
Hello, this is an example file.
It contains some lines of text.
Let's use grep to search for specific patterns.
在文件中搜索匹配模式的行
在文件中搜索包含单词 “example” 的行
grep "example" demo.txt
Hello, this is an example file.忽略大小写地搜索匹配模式的行
在文件中搜索不区分大小写的单词 "hello"的行
grep -i "hello" demo.txt
Hello, this is an example file.
反转匹配,只打印不匹配模式的行在文件中搜索不包含"text"的行
grep -v "text" demo.txt显示匹配行的行号 在文件中搜索包含单词 “example” 的行,并显示行号
grep -n "example" demo.txt
1 Hello, this is an example file.
统计匹配的行数
grep -c "example" demo.txt1
打印包含匹配模式的文件名
grep -l "example" demo.txt
demo.txt
仅匹配整个单词 在文件中搜索包含单词 “example” 的行,是整个单词,而不是一个单词的一部分
grep -w "example" demo.txt
递归地搜索目录及其子目录下的文件  搜索/opt/目录下包含内容"Hello, this is an example file."的所有文件
grep -r "Hello, this is an example file." /opt/

chmod

mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)

将档案 file1.txt 设为所有人皆可读取 :chmod ugo+r file1.txt /chmod a+r file1.txt 
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :chmod ug+w,o-w file1.txt file2.txt 
将 ex1.py 设定为只有该档案拥有者可以执行  chmod u+x ex1.py 
将目前目录下的所有档案与子目录皆设为任何人可读取 :chmod -R a+r * 
 

r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
-rw------- (600) -- 只有属主有读写权限。 
-rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其他用户只有读权限。 
-rwx------ (700) -- 只有属主有读、写、执行权限。 
-rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。 
-rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。 
-rw-rw-rw- (666) -- 所有用户都有文件读、写权限。这种做法不可取。 
-rwxrwxrwx (777) -- 所有用户都有读、写、执行权限。更不可取的做法。 

打包压缩文件命令:tar、zip、gzip、unzip

zip:将文件打包成一个zip格式的文件
       语法:zip -r 压缩之后的文件的名称  要压缩的文件的名称

unzip 要解压的文件名 [-d 解压后的文件位置]

tar:可以将文件压缩为tar格式的文件,也可以将tar格式的文件解压缩
 压缩文件:
        语法:tar [选项] 压缩后的文件的名称    要压缩的文件的名称
                  -z:代表压缩文件的格式
                  -c:代表当前的操作是压缩操作
                  -v:显示压缩过程信息
                  -f:设置压缩文件的名称
        [root@master ~]# tar -zcvf demo.tar.gz  demo

解压缩:
 语法:tar [选项] 要解压缩文件的名称 [-C 解压缩的位置]
                  -z:代表压缩文件的格式
                  -x:代表当前的操作是解压操作
                  -v:显示压缩过程信息
                  -f:设置压缩文件的名称
       [root@master ~]# tar -zxvf jdk-8u121-linux-x64.tar.gz -C demo

gzip:将文件打包成.gz格式的文件
       语法:gzip 文件名 
       [root@master ~]# gzip 2024-4-10课件.txt
gunzip:解压.gz格式的文件
       语法:gunzip 压缩文件
       [root@master ~]# gunzip 2024-4-10课件.txt.gz

mv

移动文件
         语法:mv 要移动的原文件  移动的位置[/名称]
         [root@master ~]# mv 2024-4-10课件.txt test       仅移动
         [root@master ~]# mv test/2024-4-10课件.txt /root/kejian.txt    移动并重命名
 重命名
         语法:mv 原文件名   新名称
         [root@master ~]# mv kejian.txt 课件.txt

文件链接 ln

建立软链接: ln -s  软连接目标文件的文件名  软连接文件的文件名

 建立硬链接:ln 硬连接目标文件的文件名  硬连接文件的文件名

一个硬链接:file-hard,这个硬连接的inode编号和目标文件相同,因此我们可以先断定该文件不是独立文件,和目标文件公用一个inode属性和内容,硬链接的本质是创建一个新的文件名映射一个已经存在的inode

主要区别:

  1. 系统视角:软链接是一个指向目标文件或目录的快捷方式,类似于Windows系统中的快捷方式或符号链接。硬链接是一个指向目标文件或目录的实际链接,可以看作是文件系统中的另一个入口点。

  2. 跨文件系统和目录边界:软链接可以在文件系统之间创建链接,并且可以链接到不存在的目标。而硬链接只能在同一个文件系统中创建,并且不能链接到目录或不存在的目标。

  3. 链接数量:软链接只是一个文件,而硬链接和目标文件共享相同的索引节点。删除软链接不会影响目标文件或目录,而只会减少目标文件或目录的链接计数。只有当链接计数为零时,目标文件或目录的存储空间才会被释放。

系统信息命令:

stat 【文件名】指定显示文件的详细信息,比ls更详细
who显示在线登录用户
whoami显示当前操作用户
hostname显示主机名

hostnamectl set-hostname【新主机名】

修改主机名
uname显示系统信息

 查看系统CPU使用情况

top动态显示当前耗费资源最多进程信息(cpu系统的使用情况)
dstat综合内存cpu网络流量使用情况
nethogs综合内存cpu网络流量使用情况

yum install epel-release 先安装epel源

yum install dstat/nethogs

显示磁盘信息

df -h和df -Th的区别: -Th是1000 为单位而不是用 1024

df(默认根目录下)查看 Linux 系统上的文件系统磁盘使用情况
df -hhuman--以人类可读的方式显示磁盘信息

df -Th

以人类可读的方式显示磁盘信息

 显示内存信息

free

显示系统中可用和已用内存的量
free -m显示系统中的内存量(以 MB 为单位)

查看进程

ps显示瞬间进程状态

ps -aux

显示所有包含其他使用者的进程
ps -ef显示所有进程信息,连同命令行
pstress -p查看当前进程数

kill :杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程

kill

当前进程向另外一个进程发送信号

kill -9 【程序】

杀死一个进程(发送kill信号)

kill -1 【程序】

重新加载进程(发送hup信号)
kill -15 【程序】

正常终止一个进程

killall 

杀掉服务相关的所有进程

lsof -i 【端口号】

查看指定端口进程

统计文件大小 

du查看文件、文件夹大小
du -aall--统计所有文件的大小(文件和目录)

du -h

human--以人类可读的方式显示文件大小(K/M)
du -sh

统计文件、文件夹里所有文件的大小

显示网络连接信息 

ping 测试网络连通性
ping -c指定要ping几个包
fping批量去ping,可以接网段也可以指定文件里的ip地址去ping
fping -g指定网段
fping -f指定文件里的ip地址

fping -agq

指定网段中存活的ip地址

① fping -g:指定去ping192.168.119.0/24网段:fping -g 192.168.119.0/24。

fping -agq:找到指定网段192.168.119.0/24中哪些ip是存活的:fping -agq 192.168.119.0/24

fping -f:指定文件里面的ip地址:fping -f ip.txt 

netstat  显示网络状态信息
netstat  -a显示详细的网络状况
netstat -nu显示当前户UDP连接状况
netstat -apu显示UDP端口号的使用情况
netstat -i显示网卡列表
ifconfig  查看网络情况
man    

是查询命令的使用手册、指南(说明书)

clear

清屏

alias对命令重命名(别名)如:alias c=clear(临时定义c是clear的别名)

unalias

取消别名(unalias c) 

查看Linux系统ip

ip address、ip a、ip addr、ip ad、ifconfig(需要先安装net-tools)查看到的比ip a系列的要详细些,能够查看到接收的包和传输的包。


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:bc:67:4d brd ff:ff:ff:ff:ff:ffinet 192.168.136.240/24 brd 192.168.136.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::a61e:3db8:18c7:7a51/64 scope link noprefixroutevalid_lft forever preferred_lft forever

① ip a系列:查看网卡:两块网卡: lo、 ens33(真实的网卡)都是网卡名。

  lo --- loopback 本地回环接口,这个网卡是虚拟的,每一台服务器上都有一个这样的网卡。这个网卡就代表本机,自身。inet 127.0.0.1/8 这个网卡的ip地址基本上都是127.0.0.1,自己、本身的ip地址,是用来检测自身的。

两台主机之间的通信,就要借助ip地址,就像手机电话号码一样。

127.0.0.1就代表主机自己。访问别人的主机,千万不能使用127.0.0.1这个ip地址。

物理:windows 、127.0.0.1 (代表本机自己)、192.168.1.2

虚拟机:linux,运行了一个网站程序 127.0.0.1(代表本机自己 )、192.168.1.1

物理机访问虚拟机,访问127.0.0.1是访问自己的i地址。

②  ens33 --- 真实的网卡 一个主机上可以有很多网卡。

inet 192.168.136.240/24 ip地址显示

link/ether 00:0c:29:ae:89:5d: mac地址,每一个主机都会有一个全球唯一的mac地址

运行了DNS才能修改ip地址。

域名服务(DNS domain name system):格式:域名:--ip地址的联系

  ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  
  mtu:最大传输单元,一般默认1500。

Uptime命令使用

uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示依次为:现在时间、系统已经运行了多长时间、目前多少登录用户、系统在过去的1分钟、5分钟和14分钟内的平均负载。使用help参数查看帮助手册:

-p   --pretty show uptime in pretty format     比较美观的打印出来
-h   --help display this help and exit    查看参数帮助
-s, --since system up since    查看系统当前时间
-V, --version output version information and exit    查看版本

telnet命令使用

不管是在windows还是Linux系统要校验某台服务器是否可以ping通,都可以使用命令,如果要加上端口的,Linux可以使用telnet命令。语法格式:Telnet 127.0.0.1 8080

查看系统当前登录用户:w

[root@hadoop120 ~]# w12:14:11 up 20:59,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.136.1    12:10    3.00s  0.85s  0.48s w

关机/重启机器

shutdown关机、重启程序
shutdown -r关机后重新开机
shutdown -h /【数字】关机不重启 /指定几分钟后关机
shutdown -r/h now立刻关机/重启

init 0

Linux中关机命令
init 6重启系统
reboot重启系统

Linux管道

|

将前面一个命令的输出送给后面一个命令作为标准输入。

xargs

将管道符号送过来的内容,告诉后面的命令,送过来的内容做参数使用。

-exec需要执行后面的命令  execute  执行

例:grep -r "sl" /home/* | more 在home目录下所有文件中查找,包括close的文件,并分页输出

软件包管理工具

rpm是linux系统里比较底层的软件管理的命令。

对redhat系统的安装:redhat 、oracle Linux

对Debian系列的安装:Debian、Ubuntu

缺点:不能自动解决软件包之间的依赖关系;不能自动化、智能化。


rpm -q 【软件名】    :quary--查询指定的软件包是否被安装

rpm -qa 【软件名】all--查询系统中安装的所有RPM软件包

rpm -ivh 【软件名】安装软件 -i:install

rpm -U 【软件名】升级软件(如果软件没有安装,会自动帮助安装)

文本处理三剑客

grep:文本过滤器,仅仅是过滤文本,没有编辑功能

sed:Stream EDitor,流编辑器,可以按照特定规则按行编辑数据(sed是不处理原数据的,编辑完的行默认是打印到屏幕,所以sed运行完原文件内容是不变的)

awk:报告生成器,可以根据特定字符分割行(如空格、冒号、顿号等),然后按照你设定的格式显示。(如果对处理的数据需要生成报告之类的信息,或者你处理的数据是按列进行处理的,最好使用 awk)

grep 更适合单纯的查找或匹配文本(尤其擅长过滤)

sed 更适合编辑匹配到的文本(尤其擅长替换)

awk 更适合格式化文本,对文本进行较复杂格式处理(擅长取列)

grep命令

-i : 忽略大小写。不会区分大小写字符。
-v : 不匹配。通常,grep 程序会打印包含匹配项的文本行。这个选项导致 grep 程序只会打印不包含匹配项的文本行。
-c : 打印匹配的数量(或者是不匹配的数目,若指定了-v 选项),而不是文本行本身。
-l : 打印包含匹配项的文件名,而不是文本行本身。
-L : 相似于-l 选项,但是只是打印不包含匹配项的文件名。
-n : 在每个匹配行之前打印出其位于文件中的相应行号。
-h : 应用于多文件搜索,不输出文件名。

正则:
. 任意单个字符[] 指定范围的字符[^] 不在指定范围的字符次数匹配:* :匹配前面字符任意次? : 0 或1次+ :1 次或多次{m} :匹配m次 次{m,n} :至少m ,至多n次* 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配.* 任意前面长度的任意字符,不包括0次\? 匹配其前面的字符0 或 1次+ 匹配其前面的字符至少1次{n} 匹配前面的字符n次{m,n} 匹配前面的字符至少m 次,至多n次{,n} 匹配前面的字符至多n次{n,} 匹配前面的字符至少n次^ : 行首$ : 行尾<, \b : 语首>, \b : 语尾分组:()后向引用:\1, \2, ...
--查询当前目录下面的所有以.txt结尾的文件的名称[root@master demo]# ls | grep '.txt$'
1. grep '^a' test.txt -i -n    #查找以a开头的行,显示行号并且忽略大小写。'a$'                   #查找以a结尾的行'a*'                   #查找a出现一次或者多次行号      2. grep -v '^$' test.txt       #反向输出所有非空格内容(过滤空行)3. grep "\.$" test.txt -n      #输出以.为结束的行,\为转义字符,.为特殊字符。'^.*c'                 #以任意内容开头, 直到c结束
4. grep "[abc]" test.txt -n -o #匹配abc字符中的任意一个,得到它的行数和行号,只显示被匹配的关键字。"[^a]"           -c    #匹配除a以外的字符,显示被匹配了多少行。"[a+]"           -n    #+号表示匹配前一个字符1一次或多次."[go?d]"         -n    #匹配god或者good
5. grep -E "(ab)+c" test.txt -n   #匹配ab出现一次或者多次以c结尾的行,并显示行号。"go(|o|od)d"             #|或的意思,()将一个或多个字符捆绑一起, 当作一个整体进行处理。"(ab){1,3}"              #匹配ab字符一到三次。

sed

-n :不输出模式空间内容到屏幕,即不自动打印,只打印匹配到的行
-e :多点编辑,对每行处理时,可以有多个Script
-f :把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个Script,换行写
-r :支持扩展的正则表达式
-i :直接将处理的结果写入文件
-i.bak :在将处理的结果写入文件之前备份一份

d:删除模式空间匹配的行,并立即启用下一轮循环p:打印当前模式空间内容,追加到默认输出之后a:在指定行后面追加文本,支持使用\n实现多行追加i:在行前面插入文本,支持使用\n实现多行追加c:替换行为单行或多行文本,支持使用\n实现多行追加w:保存模式匹配的行至指定文件r:读取指定文件的文本至模式空间中匹配到的行后=:为模式空间中的行打印行号!:模式空间中匹配行取反处理加g表示行内全局替换;在替换时,可以加一下命令,实现大小写转换\l:把下个字符转换成小写。\L:把replacement字母转换成小写,直到\U或\E出现。\u:把下个字符转换成大写。\U:把replacement字母转换成大写,直到\L或\E出现。\E:停止以\L或\U开始的大小写转换

1. sed -n '5,19 p' demo           #查看文件demo中5-19行中的内容。
2. sed -n '/^a/ p' demo          #查看以a开头的demo文件的行。
3. sed '2,3 d' demo | head        #将2-5行内容打印出来。
4. sed -e '4 a\abc' demo | head  #在文件passwd上的第四行后面添加abc.
5. sed '2 i\abc' demo | head     #在第二行前插入abc.
6. sed '3 c\abc' demo |head      #将第三行替换为abc.
7. sed -n '5,10 s/bin/aaaa/ p' demo |head   #将passwd的5到10的bin字符串查找出来替换为aaaa。
8. sed -i '1 d' demo             #删除原文件的第一行。
9. sed -i.bak '1 d' demo         #备份
 

  1.过滤掉指定的行:语法:sed 'n,md' 文件的名称     [root@master demo]# sed '3,5d' d.txt     删除3-5行[root@master demo]# sed '3d' d.txt       只删除第三行[root@master demo]# sed '4,$d' d.txt     删除3行之后的所有数据2.过滤出指定的行语法:sed -n 'n,mp'文件名称  [root@master demo]# sed -n '3,5p' d.txt     获取3-5行[root@master demo]# sed -n '5p' d.txt    获取第5行[root@master demo]# sed -n '5,$p' d.txt  获取从第5行开始的所有的行3.替换文件中的关键字:语法:sed 's/替换的内容/新的内容/g|n' 文件名称g:代表全局替换,就是替换文件中所有要替换的内容n:是一个数字,代表替换第几次出现的数据[root@master demo]# sed 's/s/o/g' d.txt    将所有的s替换为o[root@master demo]# sed 's/s/o/2' d.txt    将第二次出现的s替换为o[root@master demo]# sed 's/1[3-9][0-9]\{9\}/*****/g' a.txt    将文件中的所有的手机号替换为*****

awk

awk ‘BEGIN {commands} pattern {commands}END{commands}' file1

BEGIN:处理数据前执行的命令

END:处理数据后执行的命令

pattern:模式,每一行都执行的命令

BEGIN和END里的命令只是执行一次

pattern里的命令会匹配每一行去处理
 

1. awk -F ":" '{print $1,$2,$5}' /etc/passwd | head -F ":"  :  awk选项,指定输入分割符为:'{print}'    : 固定语法$1,$2,$5  :输出第一个,第二个,第五个字段: 是输出分隔符,如果不加默认是没有分隔符的。2. echo 'this is a test' | awk '{print $0}'this is a test3. echo 'this is a test' | awk '{print $NF}'test                         #$NF表示最后一个字段,$(NF-1)表示倒数第二个字段。4. cat awkdemoa:bc:dawk -v FS=':' '{print $1,$2}' demo  #FS指定输入分隔符a bc d5. awk -v FS=':' -v OFS='---' '{print $1,$2}' demo  #OFS指定输出分隔符a---bc---d6. awk -v RS=':' '{print $1,$2}' demoab cd7. awk -v FS=':' -v ORS='---' '{print $1,$2}' demo
a b---c d8. awk '{print FILENAME}' demo1
demo19. awk 'BEGIN {print ARGC}' demo 
2
10. awk 'BEGIN {print ARGV[0]}' demo1 
awkawk 'BEGIN {print ARGV[1]}' demo1
demo1

内置函数对文本进行处理

  • tolower():字符转为小写。

  • length():返回字符串长度。

  • substr():返回子字符串。

  • sin():正弦。

  • cos():余弦。

  • sqrt():平方根。

  • rand():随机数。

awk -F ':' '/usr/ {print $1}' demo.txt
#print命令前面是一个正则表达式,只输出包含usr的行。
awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt
#输出奇数行awk -F ':' 'NR >3 {print $1}' demo.txt#输出第三行后的行awk -F ':' '$1 == "root" {print $1}' demo.txt
​awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txt#输出第一个字段等于指定值的行。
awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt
#使用if语句1. df -h |awk -F: '$0 ~ /^\/dev/' /dev/mapper/cl-root
#查询以/dev开头的磁盘信息
模式匹配符:~ :左边是否和右边匹配包含  !~ :是否不匹配
2. awk -F: '$3>=0 && $3<=10 {print $1,$3}' /aaa3. awk -F: '$3==0 || $3>=10 {print $1}' /aaa其他操作符1.算术操作符:x+y, x-y, x*y, x/y, x^y, x%y-x:  转换为负数+x:  转换为数值2.赋值操作符:=, +=, -=, *=, /=, %=, ^=, ++, --3.比较操作符:==, !=, >, >=, <, <=

cut

选项与参数:

-d:分隔符,按照指定分隔符分割列。与 -f 一起使用

-f:依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思(列号,提取第几列)

-c:以字符 (characters) 的单位取出固定字符区间

-b:以字节为单位进行分割

[root@jiangnan data]$ touch cut.txt
[root@jiangnan data]$ vim cut.txt
dong shen
guan zhen
wo  wo
lai  lai
le  le
[root@jiangnan data]# cut -d ' ' -f 1 cut.txt 
dong
guan
wo
lai
le
切割cut.txt第二、三列
[root@jiangnan data]# cut -d ' ' -f 2,3 cut.txt 
shen
zhenwolaile
[root@jiangnan data]# cut -c 5-8 cut.txt shezhe
wolai
le
[root@jiangnan data]# cut -b 2,4,6 cut.txt 
ogs
unz
o o
a l
e e

网络命令

netstat

netstat 用来查看当前操作系统的网络连接状态、路由表、接口统计等信息,来自于 net-tools 工具包,ss 是 netstat 的升级版。

[root@c7-1 ~]#netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3631/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3421/sshd           
tcp        0      0 20.0.0.19:22            20.0.0.1:64385          ESTABLISHED 20165/sshd: root@pt 
tcp        0     52 20.0.0.19:22            20.0.0.1:60938          ESTABLISHED 30806/sshd: root@pt 
tcp6       0      0 ::1:25                  :::*                    LISTEN      3631/master         
tcp6       0      0 :::22                   :::*                    LISTEN      3421/sshd           
[root@c7-1 ~]#netstat -anpt | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3421/sshd           
tcp        0      0 20.0.0.19:22            20.0.0.1:64385          ESTABLISHED 20165/sshd: root@pt 
tcp        0     52 20.0.0.19:22            20.0.0.1:60938          ESTABLISHED 30806/sshd: root@pt 
tcp6       0      0 :::22                   :::*                    LISTEN      3421/sshd           

搭建hadoop平台 伪分布

1.先要设置静态网络ip和主机名

 1.找到网络配置的文件所在的位置:
    cd /etc/sysconfig/network-scripts  
  2.打开网络配置文件进行编辑:ifcfg-ens33
    vi ifcfg-ens33
    修改文件
    按【i】进入编辑模式
    BOOTPROTO=static
    ONBOOT=yes
    添加内容:
    IPADDR=192.168.XXX.XXX
    NETMASK=255.255.255.0
    GATEWAY=192.168.XXX.2
    DNS1=8.8.8.8
    按【esc】退出编辑模式,然后再输入:wq保存退出

打开虚拟网络编辑器

配置网关的ip 子网掩码 网关保持一致

vi /etc/sysconfig/network添加一下内容 NETWORKING=yes保存退出

重启网关service network restart 测试网络   ping baidu.com
 

修改主机名:


    配置文件的地址:/etc 打开hostname文件,然后修改主机名
    vi hostname 然后删除里面原来的内容,添加一个新的主机名即可
    注意:主机名不允许有特殊符号出现,例如:- _ * . 等

将主机名和IP地址进行绑定映射
 打开配置文件:/etc/hosts删除文件中原来的内容,输入一下内容
    192.168.XXX.XXX  主机名保存退出
  重启虚拟机reboot

2.搭建Hadoop平台:

安装包链接:https://pan.baidu.com/s/1awUyvoOZN1EKxSPhwmU3mA?pwd=7891 
提取码:7891 
hive是基于hadoop平台的数据仓库中的一个工具,主要就是对HDFS上保存的文件进行查询和操作。
hive:将编写的hivesql语句转换成mapreduce程序,然后mapreduce程序再进行操作hdfs上的数据。

 物理机安装mysql数据库安装过程参考文档

使用mysql的客户端工具,在mysql中创建一个新的数据库,主要是用来保存hive中的元数据信息。
     #创建一个数据库
    CREATE DATABASE hive;
    #给root用户授予允许远程访问mysql中的hive数据库的权限
    GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '123456';
    #刷新权限
    FLUSH PRIVILEGES;

免密设置:

查看当前服务器是否有免密登录: ssh 主机名 需要密码 就是没有设置

设置免密登录: ssh-keygen -t rsa 按 enter 键就行了直到结束

将公钥发送到目标主机 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改权限:chmod 0600 ~/.ssh/authorized_keys

测试;ssh 主机名

1.由于hadoop是java程序,所以再运行之前必须要先安装JDK环境

创建一个文件夹,来保存安装文件 mkdir bigdata

解压安装文件,解压到bigdata文件夹 tar -zxvf jdk-8u121-linux-x64.tar.gz  -C bigdata/

进行环境变量的配置:vi /etc/profile

#配置JAVA_HOME路径
export JAVA_HOME=自己JDK安装的路径,
例如:export JAVA_HOME=/root/bigdata/jdk1.8.0_121
#将JAVA_HOME添加到系统的PAth路径中
export PATH=${PATH}:${JAVA_HOME}/bin

设置配置文件生效 source /etc/profile

验证是否安装成功 java -version

配置hadoop

上传安装包 进行解压:tar -zxvf hadoop-2.7.7.tar.gz -C bigdata/

配置hadoop的环境变量 vi /etc/profile

export HADOOP_PREFIX=自己Hadoop的安装路径
export PATH=${PATH}:${HADOOP_PREFIX}/bin
export PATH=${PATH}:${HADOOP_PREFIX}/sbin

设置配置文件生效 source /etc/profile

测试 hadoop version

配置hadoop 文件:

1.core-site.xml 文件 /root/bigdata/hadoop-2.7.7/etc/hadoop

vi core-site.xml

在configuration标签里面添加:

<!--配置hadoop集群服务器名称 -->
    <property>
          <name>fs.defaultFS</name>
          <value>hdfs://主机名:8020</value>
      </property>

2.hdfs-site.xml文件

在configuration标签里面添加:
<property>
       <name>dfs.replication</name>
        <value>1</value>
  </property>
<property>
          <name>dfs.namenode.name.dir</name>
           <value>/root/bigdata/hadoop-2.7.7/dfs/name</value>
</property>
<property>
         <name>dfs.datanode.data.dir</name>
         <value>/root/bigdata/hadoop-2.7.7/dfs/data</value>
</property>

3.mapred-site.xml

将mapred-site.xml.template文件复制一份重命名为:mapred-site.xml

cp mapred-site.xml.template mapred-site.xml

vi mapred-site.xml

在configuration标签里面添加:
<property>
        <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>

4.yarn-site.xml

vi yarn-site.xml
在configuration标签里面添加:
<property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
</property>
<property>
         <name>yarn.resourcemanager.address</name>
         <value>主机名:8032</value>
</property>
<property>
         <name>yarn.resourcemanager.scheduler.address</name>
          <value>主机名:8030</value>
</property>
<property>
          <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>主机名:8031</value>
</property>
<property>
          <name>yarn.resourcemanager.admin.address</name>
           <value>主机名:8033</value>
 </property>

5.slaves

vi slaves
然后将里面的内容修改为当前的主机名

6.hadoop-env.sh

 vi hadoop-env.sh
修改其中JAVA_HOME的路径
# The java implementation to use.
export JAVA_HOME=自己JDK安装的路径

7.在启动之前需要格式化一些主服务器  hadoop namenode -format

8.启动hadoop平台 start-all.sh
9.使用jps查看java进程jps 有以下这几个进程,说明配置没有问题
2096 ResourceManager 
2211 NodeManager
1669 NameNode
2454 Jps
1754 DataNode
1951 SecondaryNameNode

10.如果在启动之后缺少进程或者是进程不全 前提:保证配置文件没有问题的前提下

1.关闭hadoop平台  stop-all.sh
2.删除hadoop安装目录下面的生成的dfs文件夹和logs文件夹
3.重新格式化主节点 hadoop namenode -format
4.重新启动hadoop平台 start-all.sh

在伪分布的基础上搭建完全分布
服务器规划:准备3台服务器:(使用虚拟机虚拟出来3台服务器)

按照 1 修改网络ip 和主机名 特别注意每台机器的mac地址要不一样

在hostname文件 写上三台机器的ip 以及 主机名 每一台机器slaves添加三台主机名

1.将原来伪分布的服务器关机,然后复制两份
2.使用虚拟机软件打开复制的虚拟机,然后修改对应的MAC地址,IP地址(ifcfg-ens33),主机名(hostname),主机映射(hosts),确保每一台服务器都能够正常上网。    
3.将每一台服务器中的hadoop配置文件中的slaves文件添加所有的子服务器的主机名
4.验证服务器之间是否可以正常的免密登录
5.删除每个服务器中的hadoop安装目录下的dfs和logs文件夹
4.格式化主服务器(只在主服务器中格式化即可)hadoop namenode -format
6.启动服务(只启动主服务器即可)start-all.sh
7.验证是否启动成功

8.如果在重启网络的时候启动失败:
前提:已经修改了MAC地址
解决办法:1.查看网络配置文件是否有问题
     2.禁用NetworkManager服务
        systemctl stop NetworkManager
        systemctl disable NetworkManager
        #重启网络
        service network restart

可以访问hadoop平台的web端系统:http://ip:50070 

3.hive 安装 仅主服务器安装即可

将hive的安装文件解压到bigdata文件夹下面: tar -zxvf apache-hive-2.3.3-bin.tar.gz -C bigdata

重命名解压后的文件名称 mv bigdata/apache-hive-2.3.3-bin/     bigdata/hive2.3.3

配置环境变量:vi /etc/profile

#hive的环境变量
export HIVE_HOME=/root/bigdata/hive2.3.3
export HIVE_CONF_DIR=/root/bigdata/hive2.3.3/conf
export PATH=${PATH}:${HIVE_HOME}/bin
设置配置文件生效 source /etc/profile

测试 hive --version 出现版本号说明配置成功

修改hive的配置文件:主要配置元数据库的信息

在hive的配置文件的路径下面创建一个新的文件:hive-site.xml

vi /root/bigdata/hive2.3.3/conf/ hive-site.xml

添加以下内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License a

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.-->

<configuration>
  <!-- WARNING!!! This file is auto generated for documentation purposes ONLY! -->
  <!-- WARNING!!! Any changes you make to this file will be ignored by Hive.   -->
  <!-- WARNING!!! You must make your changes in hive-site.xml instead.         -->
  <!-- Hive Execution Parameters -->
<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://物理机ip:3306/hive?useSSL=FALSE</value>
        <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
</property>
<property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Username to use against metastore database</description>
</property>
<property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value> mysql密码
        <description>password to use against metastore database</description>
</property>
<property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
</property>
<property>
         <name>hive.scratch.dir.permission</name>
         <value>733</value>
</property>
</configuration>

将mysql的驱动包保存到hive安装目录下面的lib文件夹下面

初始化元数据库(只能成功初始化一次)schematool -dbType mysql -initSchema

查看mysql中的元数据库中的表是否生成,如果生成则代表格式化成功,否则代表格式化失败。

测试
可以使用hive命令来进入hive,进行数据操作
 注意:在使用hive之前必须要将hadoop平台起来。输入hive即可

 常见的hivesql操作:
1.查看hive中的所有的数据库s how databases;
2.切换数据库 use 数据库名;
3.创建一个新的数据库 create  database 数据库名;
4.查看当前所在的数据库 select current_database();
5.查看数据库下面的所有的表show tables;
 6.退出hive exit;

由于hadoop2.X本版中为了安全性考虑,在来连接hadoop平台的时候需要给用户进行设置授权。

在hadoop的核心配置文件中添加以下内容:core-site.xml,修改之前需要先关闭hadoop平台

<!--设置权限-->
<property>
           <name>hadoop.proxyuser.root.hosts</name>
           <value>*</value>
</property>
<property>
          <name>hadoop.proxyuser.root.groups</name>
          <value>*</value>
</property>

修改完配置文件之后需要重启hadoop平台,然后开启hive服务
 将HDFS上根目录的权限修改为777,在修改的时候是要使用-R  hdfs dfs -chmod -R 777 /

datagrip:可以连接

SQOOP 安装

将hadoop中的数据导出到关系型数据库中,或者可以将关系型数据库中的数据导入hadoop平台中。
由于sqoop依附于hadoop的一个组件,所以在使用之前必须要先将sqoop集成到hadoop中

集成sqoop
  准备工作:
准备各种关系型数据库的驱动包
     mysql驱动包:mysql-connector-java-5.1.49.jar 
     oracle驱动:ojdbc6.jar
将压缩文件解压到指定的路径tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C bigdata/
将解压文件进行重名了mv bigdata/sqoop-1.4.7.bin__hadoop-2.6.0/    bigdata/sqoop1.4
添加环境变量vi /etc/profile
添加一下环境变量
#添加sqoop的路径
        export SQOOP_HOME=/root/bigdata/sqoop1.4
        export PATH=${PATH}:${SQOOP_HOME}/bin
        export CATALINA_BASE=${SQOOP_HOME}/server
        export LOGDIR=${SQOOP_HOME}/logs
设置配置文件生效source /etc/profile
修改sqoop的配置文件
      将sqoop安装目录下面的conf下面的配置文件sqoop-env-template.sh复制一份,
      命名为sqoop-env.sh  cp sqoop-env-template.sh sqoop-env.sh
      打开复制之后的文件: vi sqoop-env.sh
      将一下路径前面的#删除,并且添加对应的路径
        #Set path to where bin/hadoop is available
        export HADOOP_COMMON_HOME=/root/bigdata/hadoop-2.7.7

        #Set path to where hadoop-*-core.jar is available
        export HADOOP_MAPRED_HOME=/root/bigdata/hadoop-2.7.7

        #Set the path to where bin/hive is available
        export HIVE_HOME=/root/bigdata/hive2.3.3
将数据库的驱动包放到sqoop安装路径下面的lib文件夹中
            mysql驱动包:mysql-connector-java-5.1.49.jar 
测试是否安装成功
      sqoop version

测试是否能够连接数据库
sqoop list-databases \
--connect jdbc:mysql://ip:3306 \
--username root \
--password 123456


http://www.mrgr.cn/p/83744521

相关文章

【鸿蒙应用】理财App

目录 第一节项目讲解项目介绍 第二节&#xff1a;项目创建登录静态框架编写登录页面设稿新建项目控制台添加项目Login页面封装标题组件 第三节&#xff1a;登录页静态表单编写第四节—内容页架构分析底部栏组件第五节—底部栏组件切换第六节&#xff1a;首页静态页编写第七节&a…

upload-labs通关

前记&#xff1a; 在这里面我们使用一句话木马时使用php里的一个函数phpinfo&#xff08;&#xff09;&#xff0c;该函数能显示出网页具体的php版本和有关的信息。 pass-01&#xff08;js前端验证&#xff09; 方法1&#xff1a;禁用js/删除js验证 1.禁用js 按f12&#xff…

【前端缓存】localStorage是同步还是异步的?为什么?

写在开头 点赞 收藏 学会 首先明确一点&#xff0c;localStorage是同步的 一、首先为什么会有这样的问题 localStorage 是 Web Storage API 的一部分&#xff0c;它提供了一种存储键值对的机制。localStorage 的数据是持久存储在用户的硬盘上的&#xff0c;而不是内存。这意…

新装电脑Flutter环境部署坑汇总(持续更新)

1.本地安装&#xff0c;安装fvm的坑 本人电脑使用windows &#xff0c;安装fvm则一般使用choco安装&#xff0c;那么首先需要安装choco,打开powershell/或者cmd运行以下命令&#xff1a; Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager…

C#设计树形程序界面的方法:创建特殊窗体

目录 1.TreeView控件 2.实例 &#xff08;1&#xff09;Resources.Designer.cs &#xff08;2&#xff09;Form1.Designer.cs &#xff08;3&#xff09;Form1.cs &#xff08;4&#xff09;生成效果 以树形来显示程序的菜单&#xff0c;可以更直观、更快捷地对窗体进行…

Kafka 3.x.x 入门到精通(02)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;02&#xff09;——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.1.1 解压文件2.1.2 安装ZooKeeper2.1.3 安装Kafka2.1.4 封装启动脚本 2.2 集群启动2.2.1 相关概念2.2.1.1 代理&#xff1a;Broker2.2.1.2 控制器&#xff1a;Controller …

【论文阅读】互连网络的负载平衡路由算法 (RLB RLBth)

前言Oblivious Load Balancing 不经意路由负载平衡 1. oblivious routing 不经意/无关路由的背景知识 1. oblivious routing, adaptive routing & minimal/non-minimal routing algorithms 2. RLB and RLBth 1. Motivation of Balancing load 平衡负载的动机2. 一维 ring 的…

【论文阅读】ViTAE:Vision transformer advanced by exploring intrinsic inductive bias

ViTAE:Vision transformer advanced by exploring intrinsic inductive bias 论文地址摘要&#xff1a;简介&#xff1a;3 方法论3.1 重温视觉变压器3.2 ViTAE3.3 缩减单元3.4 Normal cell3.5 模型细节 4 训练4.1 Implementation details4.2 Comparison with the state-of-the-…

Python高阶--闭包

闭包作用:可以用来在一个函数与一组私有变量之间创建关联关系,在给定函数被多次调用的过程中,这些私有变量能够保持其持久性(保存运行环境与变量的状态) 闭包的特征:1.必须要有函数的嵌套,而且外层函数必须返回内层函数。外层函数相当于给内层函数提供了一个包装起来的运…

实验五 Spark SQL编程初级实践

Spark SQL编程初级实践 Spark SQL基本操作 将下列JSON格式数据复制到Linux系统中&#xff0c;并保存命名为employee.json。 { "id":1 , "name":" Ella" , "age":36 } { "id":2, "name":"Bob","a…

数据结构和算法:贪心

贪心算法 贪心算法是一种常见的解决优化问题的算法&#xff0c;其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期获得全局最优解。 贪心算法和动态规划都常用于解决优化问题。它们之间存在一…

【数据结构】最小生成树(Prim算法、Kruskal算法)解析+完整代码

5.1 最小生成树 定义 对一个带权连通无向图 G ( V , E ) G(V,E) G(V,E)&#xff0c;生成树不同&#xff0c;每棵树的权&#xff08;即树中所有边上的权值之和&#xff09;也可能不同。 设R为G的所有生成树的集合&#xff0c;若T为R中边的权值之和最小的生成树&#xff0c;则T称…

使用大卫的k8s监控面板(k8s+prometheus+grafana)

问题 书接上回&#xff0c;对EKS&#xff08;AWS云k8s&#xff09;启用AMP&#xff08;AWS云Prometheus&#xff09;监控AMG(AWS云 grafana)&#xff0c;上次我们只是配通了EKSAMPAMG的监控路径。这次使用一位大卫老师的grafana的面板&#xff0c;具体地址如下&#xff1a; ht…

【idea】idea 中 git 分支多个提交合并一个提交到新的分支

一、方法原理讲解 我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作&#xff0c; commit&#xff1a;命令用于将你的代码变更保存到本地代码仓库中&#xff0c;它创建了一个新的提交&#xff08;commit…

干货整理:好用的文件加密软件有哪些

说到文件加密&#xff0c;想必大家都很熟悉&#xff0c;文件加密已经普遍应用&#xff0c;文件加密是一种重要的安全措施&#xff0c;可以确保数据的机密性、完整性和可用性&#xff0c;降低因数据泄露或丢失带来的风险。 下面小编给大家分享几款常用的加密软件&#xff0c;大…

Spark和Hadoop的安装

实验内容和要求 1&#xff0e;安装Hadoop和Spark 进入Linux系统&#xff0c;完成Hadoop伪分布式模式的安装。完成Hadoop的安装以后&#xff0c;再安装Spark&#xff08;Local模式&#xff09;。 2&#xff0e;HDFS常用操作 使用hadoop用户名登录进入Linux系统&#xff0c;启动…

【Flink入门修炼】2-3 Flink Checkpoint 原理机制

如果让你来做一个有状态流式应用的故障恢复&#xff0c;你会如何来做呢&#xff1f; 单机和多机会遇到什么不同的问题&#xff1f; Flink Checkpoint 是做什么用的&#xff1f;原理是什么&#xff1f; 一、什么是 Checkpoint&#xff1f; Checkpoint 是对当前运行状态的完整记…

IDM下载器_Internet Download Manager 6.42.7

网盘下载 IDM下载器是一款针对互联网所打造的下载管理器。IDM下载器能将下载速度提高5倍&#xff0c;恢复因丢失的连接&#xff0c;网络问题&#xff0c;计算机关闭或意外断电而重新启动中断或中断的下载。IDM下载器还可支持所有流行的浏览器&#xff0c;以使用独特的“高级浏…

论文解读:(VPT)Visual Prompt Tuning

文章汇总 要解决的问题 大型模型应用于下游任务本身就存在挑战。最明显的(通常也是最有效的)适应策略是对预先训练好的模型进行全面的端到端微调。 动机 只微调参数的一个子集 解决的办法 只在输入空间中引入少量特定于任务的可学习参数&#xff0c;而在下游训练期间冻结…

03-JAVA设计模式-策略模式

策略模式 什么是策略模式 策略模式&#xff08;Strategy Pattern&#xff09;是行为设计模式之一&#xff0c;它使你能在运行时改变对象的行为。在策略模式中&#xff0c;一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中&#xff0c;…