Linux命令大全 以及搭建hadoop

news2024/11/26 23:46:47

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, or
                          when removing recursively; less intrusive than -i,
                          while still giving protection against most mistakes
                         #如果文件数量超过3个,或者当递归删除时,提示用户。
      --interactive[=WHEN]  prompt according to WHEN: never, once (-I), or
                          always (-i); without WHEN, prompt always
#根据WHEN进行提示:never,once(等同于-I),或者always(-i);WHEN不填时,一直提示(always)
      --one-file-system  when removing a hierarchy recursively, skip any
                          directory that is on a file system different from
                          that 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.txt

1
打印包含匹配模式的文件名
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 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:bc:67:4d brd ff:ff:ff:ff:ff:ff
    inet 192.168.136.240/24 brd 192.168.136.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a61e:3db8:18c7:7a51/64 scope link noprefixroute
       valid_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 ~]# w
 12: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 test
 
3. echo 'this is a test' | awk '{print $NF}'
  test                         #$NF表示最后一个字段,$(NF-1)表示倒数第二个字段。
 
4. cat awkdemo
 a:b
 c:d
 
 awk -v FS=':' '{print $1,$2}' demo  #FS指定输入分隔符
 a b
 c d
 
 
5. awk -v FS=':' -v OFS='---' '{print $1,$2}' demo  #OFS指定输出分隔符
 a---b
 c---d
 
6. awk -v RS=':' '{print $1,$2}' demo
 a
 b c
 d
 
7. awk -v FS=':' -v ORS='---' '{print $1,$2}' demo
a b---c d
 
 
8. awk '{print FILENAME}' demo1
demo1
 
9. awk 'BEGIN {print ARGC}' demo 
2
10. awk 'BEGIN {print ARGV[0]}' demo1 
awk
    awk '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}' /aaa
 
3. 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
zhen
 wo
 lai
 le
[root@jiangnan data]# cut -c 5-8 cut.txt 
 she
 zhe
wo
 lai
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.coloradmin.cn/o/1631731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux驱动开发——(六)按键中断实验

目录 一、简介 二、修改设备树 2.1 添加pinctrl节点 2.2 添加KEY设备节点 2.3 检查是否被其他外设使用 三、代码 3.1 驱动代码 3.2 测试代码 3.3 平台测试 一、简介 以I.MX6U-MINI为例&#xff0c;实现KEY0按下后&#xff0c;设备识别到并将数据发送到平台。 二、修…

字典及GitHub字典爬取工具

红队API接口Fuzz字典可以用于WEB安全&#xff0c;渗透测试&#xff0c;SRC等场景 完整文件已上传知识星球&#xff0c;需要的朋友可加入查看。

fetch请求后端返回文件流,并下载。

前端&#xff1a; <script src"~/layui/layui.js"></script> <script src"~/Content/js/common/js/vue.min.js"></script> <script src"~/Content/js/common/js/jquery-1.10.2.min.js"></script><styl…

jvisualvm安装插件

1、打开VisualVM: Plugins Centers 找到对应JDK版本的插件点击下载即可&#xff0c;本案例以JDK1.8.0_181为例子&#xff0c;点击进去&#xff0c;再找到需要安装的插件点击下载 2、打开jvisualvm 在工具——》插件 的【已下载】tab&#xff0c;点击【添加插件 】安装下载下来 …

前端入门:HTML(css轮廓,填充,宽高)

1.CSS轮廓 注意&#xff1a; outline中&#xff0c;out-style是必须要设置的&#xff0c;格式为&#xff1a; outline-style一共有以下的几个值&#xff1a; 2.CSS填充属性 这是一个用于在一个元素的内容周围产生空间&#xff0c;也就是边框内到白框外之间的距离&#xff0c;…

Vue2 - 完成实现ElementUI中el-dialog弹窗的拖拽功能(宽度高度适配,且关闭后打开位置居中)

我们在做后台管理系统时常用到ElementUI 中的 el-Dialog,但是官方文档并未我们提供 el-Dialog弹窗如何实现拖拽功能,我们通常需要思考如何让用户能够自由地拖动弹窗,在页面上调整位置以获得更好的用户体验。在下面的博客文章中,我们将实现如何为 ElementUI 的 el-Dialog 弹…

uniapp自定义返回事件(封装)

uniapp自定义返回事件 在我们使用uniapp时&#xff0c;我们导航栏一般都是自定义的&#xff0c;比如用uview框架的导航栏&#xff0c;那么返回事件通常会遇到以下几个问题 返回事件前需要做一些额外的处理 h5项目刷新页面后返回失效 返回按钮点击后到指定页面 如果只是监听返…

【简单介绍下日常的启发式算法】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

PostgreSQL 14 向量相似度搜索插件 (pgvector) 安装指南

