目录
一.Shell的分支
1.1 if分支
1.1.1 if单分支
if [ 条件 ] ;then
执行逻辑
fi
1.1.2 if双分支
if [ 条件 ] ;then
执行逻辑
else
执行逻辑
fi
1.1.3 if多分支
if [ 条件 ] ;then
执行逻辑
elif [ 条件 ];then
执行逻辑
else
执行逻辑
fi
注意:条件后面应该有一个分号 将 条件和then关键字隔开。如果不想加分号,then需要换行书写。
1.2 case分支
case ... in
value1)
执行逻辑
;;
value2)
执行逻辑
;;
value3)
执行逻辑
;;
.......
valueN)
执行逻辑
;;
esac
小贴士: 最后一个分支匹配,用通配符*,表示不满足之前的所有分支,相当于default分支。
二.Shell的循环结构
2.1 while循环结构
while [ 条件表达式 ]
do
#作业内容
done
2.2 until循环结构
until [ 条件表达式 ]
do
#作业内容
done
2.3 for循环结构
for 变量 in 列表
do
执行逻辑
done
列表的表示方式:
方式1: 使用空格隔开的一堆数据,比如
monday tuesday wenseday thursday friday saturday sunday
方式2: 命令的返回结果为多行或多列的情况
ls ~
方式3: 使用命令seq返回列表,语法:seq n1 n2 表示产生一个从n1到n2的自然数列表
也可以使用{n1..n2}的这种写法
方式4: cut指令的用法: cut -d '分隔符' -fn filename
用来切分文件中的每一行的数据,使用分隔符切分,-fn中的n是获取第n列的意思
扩展:for循环还有另外一种写法,适合在数值的处理上使用
for ((变量初始化;循环条件;变量的改变))
do
执行逻辑
done
2.4 select表单循环
select variable in 列表
do
#作业内容
done
三.Shift指令
shift这个单词,在计算机中,有“使数据产生位移”的含义。对于linux系统来说,在shell中,shift命令可以使参数产生位移。
[root@xxx01 bin]# vim ~/bin/test13.sh
#!/bin/bash
echo "all parameters ========>: $@"
echo "the first parameters ==>: $1"
echo "---------------------黄金分割线---------------------------"
shift
echo "all parameters ========>: $@"
echo "the first parameters ==>: $1"
echo "---------------------黄金分割线---------------------------"
shift
echo "all parameters ========>: $@"
echo "the first parameters ==>: $1"
echo "---------------------黄金分割线---------------------------"
shift
echo "all parameters ========>: $@"
echo "the first parameters ==>: $1"
测试如下:
[root@xxx01 bin]# bash test13.sh a b c d e f
all parameters ========>: a b c d e f
the first parameters ==>: a
---------------------黄金分割线---------------------------
all parameters ========>: b c d e f
the first parameters ==>: b
---------------------黄金分割线---------------------------
all parameters ========>: c d e f
the first parameters ==>: c
---------------------黄金分割线---------------------------
all parameters ========>: d e f
the first parameters ==>: d
四.Shell的函数
function funcName(){
}
语法解析:
1、关键字function 可加可不加
2、调用时,直接写函数名称,不添加()。
3、因为script是从上往下,从左往右执行的,所以,要先定义,后调用
4、return关键字,可加可不加,看需求
加的话,返回值只能是0~255的整数,使用$?获取返回值
6、可以使用$n位置参数变量向函数里传值
[root@xxx01 bin]$ vim test15.sh
#!/bin/bash
function sum(){
a=0
for i in {1..100}
do
a=$[a+i]
done
echo "1~100 的和:$a"
}
sum # 调用函数sum
[root@xxx01 bin]$ bash test15.sh
1~100 的和:5050
[root@xxx01 bin]$ source test15.sh #另外一种执行方式
1~100 的和:5050
#因为test.sh已经被source指令引入到当前shell环境中,因此可以直接将函数当成命令进行使用,很方便吧
[root@xxx01 ~]$ sum
1~100 的和:5050
五.大数据的四大特征(4V)
1. Volume:巨大的数据量
2. Variety:数据类型多样化
--(1):结构化的数据
即有固定格式和有限长度的数据。
--(2):半结构化的数据
是一些XML或者HTML的格式的数据。
--(3):非结构化的数据
现在非结构化的数据越来越多,就是不定长、无固定格式的数据,例如网页、语音,视频等。
3. Velocity: 数据增长速度快
4. Value:价值密度低
六.Hadoop的概述
6.1 简介
1. hadoop是一个分布式存储和计算分析框架
2. 是java语言开发的
3. 具有良好的跨平台行
4. 代码开源,可以运行在廉价的硬件上。
5. hadoop的模块组成(重要)
-- COMMON: 通用模块
-- HDFS : 存储模块, hadoop distributed FileSystem
-- YARN : 资源调度模块
-- MAPREDUCE: 计算模块, 计算HDFS上的大数据集,移动计算而非移动数据
6. hadoop之父是道格·卡丁
6.2 Google的三篇论文
- 2003年发表的《GFS》
基于硬盘不够大、数据存储单份的安全隐患问题,提出的分布式文件系统用于存储的理论思想。
· 解决了如何存储大数据集的问题
GFS---->HDFS
- 2004年发表的《MapReduce》
基于分布式文件系统的计算分析的编程框架模型。移动计算而非移动数据,分而治之。
· 解决了如何快速分析大数据集的问题
Mapreduce--->Hadoop里的Mapreduce模块
- 2006年发表的《BigTable》
针对于传统型关系数据库不适合存储非结构化数据的缺点,提出了另一种适合存储大数据集的解决方案
BigTable--->Hbase
6.3 hadoop流行的三大版本
社区版本:适合学习,免费,开源
chd版本:(Cloudera Hadoop), 有免费版本和收费版本,是最成型的商业发行版本- 支持多种安装方式(Cloudera Manager、YUM、RPM、Tarball)
Hortonworks Hadoop(HDP):完全开源,安装方便,提供了直观的用户安装界面和配置工具
七.Hadoop的安装模式
1. 独立(本地)模式:
- 运行在单台机器上
- 没有分布式概念,使用的是本地文件系统
- 用于对MapReduce程序的逻辑进行调试,确保程序的正确
2. 伪分布式模式:
- 在一台机器上安装,使用的是分布式文件系统,非本地文件系统。
- 相关守护进程(namenode,datanode,secondarynamenode)都运行在一台机器上,是独立的java进程。
- 比Standalone mode多了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互
3. 完全分布式模式:
- 真实环境,多台机器,共同配合,来构建一个完整的分布式文件系统
- 真实环境,hdfs中的相关守护进程会分布在不同的机器中,比如
NameNode尽可能单独部署在一台硬件性能相对来说比较好的机器中。
其他的每台机器上都会部署一个datanode守护进程,一般的硬件环境即可。
secondarynamenode守护进程最好不要和namenode在同一台机器上。
(=-=,安装模式详解看下集分享,东西不多全是概念,多去官网上看原生英文文档能学到更多东西,周末是时候睡大觉了各位~~~)