Linux命令大全 以及搭建hadoop

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.rhkb.cn/news/317636.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速了解Django:核心概念解析与实践指南

title: 快速了解Django&#xff1a;核心概念解析与实践指南 date: 2024/5/1 20:31:41 updated: 2024/5/1 20:31:41 categories: 后端开发 tags: Django核心路由系统视图系统ORM管理中间件Web框架登录装饰器 第一章&#xff1a;Django简介 背景和发展历程&#xff1a; Djan…

用Jenkins实现cherry-pick多个未入库的gerrit编译Android固件

背景: 在做Android固件开发的时候,通常我们可以利用gerrit-trigger插件,开发者提交一笔的时候自动触发jenkins编译,如果提交的这一笔的编译依赖其他gerrit才能编译过,我们可以在commit message中加入特殊字段,让jenkins在编译此笔patch的时候同时抓取依赖的gerrit代码下…

JSON教程(非常详细)

参考文章来源&#xff1a;JSON教程&#xff08;非常详细&#xff09; 目录 JSON JSON 发展史 为什么要使用 JSON&#xff1f; JSON 的不足 存储格式 使用场景 1) 定义接口 2) 序列化 3) 生成 Token 4) 配置文件 JSON语法规则 JSON 与 JavaScript 对象的区别 JSON数…

第7篇:创建Nios II工程之控制LED<二>

Q&#xff1a;上一期我们完成了Quartus硬件工程部分&#xff0c;本期我们创建Nios II软件工程这部分。 A&#xff1a;创建完BSP和Nios II Application之后&#xff0c;在source文件main.c中添加LED控制代码&#xff1a;system.h头文件包含了Platform Designer系统中IP的硬件信…

Kubernetes - CentOS7搭建k8s_v1.18集群高可用(kubeadm/二进制包部署方式)实测配置验证手册

Kubernetes - CentOS7搭建k8s集群高可用&#xff08;kubeadm/二进制包部署方式&#xff09;实测配置验证手册 前言概述&#xff1a; 一、Kubernetes—k8s是什么 Kubernetes 这个名字源于希腊语&#xff0c;意为“舵手“或”飞行员"。 Kubernetes&#xff0c;简称K8s&#…

Qwen-Audio:推动通用音频理解的统一大规模音频-语言模型(开源)

随着人工智能技术的不断进步&#xff0c;音频语言模型&#xff08;Audio-Language Models&#xff09;在人机交互领域变得越来越重要。然而&#xff0c;由于缺乏能够处理多样化音频类型和任务的预训练模型&#xff0c;该领域的进展受到了限制。为了克服这一挑战&#xff0c;研究…

51单片机入门(一)

1. 51单片机的基础介绍 2. RAM和ROM的区别 总体而言&#xff0c;RAM和ROM在计算机系统中起着不同的角色&#xff0c;RAM用于临时存储运行时数据&#xff0c;而ROM用于存储永久性的固件和系统程序。 3. 为什么叫51单片机 因为51系列单片机都是使用Intel 8031指令系统的单片机…

太速科技-多路PCIe的阵列计算全国产化服务器

多路PCIe的阵列计算全国产化服务器 多路PCIe的阵列计算全国产化服务器以国产化处理器&#xff08;海光、飞腾ARM、算能RSIC V&#xff09;为主板&#xff0c;扩展6-8路PCIe3.0X4计算卡&#xff1b; 计算卡为全国产化的AI处理卡&#xff08;瑞星微ARM&#xff0c;算能AI&#x…

《QT实用小工具·五十》动态增删数据与平滑缩放移动的折线图

1、概述 源码放在文章末尾 该项目实现了带动画、带交互的折线图&#xff0c;包含如下特点&#xff1a; 动态增删数值 自适应显示坐标轴数值 鼠标悬浮显示十字对准线 鼠标靠近点自动贴附 支持直线与平滑曲线效果 自定义点的显示类型与大小 自适应点的数值显示位置 根据指定锚点…

如何讲好ppt演讲技巧(4篇)

如何讲好ppt演讲技巧&#xff08;4篇&#xff09; 如何讲好PPT演讲技巧&#xff08;四篇&#xff09; **篇&#xff1a;精心准备&#xff0c;奠定演讲基础 一个成功的PPT演讲&#xff0c;离不开精心的准备。首先&#xff0c;要确定演讲的主题和目标&#xff0c;确保演讲内容清…

字典及GitHub字典爬取工具

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

Docker容器---Harbor私有仓库部署与管理

一、搭建本地私有仓库 1、下载registry镜像 [rootlocalhost ~]#docker pull registry Using default tag: latest latest: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4a2: Pull complete e2ead8259a04: Pull comp…

OPPO Reno10Pro/Reno11/K10手机强解BL刷root权限KSU内核抓包刷机救砖

OPPO Reno10Pro/Reno11/K10手机虽然发布时间并不久&#xff0c;但由于天玑处理器的体质&#xff0c;已经支持强制解锁BL了&#xff0c;该漏洞来自第三方工具适配&#xff0c;支持OPPO天机8100/8200刷机救砖解锁BL不需要等待官方深度测试直接实现。解锁BL后的OPPO Reno10Pro/Ren…

Android binder死亡通知机制

在Andorid 的binder系统中&#xff0c;当Bn端由于种种原因死亡时&#xff0c;需要通知Bp端&#xff0c;Bp端感知Bn端死亡后&#xff0c;做相应的处理。 使用 Bp需要先注册一个死亡通知&#xff0c;当Bn端死亡时&#xff0c;回调到Bp端。 1&#xff0c;java代码注册死亡通知 …

hadoop学习---基于hive的航空公司客户价值的LRFCM模型案例

案例需求&#xff1a; RFM模型的复习 在客户分类中&#xff0c;RFM模型是一个经典的分类模型&#xff0c;模型利用通用交易环节中最核心的三个维度——最近消费(Recency)、消费频率(Frequency)、消费金额(Monetary)细分客户群体&#xff0c;从而分析不同群体的客户价值。在某些…

C++list的模拟实现

文章目录 一、观察源码二、模拟实现1. 节点结构体2. list类3. 迭代器的定义与实现&#xff08;1&#xff09; 前置--后置--模拟实现&#xff08;2&#xff09; *和->重载模拟实现&#xff08;3&#xff09; 和!重载实现 4. list成员函数模拟实现。&#xff08;1&#xff09;…

Unity Audio Filter 入门

概述&#xff1a; 如果你在你项目中需要一些特殊的声音效果&#xff0c;那这部分声音过滤器的部分一定不要错过喔&#xff0c;让我们来学习这部分的内容吧&#xff01; 这部分理论性比较强&#xff0c;认真看我的注解哈&#xff0c;我尽量解释的易懂一点。 Audio Chorus Filter…

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习六

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

基于Springboot+Vue的Java项目-火车票订票系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

html--剑雨

<!doctype html> <html> <head> <meta charset"utf-8"> <title>css3剑雨-jq22.com</title> <script src"http://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style> .sword:before, .sword:…