大数据正式4
文件压缩与打包
- 压缩
- 通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件的内容
- 打包
- 将多个问价或目录合并成一个文件,方便传递或部署
- 压缩文件或打包文件扩展名
- tar tar命令打包的数据,并没有压缩过
- tar.gz tar命令打包,gzip压缩
- gz gzip程序压缩的文件
- tgz
- tar.bz2 tar程序打包的文件,并经过bzip2压缩
- bz2 bzip程序压缩的文件
- Z compress(就得加密算法,目前基本不用)
- 注:linux中的一般文件扩展名用途不大,但是压缩或打包文件的扩展名是必须的--因为不同压缩,算法不同,区别较大
常见的压缩,打包命令
- compress压缩效率低下,压缩比也比较差,几乎已经不再使用
- gzip与bzip
- gzip比bzip2性能好,但bzip2可以获得更高的压缩比
- tar可以将很多文件打包成一个文件
- 文件压缩与打包
- gzip命令(应用广泛):可以解开compress,zip,与gzip等软件压缩的文件
- 选项与参数
- c将压缩的数据输出到标准的输出(stdout)上
- d解压缩
- t可以用来检验一个压缩文件的一致性,看看文件有误错误
- v可以显示出源文件/压缩文件的压缩比等信息
- (1,2...9)压缩等级,1最快,但是压缩比最差;9最慢,但是压缩比最好;默认为6
- l查看压缩文件的压缩比
- 注意:源文件被压缩后,自动在源文件后追加".gz",源文件将不再存在
- 选项与参数
- 解压gz文件:gzip -d 文件名.gz
- 将文件名后的“.gz”删掉,源文件将不再存在
- 保留源文件
- 第一种方式:直接输出到终端上 gzip -c 文件名
- 第二种方式:gzip -c 源文件名 > 源文件名.gz
- gzip命令(应用广泛):可以解开compress,zip,与gzip等软件压缩的文件
- zcat查看文件内容
- zcat *.gz查看全部内容
- zcat *.gz |head -n 查看前n行
- cat可以读取纯文本内容,那个zcat则可以读取纯文本文件被压缩后的压缩文件
- bzip2命令
- 为了取代gzip,并提供更佳的压缩比
- c将压缩的过程产生的数据输出到标准输出
- d解压缩的参数
- k保留源文件,而不会删除原始的文件
- z压缩的参数
- v可以显示出原文件/压缩文件案的压缩比等信息
- (1,2...9)压缩比参数
1. 压缩并删除原文件
bzip2 -z a.log 删除原文件
2. 压缩并保留源文件
bzip2 -zk a.log
3. 解压并删除原文件
bzip -d a.lg.bz2
4. 解压并保留源文件
bzip -dk a.lg.bz2
- compress,uncompress
- r可以连同目录下的文件也同时给与删除
- c将压缩数据输出为标准输出流
- v可以列出压缩文件信息以及压缩过程中的一些文件名的变化
- tar
- c建立打包文件
- t查看打包文件的内容含有哪些文件
- x解打包或解压缩的功能
- j通过bzip2的支持进行压缩/解压缩,此时文件最好为.tar.bz2
- z通过gzip压缩/解压缩,tar.gz
- v在解压缩的过程中,将正在处理的文件名显示出来
- f filename后面要立刻要被处理的文件
- C目录,这个选项用在解压缩,
- p保留备份数据的原本权限与属性,常用于备份重要的配置文件
- exclude=FILE在压缩过程中,不要将那些文件打包
- 注意:-c,-t,-x不可同时出现在一串指令列中
- tar常用指令组合
- 压缩
- tar -zcv -f 路径 *.tar.gz
- tar -jcv -f 路径 *.tar.bz2
- 查询
- tar -ztv -f 路径 *.tar.gz
- tar -ztv -f 路径 *.tar.bz2
- 备份
- tar -zpcv -f 路径 *.tar.gz
- tar -jpcv -f 路径 *.tar.bz2
- 解压到当前文件
- tar -jxv -f 路径 *.tar.bz2 -C 指定目录
- tar -zxv -f 路径 *.tar.gz -C 指定目录
- 压缩
rpm安装软件
- RPM(RedHat Package Manager)安装管理
- RPM的优点:
- RPM内含有已经编译过的程序与配置文件等数据,可以让用户免除重新编译的困扰、
- RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可以避免文件被错误安装
- RPM文件本身提供软件版本信息、相依属性软件名称、软件用途说明,软件所含文件等信息,便于了解软件
- RPM管理方式使用数据记录RPM文件的相关参数,便于升级、移除和验证。
- rpm软件安装
- /etc一些配置文件的目录。例如/etc/crontab
- /usr/bin一些可执行文件
- /usr/lib一些程序使用的动态链接库
- /usr/share/doc一些基本的软件使用手册与说明书
- /usr/share/man一些man page文件(Linux命令的随机帮助说明)
- rpm安装软件
- rpm -ivh 包名
- 选项与参数
- i install的意思
- v 查看更细部的安装信息画面
- h以安装信息列显示安装进度
- 安装rpm软件
- 安装单个rpm包rpm -ivh 包名
- 安装多个rpm包rpm -ivh 包名 包名
- 安装网上某个位置的rpm包 rpm -ivh 网络地址
- 拷贝文件
- 从本机到虚拟机rz
- linux虚拟机到本机sz
- rpm升级与更新
- rpm -Uvh 包名
- 如果后面接的软件没有安装过,系统会直接安装,若后面接的软件安装过但版本较旧,则更新至新版。
- rpm -Fvh 包名
- 如果后面接的软件并未安装到linux系统上,则该软件不会被安装,只有安装的软件才会升级
- rpm -Uvh 包名
- rpm查询
- 原理:rpm在查询的时候,其实查询的地方是在/var/lib/rpm/这个目录下的数据库文件
- ll /var/lib/rpm/
- 查询已安装的软件,选项与参数
- q仅查询,
- qa列出所有的
- qi列出详细的信息
- ql列出完整路径名
- qc列出该软件的所有配置文件
- qd列出该软件说明文件
- qR列出和该软件相依软件所含的文件
- qf 文件名 该文件属于哪一个已安装的软件
- qp查询某个rpm文件内的信息
- rpm检查
- V 软件名称 若该软件安装之后被改动过,会列出被修改过的文件
- Va 列出目前系统上面rpm安装的所有包中修改过的文件
- Vp 后面加的是rpm文件名,列出rpm包中的文件在当前系统中是否被安装或者修改
- Vf列出某个文件(直接列出软件包安装之后的文件名)是否被改动过
- rpm卸载
- 找出与apr有关的软件名称,并尝试移除apr这个软件
- rpm -qa|grep apr
yum
- 缘来:rpm安装时依赖关系包,必须之前有依赖的包;卸载时候也是如此,如果有依赖,也必须删除。
- yum:通过分析rpm的标头资料后,根据各软件的相关性制作出属性相依的解决方案,然后可以自动处理软件的依赖问题,以解决软件安装、移除、升级中遇到的繁琐操作的问题。
- 基本配置:/etc/yum.repos.d
- yum查询参数
- search查询某个软件名称或者是描述的关键字
- list列出目前yum所管理的所有的软件名称与版本,有点类似rpm -qa
- info 同上,格式不太一样,不过有点类似-qai
- yum安删更软件
- yum安装/升级/卸载
- yum [install|update|remove] 软件名
yum进阶
- yum服务器与客户端架构图
- 服务器-----{Mandark,CentOS,Red Hat,Fedora Core}
- yum客户端机制:
- 客户端每次使用yum执行命令的时候,都会解析/etc/yum.repos.d下面所有以.repo结尾的文件,这些配置文件指定了yum服务器的地址,yum会定期去“更新”,并下载保存到自己的cache里面,根据/etc/yum.conf里配置,每次执行首先会去cache中找依赖的包,没有则去yum服务器下载rpm安装
- yum repo的配置文件信息
- cd /etc/yum.repos.d
- cat CentOS-Base.repo
- 让yum支持hadoop分布式安装
- 查看yum支持的所有软件包中是否存在hadoop
- yum list|grep hadoop
- 让当前系统的yum支持hadoop
- 在本地/etc/yum.repos.d下创建clodera-cdh5.repo文件,保存hadoop对应的repo配置,而具体配置信息查询相关资料
- 再次查看
- 查看yum支持的所有软件包中是否存在hadoop
1. yum服务器端
1. 所有要发行的rpm包都放在yum服务器以供别人来下载,最重要的环节就是整理出每个rpm包的基本信息,在createerpo工具将基本的rpm包信息做成一张清单,这张清单就是描述每个rpm包的spec文件信息
2. 创建本地yum源
1. 检查本机是否有web服务器,没有则安装rpm -qa |grep httpd
2. 创建本地web服务器:yum install httpd
3. 安装yum自带工具yum install yum -utils createrpo
4. 在 /var/www/html/下,执行reposync -r cloudera -cdh5
5. 通过http://ip:port/项目名来访问本地yum源
6. 最后修改/etc/yum.repos.d/xxx repo文件中的baseurl换成本地地址
Shell
- 是什么:
- 简单的说:shell是用户和linux操作系统之间的接口,提供了与操作系统之间的通讯方式
- 本质是一个命令解释器,它接收用户命令,然后调用相应的应用程序
- 系统提供哪些种类shell:sh,base等
- 主要学习/bin/base它兼容于sh,依据使用者需求,而加强sh版本
- shell中的变量
- 环境变量:执行命令和PATH有关
- 变量的读取:
- echo $参数
- echo ${参数}
- env|more
- 如何将普通的变量变为环境变量:
- 1. export 变量名=值
- 2. 变量名1=值1 变量名2=值2 expert 变量名1 变量名2
- shell设置规则
1. 变量名与值之间以一个=号连接
2. 等号两边不能直接接空字符
3. 变量名只能是英文字母,数字,下划线,但开头不能是数字
4. 变量内容若有空格符可使用双引号或单引号将变量内容结合起来--双引号中的字符保有原本的特性,单引号的特殊字符仅为一般字符(纯文本)
5. 可使用转义字符“\”将特殊字符变为一般字符
6. $变量 与 ${变量}等价
7. 变量的内容由其他命令提供,使用$()
1. version=$(username)
8. 变量增加额外内容
1. version=$version -$(uname-p)
2. 通常变量名大写的为系统的默认变量,自己定义时小写,方便区分
例:
1. a=111
2. a=111-$a
3. b='111-$a'
4. c="11-$a"
输出结果:
1. 111-111
2. 111-$a
3. 111-111-111
9. 把一个命令定义成一个变量
1. 反引号 cmd=`date+%f`
2. $cmd=$(date+%f)
变量总结
- 全局变量:一般大写,如环境变量
- 局部变量:
- 脚本函数中局部变量通常使用local修饰:local l
- 表示i变量的有效范围在该函数内部有效
- 把一个命令定义为一个变量
- ${WEEK}day若变量和其他字符组成的新变量就必须给变量加上大括号,否则容易出错
常见的shell命令
- 数据重定向
- 数据的重定向就是将某个命令执行后应该出现在屏幕上的数据,给他传输到其他的地方,例如传输文件或是其他命令
- 通常执行一条命令的时候会有标准的输出和标准错误输出
- 标准输入:stdin:编号为0
- 标准输出:stdout:编号为1
- 标准错误输出:stderr:编号为2
例:
1. 将ls的输出重定向到s.log当中去
ll 1 > ls.log
2. 命令执行判断
1. $?:命令回传值 cmd1||cmd2
2. &&:若为cmd1执行完且正确执行($?=0),则开始执行cmd2,若cmd1执行完毕且为错误($?不等于0),则执行cmd2
举例:若果/tmp/test存在,则创建/tmp/test/jinxf
ls /tmp/test && touch /tmp/test/jinxf