大数据之路之Linux篇

目 录

    • 1.Linux简介篇
      • 1.1 为什么要学习Linux
      • 1.2 Linux是什么
      • 1.3 Linux创始人
      • 1.4 Linux主要发行版本
      • 1.5 Linux和Unix前世今生
    • 2.Linux系统基础篇
      • 2.1 Linux安装
      • 2.2 Linux用户管理、组管理、权限管理
      • 2.3 Linux磁盘基础知识、分类、分区、挂载、卸载、扩容等操作;
      • 2.4 Linux网络配置(配置网卡、固定IP,固定hostname,终端远程登录)
      • 2.5 Linux开关机、重启
      • 2.6 Linux的主要目录介绍
    • 3.Linux实操进阶篇
      • 3.1 Linux运行级别及找回root密码
      • 3.2 Linux实用指令
        • 3.2.1 帮助指令man、help
        • 3.2.2 文件目录类指令
        • 3.2.6 文件查看指令
        • 3.2.7 日历指令date、cal
        • 3.2.8 查找指令find、location、grep
        • 3.2.12 压缩和解压指令
      • 3.3 Linux调度任务crontab,at
      • 3.4 Linux进程管理
      • 3.5 Linux软件管理RPM、YUM、TAR
        • 3.5.1 软件管理RPM——默认安装路径
        • 3.5.2 软件管理RPM——rpm qa软件查询
        • 3.5.3 软件管理RPM——rpm软件安装、卸载
        • 3.5.4 软件管理RPM——rpm升级与更新
        • 3.5.5 软件管理YUM——在线升级机制
        • 3.5.6 软件管理YUM——配置文件
        • 3.5.7 软件管理tar——Tarball管理(编译好的)
        • 3.5.8 软件管理源码安装——Tarball源码和SRPM源码
        • 3.5.9 软件验证——如何验证软件是官网提供的(未被黑客,第三方更改过)
    • 4. Linux大数据集群篇
      • 4.1 Linux免密登录
      • 4.2 大数据软件安装
        • 4.2.1 安装JDK 及配置环境变量
        • 4.2.2 安装python
        • 4.2.3 安装mysql
        • 4.2.4 安装ftp
        • 4.2.5 安装hadoop(hdfs,mapreduce,yarn)
        • 4.2.6 安装hive
        • 4.2.7 安装spark
        • 4.2.8 安装kafka
        • 4.2.9 安装flink
        • 4.2.10 安装flume
        • 4.2.11 安装clickhouse
        • 4.2.12 安装azkaban
        • 4.2.13 安装dolphinschedule
        • 4.2.14 安装elasticsearch
        • 4.2.15 安装apche superset
      • 4.3 Shell脚本
    • 5. Linux其他方向进阶篇
    • 6. 推荐资料及书籍

1.Linux简介篇

1.1 为什么要学习Linux

  • 工作需要,从事IT工作或多或少都要设计Linux;
  • 迟早老子会有钱,要买一台苹果Mac坐在星巴克追剧,那你会发现,Mac的命令行模式竟然和Linux惊人的相识,我每次用到Mac命令行操作都是直接网上直接copy的,不知道啥意思,这是我一个做设计的朋友跟我吐槽的,嘿嘿,就怕哪天你copy了个rm -rf *
  • 每次看美国大片,发现那些电脑高手都在一个黑框框里啪啦啪啦的敲键盘,他们在敲啥呢?想不想成为他们一样的高手?

1.2 Linux是什么

  Linux,全称GNU/Linux,含义linux is not unix,自身解释自己,是一套免费使用和自由传播的类Unix操作系统;说白了就是跟你平时用的Windows一样是个操作系统,起到连接管理计算机硬件和软件的一个大程序;
  因为具有免费(有商业版收费)、完全开源、支持多用户多任务,跑程序任务稳定等优点,让他在程序员界是灰常有名气的,企业级项目基本都会部署到Linux系统;
  错觉:Linux比Window安全?该命题不一定成立,为啥有此错觉 ,因为在中国,整Windows的人比整Linux的人多,自然发现的隐患就多;

1.3 Linux创始人

  林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds,1969年12月28日- ),看名字就知道他和Linux之前的关系吧,芬兰赫尔辛基人,著名的大佬程序员,我辈之楷模,一般人我不告诉他,git也是他的杰作,牛吧?主要是头发还多,不用担心学Linux会秃头了吧?

大数据之路之Linux篇_第1张图片

图1.2 Linux之父Linus

1.4 Linux主要发行版本

  Linux还分不同的版本?是的,正经来说,Linux指的是Linux的内核,但是很多组织及机构呢基于这个内核上进行了自己特色的二次开发,就形成了各自特色的Linux系统;
  主要发型版本有Ubuntu,RedHat,CentOS(大数据用的较多,据说快消亡了,初学者不建议用)、AlmaLinux、Rocky Linux、Oracle Linux、Debian、deepin、opensuse、fedora等……
  系统间的指令和玩法95%都相同,所以懂得一个就能懂得其他的,莫慌!

大数据之路之Linux篇_第2张图片

图1.4 Linux内核

1.5 Linux和Unix前世今生

  • 上世纪70年代,美国通用电气、麻省理工、贝尔实验室三家合力开发分时操作系统Multics,遗憾最后整个计划以失败告终,但是却流下了宝贵的思想和代码;

  • 贝尔实验室的大佬Ken.Thompson就十分珍惜这些代码,自己在贝尔实验室继续努力,基于B语言开发了一个文件管理系统,其中的思想理念至今保留在了Unix和Linux上,即万物皆文件,小系统问世后在贝尔实验室内部使用,好评如潮;

  • Ken.Thompson的好基友Dennis Ritchie用完后更是称赞不已,觉得这东西不该只局限于贝尔实验室,应该被推广全世界,针对当时的不足以及B语言的不足,于是二位大佬又在B语言的基础上开发了C语言(牛,除了佩服只能佩服),并且用C语言重写了文件管理系统,命名Unix;

  • 80代,商业巨头们闻到了Unix的商机,各自开发了自己的Unix系统;同时也暴露除了两个弊端,商业版价格昂贵不开源;Unix必须跑在高性能的巨型计算机上;

  • 商业巨头插手后,大多数Unix收费,其中有个免费开源版本美国电话电报公司AT&T System V,被荷兰阿姆斯特丹的Vrije大学计算机科学系的Andrew S. Tanenbaum教授改写,命名Minix,用于教学工作,同时还提出一个构思,希望基于Minix的改进,Unix有一天能跑在个人计算机上;

  • Richard M.Stallman大佬,当时首屈一指的权威骇客,痛斥商业巨头对对软件的封闭,认为软件应该开源,商业应该靠服务赚钱,GUN拟定普遍公用版权协议(GeneralPublicLicense,简称GPL),GPL协议下认为自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开,即设定一个开源、免费的内核,内核以上的各种服务,应用可以是商业巨头门的收费内容;Linux的成功就得益于GPL协议。

  • 大佬Linus基于GUN计划和Minix思想,写了第一版Linux内核,放到了网上,引起了很多技术大佬的反应,各地网络界的雷锋纷纷支持改进,Linux开始不断发展;

  • 商业大佬们再次发现商机,基于Linux内核发展自己的Linux系统;于是百花齐放;
    大数据之路之Linux篇_第3张图片