本文是关于在 PostgreSQL 14 中安装并使用向量相似度搜索插件(pgvector)的详细指南。此插件允许用户在数据库中执行高效的向量运算,特别适用于机器学习模型的向量数据存储与检索场景。 环境需求 已安装PostgreSQL 14或更高版本。安装了Visual Studio 2022,用于编译插件。安装…

排序算法:插入、希尔、选择、推排、冒泡、快速、归并排序

排序算法 目录 前言 一、排序的概念 1.1排序的概念 1.2 常见的排序算法 二、常见排序算法的实现 2.1 插入排序 2.2 希尔排序 2.3 选择排序 2.4 堆排序 2.5 冒泡排序 2.6 快速排序 2.6.1 hoare版本 2.6.2 前后指针版本 2.6.3 非递归版本 2.7 归并排序 归并排序 2.8 计数排序 三、…

5G图标显示分析

1、问题现象 MTK平台项目中出现一个5G图标显示问题&#xff0c;注册5G时&#xff0c;拨打电话&#xff0c;对比机图标显示回落到4G&#xff0c;测试机一直显示5G。 2、原因分析 2.1、NSA显示规则 根据GSMA协议&#xff0c;NSA架构下5G图标显示有如下4种. 2.2、Android中显示5G…

Idea报错:无法访问org.springframework.boot.SpringApplication

在开发项目时&#xff0c;常常会遇到这种问题&#xff0c;报错信息如下图所示 版本号与jdk版本号存在对应关系&#xff0c;61.0对应jdk17&#xff0c;52.0对应jdk8 所以是某个依赖的版本太高&#xff0c;降低该依赖的版本即可 具体步骤&#xff1a; ①修改pom.xml中spring b…

16册 | 移动机器人(自动驾驶)系列

此文档整理推荐了16本移动机器人&#xff08;自动驾驶&#xff09;相关的书籍&#xff0c;内容包括&#xff1a;ROS、机器人基础开发、分布式机器人控制、集群机器人控制、嵌入式机器人、多传感器融合等等。 学习&#xff0c;切勿急于求成&#xff0c;读书自学&#xff0c;需多…

⑥ - 后端工程师通识指南

&#x1f4d6; 该文隶属 程序员&#xff1a;职场关键角色通识宝典 ✍️ 作者&#xff1a;哈哥撩编程&#xff08;视频号同名&#xff09; 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏…

基于STM32单片机的心率、血氧、温度检测系统设计与实现

基于STM32单片机的心率、血氧、温度检测系统设计与实现 摘要&#xff1a;本文主要设计并实现了一个基于STM32单片机的心率、血氧和温度检测系统。该系统使用MAX30102传感器采集心率和血氧浓度&#xff0c;LMT70传感器用于温度检测&#xff0c;同时通过OLED显示屏展示实时数据。…

[BT]BUUCTF刷题第25天(4.28)

第25天&#xff08;共3题&#xff09; Web [CISCN 2019 初赛]Love Math 打开网站就是一段泄露的源代码&#xff1a; <?php error_reporting(0); //听说你很喜欢数学&#xff0c;不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c…

使用 xe2 调整 3dTileset 模型位置并获取模型矩阵 modelMatrix

使用 xe2 调整 3dTileset 模型位置并获取模型矩阵 modelMatrix Demo 获取改变后的模型的 modelMatrix src\examples\tile\edit\offset\index.html 目录下&#xff0c;设置 3dTileset 地址&#xff0c;拖动模型&#xff0c;监听 modelMatrix 变化。

Linux(Centos 7)环境下安装wget,并且更换阿里云镜像

Linux(Centos 7) Minimal 安装后&#xff0c;由于没有预装wget&#xff0c;在使用wget命令去下载安装相关应用时&#xff0c;提示&#xff1a;“wget: command not found” 先在Linux服务器窗口中&#xff0c;输入如下命令&#xff0c;检查Linux服务器有没有安装过wget。 rpm -…

ubuntu22.04 修改内核源码教程

1. 确认当前内核版本 uname -a 2. 去ubuntu官网下载对应版本内核源码 6.5.0-28.29 : linux package : Ubuntu (launchpad.net) 3. 准备编译环境 sudo apt-get install libncurses5-dev libssl-dev build-essential openssl flex bison libelf-dev tar -xzvf linux_6.5.…

【多模态大模型】AI对视频内容解析问答

文章目录 1. 项目背景2. 直接对视频进行解析进行AI问答&#xff1a;MiniGPT4-Video2.1 MiniGPT4-Video效果 3. 对视频抽帧为图片再进行AI问答3.1 视频抽帧3.2 图片AI问答3.2.1 阿里通义千问大模型 Qwen-vl-plus3.2.2 Moonshot 1. 项目背景 最近在做一个项目,需要使用AI技术对视…