我会不间断的更新,维护,希望可以对正在找大数据工作的朋友们有所帮助.
第十九章目录
第十九章 Linux
19.1 Linux中、如何调整文件最大打开数
修改linux的软硬件限制文件/etc/security/limits.conf.
在文件尾部添加如下代码:
* soft nofile 65536
* hard nofile 131072
修改完成后可以使用ulimit查看即可。
注:
* 代表任何用户
soft 代表软件
nofile 最大文件
noproc 最大进程
65536 数量
19.2 请列举几个常用的Linux命令
man :帮助命令
sudo : 获取root权限
jps : 查看java进程
ps -ef : 查看进程
ps -aux : 查看进程
netstat -nltcp : 监听端口
free : 内存查看
top :动态 查看服务器资源信息
uptime : 查看系统运行时长和负载率
w : 查看系统运行时长和负载率
df : 查看磁盘情况
df -h /home : 查看home的使用情况
iostat : 查看i/o情况
tar :
zip :
unzip :
gzip:
gunzip:
rpm :
yum :
等等。
19.3 linux如何查看系统负载,内存.硬盘使用情况
系统负载命令:uptime、w、top
[root@node242 ~]# uptime
12:06:18 up 6 days, 12:51, 3 users, load average: 0.00, 0.01, 0.05
[root@node242 ~]# w
12:06:42 up 6 days, 12:51, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.151.251 08:53 3:11m 4:38 0.03s -bash
root pts/2 10.0.157.236 11:39 27:03 0.01s 0.01s -bash
root pts/3 10.0.151.253 11:47 2.00s 0.05s 0.01s w
[root@node242 ~]# top
top - 12:07:29 up 6 days, 12:52, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 249 total, 1 running, 248 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 98824672 total, 73614424 free, 21389376 used, 3820868 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 76497328 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7706 root 20 0 10.4g 1.1g 15900 S 1.0 1.1 76:26.86 java
5461 root 20 0 3129584 459292 19332 S 0.7 0.5 55:37.83 java
......
load average分别对应于过去1分钟,5分钟,15分钟的负载平均值。
内存命令:free、top
[root@node242 ~]# free
total used free shared buff/cache available
Mem: 98824668 21388812 73435172 9616 4000684 76496944
Swap: 4194300 0 4194300
磁盘命令:df
[root@node242 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-root 52403200 7870980 44532220 16% /
devtmpfs 49398856 0 49398856 0% /dev
[root@node242 ~]#
[root@node242 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 7.6G 43G 16% /
devtmpfs 48G 0 48G 0% /dev
[root@node242 ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-home 1.8T 48G 1.8T 3% /home
查看io资源命令:iostat (需要安装)
19.4 linux > 和 >> 的区别,常用查看日志命令
> : 覆盖文件,如果文件没有将会创建,并且将内容写到文件中,可以用于删除数据重新写入数据场景。
>> : 在文件末尾追加,如果文件没有将会创建,用于原文件数据不能丢失场景。
19.5 用shell脚本怎么替换字符串(现场写)
vi /home/test/rep.sh
#!/bin/bash
ori_str=$1
rep_str=$2
grep_word=$3
file_dir=$4
sed -i "s/${ori_str}/${rep_str}/g" `grep "$grep_word" -rl $4` #数据源未目录或者文件即可
测试:
[root@hadoop01 test]# chmod a+x /home/test/rep.sh
[root@hadoop01 test]# ./rep.sh abc 123 abc /home/test/
19.6 HDFS原理是什么,我们Linux中文件的原理是什么,区别是什么
hdfs原理:
使用多台廉价服务器来构建分布式文件存储系统,主要是一个master/slave架构,2.x版本可以实现多(推荐2)主多从来实现HA机制。同时该分布式文件系统也使用副本机制来最大限度保障文件的安全性能。
linxu原理:
在LINUX系统中有一个重要的概念:一切都是文件。 其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。
文件系统这一层相信大家都再熟悉不过了,目前大多Linux发行版本默认使用的文件系统一般是ext4,另外,新一代的btrfs也呼之欲出,不管什么样的文件系统,都是由一系列的mkfs.xxx命令来创建,如:
mkfs.ext4 /dev/sda
mkfs.btrfs /dev/sdb
内核所支持的文件系统类型,可以通过内核目录树 fs 目录中的内容来查看。
共同:
1、都是文件系统,都可以存储文件或者目录等。
2、都是以块的形式存储的。
不同点:
1、块:linux的块直接对应于物理磁盘的block,而hdfs的块对应于linux中的文件。
2、块大小:linux的块大小要看磁盘类型,有1k、4k等。而hdfs中的块大小很轻松自行设置,默认hadoop1.x为64M,hadoop2.x为128M,hadoop3.x为256M,远大于linux的block大小。
3、文件:一个文件有多个block组成,而hdfs中一个文件底层还是由多个文件组成。
4、元数据:有操作系统上的inode记录其文件存储的数据区的block指针,而hdfs的由namenode来进行维护。
5、应用:linux主要用于应用服务和数据存储(不强调海量和分布式),而hdfs强调的是规模数据分布式的存储。
19.7 shell脚本编程:将select max(id) from table的值赋值到一个变量中;
vi /home/test/my.sh
#!/bin/bash
mysql_var=`mysql --skip-column-names -uroot -proot -e "use test;select max(id) from stu"`
echo $mysql_var
测试:
chmod a+x /home/test/my.sh
/home/test/my.sh 运行脚本
19.8 shell脚本编程:将mysql数据库中五个库中的五张表合并到一张表中,表的结构都相同;
vi /home/test/mm.sh
#!/bin/bash
`mysql --skip-column-names -uroot -proot -e "insert into test.a1(id,name) select from ( select id,name from test1.a1 union all select id,name from test2.a1 union all select id,name from test3.a1 union all select id,name from test4.a1 union all select id,name from test5.a1)"`
测试(未测试):
chmod a+x /home/test/mm.sh
/home/test/mm.sh 运行脚本