图1.5 Linux和Unix的关系

  以下开始讲Linux基础及实操;采用和版本:CentOS7,这个版本也是大数据集群用的最多的一个版本;

2.Linux系统基础篇

2.1 Linux安装

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;

  • Linux基础篇——Linux(CentOS为例)的下载和安装

2.2 Linux用户管理、组管理、权限管理

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;

  • Linux基础篇——Linux用户管理、组管理、权限管理

2.3 Linux磁盘基础知识、分类、分区、挂载、卸载、扩容等操作;

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux基础篇——Linux磁盘操作(磁盘基础知识、分类、分区、挂载、卸载、扩容)详解

2.4 Linux网络配置(配置网卡、固定IP,固定hostname,终端远程登录)

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux基础篇——Linux网络配置(配置网卡、固定IP,固定hostname,终端远程)详解

2.5 Linux开关机、重启

  注意:如果是服务器,关机,重启,一定要在工作群或者邮件先通知相关的服务器user,该服务器是否可以重启,否则容易造成部分user的文件丢失,这时你少不了被请喝茶;而且开关机的账号一定要有sudo权限或者是root才行。

  • sync:把内存的数据同步到磁盘上

当我们关机或者重启时,都应该先执行3遍sync,防止数据丢失。重要的事做三遍;

  • shutdown

shutdown -h now:表示立即关机
shutdown -h 1:表示1分钟后关机
shutdown -r now:立即重启
shutdown -k 5 “Waring:maybe the system will be shutdown” :给所有系统的用户发一条警告信息,实际不会重启
man shutdown :查看更多的shutdown参数使用

  • halt

halt:直接使用,关机,简单

  • halt:直接使用,关机
  • reboot

reboot 重启系统

  • logout

logout:注销用户
登录时少用root账号登录,以避免操作失误的损失
平时可登录普通账户,再用“su - 用户名”切换成管理员登录,或者指令前面加sudo,临时将root权限赋值给该账号,前提是要该账号有sudo权限,不懂的可以参考本文2.2 Linux用户管理、组管理、权限管理

  • init

init 6:重启系统,这里采用的是Linux的运行级别,在3.1 Linux运行级别及找回root密码会细讲
init 0:关机,这里采用的是Linux的运行级别,在3.1 Linux运行级别及找回root密码会细讲

2.6 Linux的主要目录介绍

  • Linux的目录中有且只有一个根目录;
  • Linux是以文件的形式管理我们的设备,因此linux系统,一切皆为文件,而细分一下又可以理解为只有文件夹和文件两种;
  • Linux的目录存放有规划,乱放文件显得自己菜

  利用tree命令,查看linux的根目录\下的主要文件夹;

`sudo yum -y install tree`

tree -L 1
.
├── bin -> usr/bin
├── boot
├── data
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var


  或者可视化软件MobaXterm``xftp查看根目录下的主要文件夹如图2.6.1;
大数据之路之Linux篇_第4张图片

图2.6.1 图形界面化下的根目录下主要目录

  这些主要目录的解释如下;

  • /bin: 是Binary的缩写,这个目录存放着最经常使用的命令。
  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • /lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /etc:所有的系统管理所需要的配置文件和子目录my.conf。
  • /usr/local:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录,博主就喜欢把工具装在/usr/local/tools
  • /boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。
  • /srv:service的缩写,该目录存放一些服务启动之后需要提供的数据。
  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs。
  • /tmp:这个目录是用来存放一些临时文件的。
  • /dev:类似windows的设备管理器,把所有的硬件用文件的形式存储。
  • /media:linux系统会自动识别一些设备,例如U盘光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。
  • /opt:这是给主机额外安装软件所摆放的目录,如安装ORACLE数据库就可放到该目录下。默认为空。
  • /usr/local:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码的方式安装的程序。
  • /var:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。
  • /selinux:SELinux是一种安全子系统,它能控制程序只能访问特定文件。

3.Linux实操进阶篇

3.1 Linux运行级别及找回root密码

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux基础篇——Linux运行级别及找回root密码

3.2 Linux实用指令

3.2.1 帮助指令man、help

  用法

  • man [命令或配置文件]
  • help [命令或配置文件]
man ls

help cd

3.2.2 文件目录类指令

  用法

  • pwd:Print Working Directory,显示当前工作目录的绝对路径

  • ls:-a:显示当前目录所有的文件和目录,包括隐藏的; -l:以列表的方式显示信息。常用:ls -al 或ll

  • cd:切换文件夹,cd ~:回到自己的家目录;cd …:回到当前目录的上一级目录。

  • mkdir:创建目录;-p:创建多级目录。

  • rmdir:删除空目录。rmdir不能删除非空的目录。如果需要删除非空的目录,需要使用rm -rf。

  • cp:拷贝文件到指定目录; -r:递归复制整个文件夹。-f:强制覆盖不提示的方法:

  • rm:移除文件或目录; -r:递归删除整个文件夹; -f:强制删除不提示。

  • mv:移动文件与目录或重命名,两种功能!

  • touch:创建空文件。可以一次性创建多个文件;

  • ln 给文件创建一个软连接,类似windows的快捷方式 用法:ln -sf [源文件或目录] [软连接名]

# 查看当前路径 pwd
[root@centos-7 local]# pwd
/usr/local

# 预览当前路径的文件 ls -al 或 ll
[root@centos-7 local]# ls -al
总用量 0
drwxr-xr-x. 12 root root 131 527 2021 .
drwxr-xr-x. 13 root root 155 527 2021 ..
drwxr-xr-x.  2 root root   6 411 2018 bin
drwxr-xr-x.  2 root root   6 411 2018 etc
drwxr-xr-x.  2 root root   6 411 2018 games
drwxr-xr-x.  2 root root   6 411 2018 include
drwxr-xr-x.  2 root root   6 411 2018 lib
drwxr-xr-x.  2 root root   6 411 2018 lib64
drwxr-xr-x.  2 root root   6 411 2018 libexec
drwxr-xr-x.  2 root root   6 411 2018 sbin
drwxr-xr-x.  5 root root  49 527 2021 share
drwxr-xr-x.  2 root root   6 411 2018 src

# 创建文件夹 mkdir
[root@centos-7 local]# mkdir tools

# 创建多级文件夹 mkdir -p 
[root@centos-7 local]# mkdir -p tools/java

# 切换目录 cd 
[root@centos-7 local]# cd tools/

# 预览该目录下的内容
[root@centos-7 tools]# ls
java

# copy文件
[root@centos-7 tools]# cp /root/anaconda-ks.cfg java/
[root@centos-7 tools]# cd java
[root@centos-7 java]# ls
anaconda-ks.cfg

# 重命名文件
[root@centos-7 java]# mv anaconda-ks.cfg  anaconda-ks.cfg_bak
[root@centos-7 java]# ls
anaconda-ks.cfg_bak

# 新建文件
[root@centos-7 java]# touch test.sh
[root@centos-7 java]# ls
anaconda-ks.cfg_bak  test.sh

# 创建软链接
[root@centos-7 java]# ln -sf test.sh test
[root@centos-7 java]# ll
总用量 4
-rw-------. 1 root root 1719 29 10:54 anaconda-ks.cfg_bak
lrwxrwxrwx. 1 root root    7 29 10:55 test -> test.sh
-rw-r--r--. 1 root root    0 29 10:55 test.sh

# 删除文件
[root@centos-7 java]# rm -rf anaconda-ks.cfg_bak
[root@centos-7 java]# ll
总用量 0
lrwxrwxrwx. 1 root root 7 29 10:55 test -> test.sh
-rw-r--r--. 1 root root 0 29 10:55 test.sh

3.2.6 文件查看指令

  • cat:查看文件内容。只能浏览文件,而不能修改文件。 -n:显示行号。 结尾加上 | more:分页显示,不会全部一下显示完。
  • more:是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more还内置了很多快捷键: 空白键(Space):向下翻一页 Enter:向下翻一行 q:立刻离开more,不再显示该文件内容 Ctrl + F:向下滚动一屏 Ctrl + B:返回上一屏 = :输出当前行的行号 :f 输出文件名和当前行的行号
  • less:用来分屏查看文件内容,与more相似,但是更强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容。对于显示大型文件具有较高的效率。
  • head:显示文件的开头部分。-n 5:看前面5行内容。
  • tail:输出文件中尾部的内容。 -n 5:看后面5行内容。 -f:时事追踪该文档的所有更新,Ctrl+z结束
  • >指令:输出重定向。如果不存在会创建文件,否则会将原来的文件内容覆盖。
  • >>指令:追加。如果不存在会创建文件,否则不会覆盖原来的文件内容,而是追加到文件的尾部。
  • echo:输出内容到控制台。
  • history:查看历史指令。
# cat 查看文件内容
[root@centos-7 doc]# pwd
/usr/local/doc
[root@centos-7 doc]# ll
总用量 32
-rw-r--r--. 1 root root 26850 29 11:54 learn_english.txt
-rw-r--r--. 1 root root    12 29 11:55 test.txt

[root@centos-7 doc]# cat learn_english.txt
[root@centos-7 doc]# cat learn_english.txt | more

# more less 分页显示文件内容
[root@centos-7 doc]# more learn_english.txt
[root@centos-7 doc]# less learn_english.txt

# haed 显示文件开头 或者前5行
[root@centos-7 doc]# head learn_english.txt
[root@centos-7 doc]# head -n 5 learn_english.txt

# tail 显示文件末尾,-n 5:看后面5行内容。 -f:时事追踪该文档的所有更新
[root@centos-7 doc]# tail -n 5 learn_english.txt
[root@centos-7 doc]# tail -n 5 -f  learn_english.txt

# echo 输出到屏幕
[root@centos-7 doc]# echo "hello world"
hello world

# 出书重定向>和追加>>
[root@centos-7 doc]# echo "hello world" > test.txt
[root@centos-7 doc]# cat test.txt
hello world
[root@centos-7 doc]# echo "hello linux" >> test.txt
[root@centos-7 doc]# cat test.txt
hello world
hello linux

# 查看历史命令
[root@centos-7 doc]# history
[root@centos-7 doc]# history | grep echo
  139  echo "hello world" >> learn_english.txt
  142  echo "hello world" > test.txt
  159  echo "hello world" > test.txt
  161  echo "hello world"
  162  echo "hello linux" >> test.txt
  164  history | grep echo

# 查看历史命令也可以按住 Ctrl+r,然后输入你要的命名,没有的话一直按Ctrl+r,往上找,直到找到为止
(reverse-i-search)`ech': echo "hello world"

#同时方向键 ↑和↓也可以切换历史命令
[root@centos-7 doc]# history | grep echo

3.2.7 日历指令date、cal

-date:显示当前日期和时间

  1. date “+%Y”:显示当前年份
  2. date “+%d”:显示当前月份
  3. date “+%Y-%m-%d %H:%M:%S”:显示年-月-日 时:分:秒
  4. 设置日期:date -s 字符串时间
  • cal:查看日历指令
  1. cal [月] [年份]:显示某一年或月的日历
# date用法
[root@centos-7 doc]# date "+%Y-%m-%d %H:%M:%S"
2022-02-09 00:12:31

[root@centos-7 doc]# date -s "20220209"
2022年 02月 09日 星期三 00:00:00 CST

# cal 用法
[root@centos-7 doc]# cal 10 02 2022
      二月 2022
日 一 二 三 四 五 六
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28

[root@centos-7 doc]# cal -3
      一月 2022             二月 2022             三月 2022
日 一 二 三 四 五 六  日 一 二 三 四 五 六  日 一 二 三 四 五 六
                   1         1  2  3  4  5         1  2  3  4  5
 2  3  4  5  6  7  8   6  7  8  9 10 11 12   6  7  8  9 10 11 12
 9 10 11 12 13 14 15  13 14 15 16 17 18 19  13 14 15 16 17 18 19
16 17 18 19 20 21 22  20 21 22 23 24 25 26  20 21 22 23 24 25 26
23 24 25 26 27 28 29  27 28                 27 28 29 30 31


3.2.8 查找指令find、location、grep

  • find:从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端。
  1. find (搜索范围) -name (文件名):按照指定的文件名查找模式查找文件。
  2. find (搜索范围) -user (用户名):按照指定的用户名查找模式查找文件。
  3. find (搜索范围) -size (+多少/-多少/多少):按照指定的文件大小查找模式查找文件(大于多少/小于多少/等于多少)
  4. 查询 /目录下所有.txt的文件:find / -name "*.txt"
  • locate:locate (搜索文件), 可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。 locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。 在第一次运行之前,必须使用updatedb指令创建locate数据库。
  • grep:过滤查找,表示将前一个命令的处理结果输出传递给后面的命令处理。经常跟管道一起使用。
    grep [选项] 查找内容 源文件 -n:显示匹配行及行号。 -i:忽略大小写字母。
# find 用法,查找所有txt文件
find / -name "*.txt"

# 查找当前的root用户的文件
[root@centos-7 doc]# find -user root
.
./learn_english.txt
./test.txt
./others

# 查找当前文件大于27k
[root@centos-7 doc]# find -size +25k
./learn_english.txt

# locate 查找文件路径
[root@centos-7 /]# locate learn_english.txt
/usr/local/doc/learn_english.txt
# locate 模糊定位
[root@centos-7 /]# locate "learn_"
/usr/local/doc/learn_english.txt
/usr/share/help/C/orca/howto_learn_modes.page

# grep 查看过滤文本内容
[root@centos-7 /]# cat /usr/local/doc/learn_english.txt | grep -n "hello"
221:hello world

3.2.12 压缩和解压指令

  • gzip/gunzip:压缩文件/解压
  1. gzip (文件):压缩为.gz文件,原来文件不保留。
  2. gunzip (文件):解压缩,同样也不保留源文件。
  • zip/unzip:压缩文件/解压
  1. zip [选项] (压缩后文件xxx.zip) (将要压缩的文件)
  2. unzip [选项] (要解压的文件xxx.zip)
  3. zip -r:递归压缩,即压缩目录
  4. unzip -d (目录):指定解压后的文件的存放目录
  • tar:打包指令,最后打包后的文件是.tar.gz的文件
    tar [选项] xxx.tar.gz (打包的内容)
    选项与参数:
    -c : 创建打包文件, 可搭配 -v 来察看过程中被打包的文件名( filename)
    -t : 察看打包文件的内容含有哪些文件名, 重点在察看“文件名”就是了;
    -x : 解打包或解压缩的功能, 可以搭配 -C ( 大写) 在特定目录解开,特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。
    -z : 通过 gzip 的支持进行压缩/解压缩: 此时文件名最好为 *.tar.gz
    -j : 通过 bzip2 的支持进行压缩/解压缩: 此时文件名最好为 *.tar.bz2
    -J : 通过 xz 的支持进行压缩/解压缩: 此时文件名最好为 *.tar.xz,特别留意, -z, -j, -J 不可以同时出现在一串命令行中
    -v : 在压缩/解压缩的过程中, 将正在处理的文件名显示出来!
    -f filename: -f 后面要立刻接要被处理的文件名! 建议 -f 单独写一个选项啰! ( 比较不会忘记)
    -C 目录 : 这个选项用在解压缩, 若要在特定目录解压缩, 可以使用这个选项。
    -p( 小写) : 保留备份数据的原本权限与属性, 常用于备份( -c) 重要的配置文件
    -P( 大写) : 保留绝对路径, 亦即允许备份数据中含有根目录存在之意;
    –exclude=FILE: 在压缩的过程中, 不要将 FILE 打包!
  1. 压缩:tar -zcvf (压缩后文件名) (要压缩的文件)
  2. 解压:tar -zxvf (要解压的文件)
  3. 解压到指定目录:tar -zxvf (要解压的文件) -C (指定目录),指定解压到的目录要存在。
# gzip 压缩和gunzip解压
[root@centos-7 doc]# ll
总用量 32
-rw-r--r--. 1 root root 26850 29 2022 learn_english.txt
drwxr-xr-x. 2 root root     6 28 00:06 others
-rw-r--r--. 1 root root    24 29 2022 test.txt

[root@centos-7 doc]# gzip learn_english.txt
[root@centos-7 doc]# ll
总用量 8
-rw-r--r--. 1 root root 1119 29 2022 learn_english.txt.gz
drwxr-xr-x. 2 root root    6 28 00:06 others
-rw-r--r--. 1 root root   24 29 2022 test.txt
[root@centos-7 doc]# gunzip learn_english.txt.gz
[root@centos-7 doc]# ll
总用量 32
-rw-r--r--. 1 root root 26850 29 2022 learn_english.txt
drwxr-xr-x. 2 root root     6 28 00:06 others
-rw-r--r--. 1 root root    24 29 2022 test.txt

# zip 和 unzip
[root@centos-7 doc]# zip learn_english.zip learn_english.txt
  adding: learn_english.txt (deflated 96%)
[root@centos-7 doc]# ll
总用量 36
-rw-r--r--. 1 root root 26850 29 2022 learn_english.txt
-rw-r--r--. 1 root root  1267 28 01:28 learn_english.zip
drwxr-xr-x. 2 root root     6 28 00:06 others
-rw-r--r--. 1 root root    24 29 2022 test.txt
[root@centos-7 doc]# unzip learn_english.zip
Archive:  learn_english.zip
replace learn_english.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: learn_english.txt
[root@centos-7 doc]# ll
总用量 36
-rw-r--r--. 1 root root 26850 29 2022 learn_english.txt
-rw-r--r--. 1 root root  1267 28 01:28 learn_english.zip
drwxr-xr-x. 2 root root     6 28 00:06 others
-rw-r--r--. 1 root root    24 29 2022 test.txt

# tar解压和压缩
[root@centos-7 doc]# tar -zcvf ../files/learn_english.tar.gz ./learn_english.txt
./learn_english.txt
[root@centos-7 doc]# ls ../files/
learn_english.tar.gz

[root@centos-7 doc]# cd ../files/
[root@centos-7 files]# ll
总用量 4
-rw-r--r--. 1 root root 1204 28 01:37 learn_english.tar.gz
[root@centos-7 files]# tar -zxvf ./learn_english.tar.gz -C ../doc/
./learn_english.txt
tar: ./learn_english.txt:时间戳 2022-02-09 11:54:20 是未来的 123292.314216 秒之后

  以上就是一些常用的linux命令,实际的linux命令是列举不全的,而且不同版本系统的linux命令也会略有差别,需要读者有举一反三的精神,有问题多百度。

3.3 Linux调度任务crontab,at

  • 基本语法
    crontab [选项]
  • 选项说明
表3.3.1 crontab选项参数
选项 功能
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
# 查看crontab任务
[root@centos-7 files]# crontab -l
no crontab for root

# 编辑crontab任务
[root@hadoop101 ~]# crontab -e 
# 进入crontab编辑界面。会打开vim编辑你的工作。

#新增,然后wq! 保存退出后就可生效
*/1 * * * * echo "hello world" >> /usr/local/doc/hello.txt

# 然后监控该文件,发现确实每分钟会追加一条hello world,证明成功了
[root@centos-7 doc]# tail -n 50 -f /usr/local/doc/hello.txt
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world



# 再查看crontab任务
[root@centos-7 files]# crontab -l
*/1 * * * * echo "hello world" >> /usr/local/doc/hello.txt

# 删除root下的所有crontab
[root@centos-7 files]# crontab -r

# 再查看crontab任务
[root@centos-7 files]# crontab -l
no crontab for root

  • 编辑crontab任务
    语法:cron时间表达式 shell语句或者shell脚本 :简单的直接写shell语句,复杂的要写入shell脚本,然后执行shell脚本;

  cron时间表达式具体说明如表3.3.2,这一块是重点;

表3.3.2 cron时间表达式
项目 含义 取值范围
第一个“*” 一小时当中的第几分钟 0-59
第二个“*” 一天当中的第几小时 0-23
第三个“*” 一个月当中的第几天 1-31
第四个“*” 一年当中的第几月 1-12
第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)

  cron时间表达式中的特殊符号含义如表3.3.3,主要是针对一些特殊的调度取值范围。

表3.3.3 cron时间表达式中的特殊符号含义
特殊符号 含义
* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令

  cron时间表达式的一些例子。

表3.3.4 cron时间表达式举例
时间举例 含义
45 22 * * * 命令 在22点45分执行命令
0 17 * * 1 命令 每周1 的17点0分执行命令
0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令
*/10 4 * * * 命令 每天的凌晨4点,每隔10分钟执行一次命令
0 0 1,15 * 1 命令 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。

  注意:时至今日,crontab调度因为其命令行操作的不方便以及易错性,早已经基本不用了,取而代之的是各种稳定的调度器,如Azkaban、DolphinScheduler等,但是其经典cron时间表达式却一直在各种时间调度器上沿用,希望读者必须牢记掌握。

  • at 一次性调度任务
    选项与参数:
    -m : 当 at 的工作完成后, 即使没有输出讯息, 亦以 email 通知使用者该工作已完成。
    -l: at -l 相当于 atq, 列出目前系统上面的所有该使用者的 at 调度;
    -d : at -d 相当于 atrm , 可以取消一个在 at 调度中的工作;
    -v : 可以使用较明显的时间格式列出 at 调度中的工作列表;
    -c : 可以列出后面接的该项工作的实际指令内容。
    TIME: 时间格式, 这里可以定义出“什么时候要进行 at 这项工作”的时间, 格式有:
    HH:MM04:00,在今日的 HH:MM 时刻进行, 若该时刻已超过, 则明天的 HH:MM 进行此工作。
    HH:MM YYYY-MM-DD 如; 04:00 2015-07-30
    强制规定在某年某月的某一天的特殊时刻进行该工作!
    HH:MM[am|pm] [Month] [Date] 如:04pm July 30
    也是一样, 强制在某年某月某日的某时刻进行!
    HH:MM[am|pm] + number [minutes| hours|days|weeks]now + 5 minutes , 04pm + 3 days
    就是说, 在某个时间点“再加几个时间后”才进行。
# 5分钟后执行保存
[hadoop@centos-7 system]$ at now + 5 minutes
at> /bin/sync
at> /bin/sync
at> /sbin/reboot
at> <EOT>    # 按ctrl+d 结束
job 1 at Tue Feb 22 11:01:00 2022

# 查看该账号下的at工作
[hadoop@centos-7 system]$ at -l
1       Tue Feb 22 11:01:00 2022 a hadoop

# 将1号at工作移除
[hadoop@centos-7 system]$ atrm 1··

3.4 Linux进程管理

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux基础篇——Linux进程、服务管理

3.5 Linux软件管理RPM、YUM、TAR

  时至今日,linux软件管理的两大主流门派分别是RPM和DPKG,分别如表3.5.0,本教程中基本都是以CentOS为主,此处就简单介绍下RPM相关的软件机制?

表3.5.0 linux软件管理的两大主流门派
系统代表 软件管理机制 使用指令 在线升级指令
RedHat/Fedora RPM rpm,rpmbuild yum
Debain/Ubuntu DPKG dpkg APT(apt-get)

3.5.1 软件管理RPM——默认安装路径

  rpm软件管理机制固然方便好用,但是对于新手来说最大吐槽的地方也是,我自己安装的软件去哪里了?特别是如安装一些JDK,git等软件时,要配置环境变量往往出现找不到软件根目录的情况,表3.5.1就是记录rpm的一些默认安装目录。

表3.5.1 rpm的默认 路径
默认路径 说明
/etc 一些配置文件放置的目录, 例如 /etc/crontab
/usr/bin 一些可可执行文件案
/usr/lib 一些程序使用的动态函数库
/usr/share/doc 一些基本的软件使用手册与说明文档
/usr/share/man 一些 man page 文件

3.5.2 软件管理RPM——rpm qa软件查询

  • 指令rpm qa,查询服务器上rpm包安装的相关软件,常常配合rpm qa | grep ***rpm qa | more等使用。
    选项与参数:
    -q : 仅查询, 后面接的软件名称是否有安装;
    -qa : 列出所有的, 已经安装在本机 Linux 系统上面的所有软件名称;
    -qi : 列出该软件的详细信息 ( information) , 包含开发商、 版本与说明等;
    -ql : 列出该软件所有的文件与目录所在完整文件名 ( list) ;
    -qc : 列出该软件的所有配置文件 ( 找出在 /etc/ 下面的文件名而已)
    -qd : 列出该软件的所有说明文档 ( 找出与 man 有关的文件而已)
    -qR : 列出与该软件有关的相依软件所含的文件 ( Required 的意思)
    -qf : 由后面接的文件名称, 找出该文件属于哪一个已安装的软件;
    -q --scripts: 列出是否含有安装后需要执行的脚本档, 可用以 debug 喔!
    查询某个 RPM 文件内含有的信息:
    -qp[icdlR]: 注意 -qp 后面接的所有参数以上面的说明一致。 但用途仅在于找出某个 RPM 文件内的信息, 而非已安装的软件信息! 注意
      实战代码;
# 查看git相关的已安装软件
[mrcdev@jq-mrc-250068 ~]$ rpm -qa | grep git
linux-firmware-20180220-62.2.git6d51311.el7_5.noarch
lm_sensors-libs-3.4.0-4.20160601gitf9185e5.el7.x86_64
crontabs-1.11-6.20121102git.el7.noarch
net-tools-2.0-0.22.20131004git.el7.x86_64
git-1.8.3.1-14.el7_5.x86_64

3.5.3 软件管理RPM——rpm软件安装、卸载

  • 指令:rpm -ivhe package_name
    选项与参数:
    -i : install 的意思
    -v : 察看更细部的安装信息画面
    -h : 以安装信息列显示安装进度
    -e :卸载软件

  实战代码;


# 安装原版光盘上的 rp-pppoe 软件
[root@study ~]# rpm -ivh /mnt/Packages/rp-pppoe-3.11-5.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:rp-pppoe-3.11-5.el7 ################################# [100%]

  如果安装软件的依赖导致无法安装,但是你执意要安装可以做到吗?其实是可以的,安装软件时还可以有以下安装参数选项;

--nodeps:使用时机: 当发生软件属性相依问题而无法安装, 但你执意安装时危险性: 软件会有相依性的原因是因为彼此会使用到对方的机制或功能, 如果强制安装而不考虑软件的属性相依, 则可能会造成该软件的无法正常使用!
--prefix: 新路径使用时机: 要将软件安装到其他非正规目录时。 举例来说, 你想要将某软件安装到 /usr/local 而非正规的 /bin, /etc 等目录, 就可以使用“ --prefix /usr/local ”来处理了,这个较为常用,重点,重点,重点
--replacefiles:使用时机: 如果在安装的过程当中出现了“某个文件已经被安装在你的系统上面”的信息, 又或许出现版本不合的讯息 ( confilcting files) 时, 可以使用这个参数来直接覆盖文件。 危险性: 覆盖的动作是无法复原的!所以, 你必须要很清楚的知道被覆盖的文件是真的可以被覆盖喔! 否则会欲哭无泪!
--replacepkgs:使用时机: 重新安装某个已经安装过的软件! 如果你要安装一堆 RPM 软件文件时, 可以使用 rpm -ivh *.rpm , 但若某些软件已经安装过了, 此时系统会出现“某软件已安装”的信息, 导致无法继续安装。 此时可使用这个选项来重复安装喔!
--force: 使用时机: 这个参数其实就是 --replacefiles 与 --replacepkgs 的综合体!
--test:使用时机: 想要测试一下该软件是否可以被安装到使用者的 Linux 环境当中, 可找出是否有属性相依的问题。 范例为:rpm -ivh pkgname.i386.rpm --test
--justdb 使用时机: 由于 RPM 数据库破损或者是某些缘故产生错误时, 可使用这个选项来更新软件在数据库内的相关信息。
--nosignature: 使用时机: 想要略过数码签章的检查时, 可以使用这个选项。
--prefix: 新路径使用时机: 要将软件安装到其他非正规目录时。 举例来说, 你想要将某软件安装到 /usr/local 而非正规的 /bin, /etc 等目录, 就可以使用“ --prefix /usr/local ”来处理了。
--noscripts:使用时机: 不想让该软件在安装过程中自行执行某些系统指令。 说明:RPM 的优点除了可以将文件放置到定位之外, 还可以自动执行一些前置作业的指令, 例如数据库的初始化

3.5.4 软件管理RPM——rpm升级与更新

  • 指令rpm 选项 包名
  • 选项与参数
    -Uvh:后面接的软件即使没有安装过, 则系统将予以直接安装; 若后面接的软件有安装过旧版, 则系统自动更新至新版;
    -Fvh:如果后面接的软件并未安装到你的 Linux 系统上, 则该软件不会被安装; 亦即只有已安装至你 Linux 系统内的软件会被“升级”!

3.5.5 软件管理YUM——在线升级机制

   yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
  都有了rpm,为啥还要yum呢?因为yum也是基于RPM包管理,而且能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装,简直不要太方便呀,唯一的缺点就是要网。

  • 指令 yum [option] [查询工作项目] [相关参数]

安装,升级,卸载的选项与参数:
[option]: 主要的选项, 包括有:
install : 后面接要安装的软件!
update : 后面接要升级的软件, 若要整个系统都升级, 就直接 update 即可
remove:后面接要卸载的软件

相关参数:
-y : 当 yum 要等待使用者输入时, 这个选项可以自动提供 yes 的回应;
--installroot=/some/path : 将该软件安装在 /some/path 而不使用默认路径

查询相关的的选项:

search : 搜寻某个软件名称或者是描述 ( description) 的重要关键字;
list : 列出目前 yum 所管理的所有的软件名称与版本, 有点类似 rpm -qa;
info : 同上, 不过有点类似 rpm -qai 的执行结果;
provides: 从文件去搜寻软件! 类似 rpm -qf 的功能!

  实战例子;

  • yum list | grep xx:查询yum服务器是否有需要安装的软件
  • yum install xx:安装指定的yum包
  • yum -y remove xx:卸载指定的yum包

3.5.6 软件管理YUM——配置文件

  正确使用的前提下,一般只要你的服务器联网了,就能正常使用yum,但是有些人的可能发现就算联网了yum无法正常使用,甚至是安装或者更新的很慢,怎么回事呢?原因就在于配置文件上选映射的站点问题导致的;
  进入实操环节;

# 进入yum的配置文件夹
[root@node1 yum.repos.d]# cd /etc/yum.repos.d/

# 查看下配置文件下,特别注意下CentOS-Base.repo这个文件,可以打开里面的内容看一下
[root@node1 yum.repos.d]# ll
总用量 40
-rw-r--r--. 1 root root 1664 327 10:49 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 1023 2020 CentOS-CR.repo
-rw-r--r--. 1 root root  649 1023 2020 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 1023 2020 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 1023 2020 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 1023 2020 CentOS-Sources.repo
-rw-r--r--. 1 root root 8515 1023 2020 CentOS-Vault.repo
-rw-r--r--. 1 root root  616 1023 2020 CentOS-x86_64-kernel.repo

# 备份一下自带的映射文件
[root@node1 yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 下载国内的知名镜像,如网易163,阿里,知名高校等,这里以网易为例
[root@node1 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

# 清空配置缓存,重新加载下yum资源库
[root@node1 yum.repos.d]# yum clean all
[root@node1 yum.repos.d]# yum makecache

3.5.7 软件管理tar——Tarball管理(编译好的)

  有了rpmyum这么方便的软件管理工具,为啥还要学习Tarball呢?,原因很简单rpm,/yum是需要有勤劳的网络雷锋实现给你编译,再做成rpm包放到相应的网站内供你使用,但是并不是所有人都这么勤快呀,对吧,比如大数据最典型的hadoop家族系列,hads,hive,hbase,以及计算框架spark,flink等,基本rpm都不常用(也不是完全没有rpm的大数据软件,最战斗名族的clickhouse就是推荐rpm安装),都是编译 的Tarball,所以如果学习大数据,Tarball的学习是很重要的,而且tarball安装的最大的一个优点:安装软件的根目录一目了然;此处的Tarball主要讲的是编译后的Tarball,源码系列下一节再讲。
  所谓的 Tarball 文件, 其实就是将软件的所有源代码文件先以 tar 打包, 然后再以压缩技术来压缩, 通常最常见的就是以 gzip 来压缩了。 因为利用了 tar 与 gzip 的功能, 所以 tarball 文件一般的扩展名就会写成 .tar.gz 或者是简写为 .tgz 啰! 不过, 近来由于 bzip2 与 xz 的压缩率较佳, 所以 Tarball 渐渐的以 bzip2 及 xz 的压缩技术来取代 gzip 啰! 因此文件名也会变成.tar.bz2, .tar.xz 之类的哩。 所以说, Tarball 是一个软件包, 你将他解压缩之后就能看到里面的文件分布了,所以tar 命令的学习是基础,不熟悉的可以参考下章节3.2.12 压缩和解压指令;
  以 hive的tarball来实战一番。

# 准备好我刚下载的hive tarball
[root@node1 hive]# cd /usr/local/tools/hive
[root@node1 hive]# ll
总用量 226592
-rw-r--r--. 1 root root 232027212 327 11:46 apache-hive-2.3.5-bin.tar.gz

# 解压到当前文件夹
[root@node1 hive]# tar -zxvf apache-hive-2.3.5-bin.tar.gz

# 查看解压后的文件
[root@node1 hive]# ll
总用量 226596
drwxr-xr-x. 10 root root      4096 327 11:46 apache-hive-2.3.5-bin
-rw-r--r--.  1 root root 232027212 327 11:46 apache-hive-2.3.5-bin.tar.gz

# 进入文件夹查看
[root@node1 hive]# cd apache-hive-2.3.5-bin/

# 查看下文件夹内的内容
[root@node1 apache-hive-2.3.5-bin]# ll
总用量 80
drwxr-xr-x. 3 root root  4096 327 11:46 bin
drwxr-xr-x. 2 root root  4096 327 11:46 binary-package-licenses
drwxr-xr-x. 2 root root  4096 327 11:46 conf
drwxr-xr-x. 4 root root  4096 327 11:46 examples
drwxr-xr-x. 7 root root  4096 327 11:46 hcatalog
drwxr-xr-x. 2 root root  4096 327 11:46 jdbc
drwxr-xr-x. 4 root root 20480 327 11:46 lib
-rw-r--r--. 1 root root 20798 57 2019 LICENSE
-rw-r--r--. 1 root root   230 58 2019 NOTICE
-rw-r--r--. 1 root root   277 58 2019 RELEASE_NOTES.txt
drwxr-xr-x. 4 root root  4096 327 11:46 scripts

  常见的文件夹解析;

bin : 一般就是软件的启动相关的脚本,注意window里面一般是.exe对吧,这里肯定不是,一般是一段shell脚本。
conf:一般是配置相关的文件,涉及一些可配置的动态参数,如内存大小呀,集群名称等
lib :一般是工具用到的函数库,如果工具用java编写,就基本是jar包了
为何这里用了一般呢,因为每个tar的设计不一样,具体还是要多参考该工具的官网或者文件的readme.md说明书。

  本节重在介绍tarball安装说明,具体的hive安装完整步骤可以参考章节4.2.6 安装hive

3.5.8 软件管理源码安装——Tarball源码和SRPM源码

  源码?要编译?别讲了,我不用,头大,我不听,其实对于大多数人来说,一讲到源码,毕竟不是自己写的嘛,就头大,特别是用惯了window的同学,安装软件不是下一步,下一步,完成吗?什么是源码?但是使用工具时,我们是否有这样的困惑,自己增加或者减少该软件的某些功能时, 大概只能求助于当初发行该软件的厂商了! ( 这就是所谓的商机吗?而且还是垄断的哟~ ),或者别说功能模块这么高深,我对软件的某些配置参数,如某个界面的显示比例,某些性能的参数不满意,我想改一下,可以吗?window下。一般是不行的,但是Linux下,如果你有源码,就可以。

  • tarball源码
      先讲一下tarball的源码,一般tarball的源码都带有关键字src,如apache-hive-2.3.5-src.tar.gz;
  1. 取得原始文件: 将 tarball 文件在 /usr/local/src 目录下解压缩;
  2. 取得步骤流程: 进入新创建的目录下面, 去查阅 INSTALL 与 README 等相关文件内容
    ( 很重要的步骤! ) ;
  3. 相依属性软件安装: 根据 INSTALL/README 的内容察看并安装好一些相依的软件 ( 非
    鸟哥的 Linux 私房菜: 基础学习篇 第四版
    21.4 Tarball 的管理与建议 1028必要) ;
  4. 创建 makefile: 以自动侦测程序 ( configure 或 config) 侦测作业环境, 并创建 Makefile
    这个文件;
  5. 编译: 以 make 这个程序并使用该目录下的 Makefile 做为他的参数配置文件, 来进行
    make ( 编译或其他) 的动作;
  6. 安装: 以 make 这个程序, 并以 Makefile 这个参数配置文件, 依据 install 这个标的
    ( target) 的指定来安装到正确的路径!

  在大数据行业有个软件的安装就很符合这个特点,那就是调度器工具Azkaban,如图3.5.8,具体可以参看Azkaban官网,Azkaban源码编译安装;
大数据之路之Linux篇_第5张图片

图3.5.8 Azkaban的安装
  • rpm源码SRPM

  srpm文件也带有关键字src,假设我下载了一个 SRPM 的文件, 又不想要修订这个文件内的源代码与相关的设置值, 那么我可以直接编译并安装吗? 当然可以! 利用 rpmbuild 配合选项即可。 选项主要有下面两个:

选项 说明
–rebuild 这个选项会将后面的 SRPM 进行“编译”与“打包”的动作, 最后会产生 RPM的文件, 但是产生的 RPM 文件并没有安装到系统上。 当你使用 --rebuild 的时候, 最后通常会发现一行字体:Wrote: /root/rpmbuild/RPMS/x86_64/pkgname.x86_64.rpm 这个就是编译完成的 RPM 文件啰! 这个文件就可以用来安装啦! 安装的时候请加绝对路径来安装即可!
–recompile 这个动作会直接的“编译”“打包”并且“安装”啰! 请注意, rebuild 仅“编译并打包”而已, 而 recompile 不但进行编译跟打包, 还同时进行“安装”了!不过, 要注意的是, 这两个选项都没有修改过 SRPM 内的设置值, 仅是通过再次编译来产生RPM 可安装软件文件而已。 一般来说, 如果编译的动作顺利的话, 那么编译过程所产生的中间暂存盘都会被自动删除, 如果发生任何错误, 则该中间文件会被保留在系统上, 等待使用者的除错动作!

  针对源码安装这一块呢 ,一般确实用的比较少,就不展开描述了,也不是需要你对每个开源软件都了如指掌,结合自己的行业,针对某两三个软件的 源码很了如指掌已经很厉害了,甚至就可以直接去原厂商上班了。

3.5.9 软件验证——如何验证软件是官网提供的(未被黑客,第三方更改过)

  有些官网软件太大了,我下载起来太慢了 ,我看到网上有个其他镜像文件链接或者网盘也有这个工具,我可不可以从这个地方下载呢?当然,可以,但是你担不担心这个软件被第三方或者黑客更改过再上传到某些网站的呢?黑客这么厉害?嘿嘿,那是当然的,那有没有办法验证这个软件是官网提供的呢?当然有,以Hive的tar包为例子;
  常见的指纹验证机制有md5sum / sha1sum / sha256sum,因为每个文件的内容与文件大小都不相同, 所以如果一个文件被修改之后, 必然会有部分的信息不一样! 利用这个特性, 我们可以使用 MD5/sha1 或更严密的 sha256 等指纹验证机制来判断该文件有没有被更动过!

  如图3.5.9,在官网找到你要下载的软件的指纹验证机制文件,软件太大不好下载,这个文件基本上就是秒开或者秒下载的,因为内容非常少;
大数据之路之Linux篇_第6张图片

图 3.5.9 软件码值验证

  点击链接部分就会跳转到以下部分;

94e93f71ce64fe59dd50956dcd47162a05c41db152907bec309f093604ab1786 apache-hive-2.3.5-bin.tar.gz

  接下来就是在你Linux服务器上利用指纹验证码指令验证下你的包的加码码值,看看是否跟官网一致,如果不一致,那么你下载的软件包还是要慎用哟。

[root@node1 hive]# sha256sum apache-hive-2.3.5-bin.tar.gz
94e93f71ce64fe59dd50956dcd47162a05c41db152907bec309f093604ab1786  apache-hive-2.3.5-bin.tar.gz

4. Linux大数据集群篇

4.1 Linux免密登录

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;花式玩转Linux集群免密登录

4.2 大数据软件安装

4.2.1 安装JDK 及配置环境变量

 #新建java的根folder
 mkdir -p /usr/local/tools/java    

 #切换至/usr/local/tools/java  folder下
 cd /usr/local/tools/java   
 
 #JDK下载链接可以自己去Oracle官网下载查询,需要注册Oracle账号,不然不让下,建议下载tar包,比较好全局掌控
 wget JDK下载链接    

 #解压tar包
 tar -zxvf jdk-8u211-linux-x64.tar.gz   
  
#解压后的folder文件名很长,为了方便使用可以设一个软件,类似于Windows下的快捷方式,代码如下
ln -sf /usr/local/tools/java/jdk1.8.0_211/ /usr/local/tools/java/jdk8    


#配置环境变量
vim /etc/profile   
/*
 打开环境变量文件,新增:
export JAVA_HOME=/usr/java/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export  PATH=${JAVA_HOME}/bin:$PATH
*/

#重启环境变量服务
source /etc/profile    

#在任意folder内输入,检查Java版本,会以下提示版本号,则安装成功
java -version   
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

4.2.2 安装python

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux通过anaconda来安装python

4.2.3 安装mysql

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux(CentOS-7)下安装MySQL-5.7.30

4.2.4 安装ftp

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux基础篇——ftp的安装与配置

4.2.5 安装hadoop(hdfs,mapreduce,yarn)

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Hadoop集群大数据解决方案之搭建Hadoop3.X+HA模式(二)

4.2.6 安装hive

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Hive从入门到放弃——Hive安装和基本使用(二)

4.2.7 安装spark

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Spark从入门到放弃——Spark2.4.7安装和启动(二)

4.2.8 安装kafka

  更新中,敬请期待……

4.2.9 安装flink

  更新中,敬请期待……

4.2.10 安装flume

  更新中,敬请期待……

4.2.11 安装clickhouse

  更新中,敬请期待……

4.2.12 安装azkaban

  更新中,敬请期待……

4.2.13 安装dolphinschedule

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Apache DolphinScheduler——开源大数据调度器神器

4.2.14 安装elasticsearch

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;

  1. ElasticSearch7.9.2安装指南(二)
  2. Kibana 7.7.1安装

4.2.15 安装apche superset

  为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Apache Superset——开源的大数据探索分析、可视化报表平台

4.3 Shell脚本

  更新中,敬请期待……

5. Linux其他方向进阶篇

  本篇文章,更多的是作为大数据学习的一个基础,如果想在linux上有更好的进阶,博主也是智能大概的略知一些方向,我把linux学通,是不是就能找一份好的工作呢?首先通是多通呢?这个很难定义对吧?

  1. 如果只是单纯会用这些指令,知道这些机制,那还是很难找到一份好的工作的,这个时候你就要把路铺宽,在linux基础上,去学习更多的知名软件维护,硬件的选择和购买(cpu,内存条,磁盘的选择),最好还能熟悉下数据库和一门编程语言(python,java),学习磁盘列阵部署,docker,k8s等等成为一个自动化运维工程师devops;
  2. 觉得第一点太难了,我就想点点点下一步一样的完成一些部署运 可不可以呢,也可以,那就学习更多的云生态,如亚马逊云,腾讯云,阿里云,华为云等工具的运维部署,成为一个云运维工程师。
  3. 真正的高手,是能改得了linux内核的人,那这些而言,就是在源码上去开发、维护linux,这些人往往也需要精通C/C++,精通linux内核,如国内如火如荼的华为鸿蒙系统的开发,就需要这样的人。
  4. ……

6. 推荐资料及书籍

  书不在多,而在精,如果你能认真读完鸟哥的两本linux,并有一定的实操,基本上你就算linux使用方面的高手了。

  1. 《鸟哥的Linux私房菜——基础学习篇》
  2. 《鸟哥的Linux私房菜:服务器架设篇》
  3. 《Linux从入门到精通》
  4. 《 Linux命令行与shell脚本编程大全》
  5. ……

你可能感兴趣的:(linux,shell,大数据)