【无标题】

定时任务

crontab -e
*  *  *  *  *    
分 时 日 月 周
​
分:每小时的第几分
时:每天的第几时 0-24
日:每月的几号
月:每年的哪月 
周:每周的第几天
​
* * * * *  代表每分钟
​
1 * * * *  每小时的01分执行
​
1 14 * * *  每天的14点01分执行
​
1 14 1 * *  每月1号的14点01分执行
1 14 2 7 *  每年7月2号的14点01分执行
1 14 * 7 2  每年7月的每周的第2天 14点01分执行
​
每周二至周五,下午6点  的计划任务
0   18   *    *    2-5  (2,3,4,5)
1到10月份,每周二周五,下午6点的计划任务
0     18       *   1-10  2,5
12点和14点,检查apache服务是否启动 每年的1-3月7-9月 周一到周5
0  12,14  *   1-3,7-9   1-5   
​
cat  /var/spool/cron/root  查看错误信息

高级文本编辑工具

cut

cut -d 指定切割方式 -f 第几列   文件名
​
vi cut.txt 
001 liuyan 38 nv
002 tangyan 18 nv
003 jinlian 138 nv
004 dalang 8 nan
​
cut -d " " -f 1 cut.txt  按照" "来切 显示第一列
001
002
003
004
​
cut -d " " -f 2,3 cut.txt 按照" "来切 显示2 3列
liuyan 38
tangyan 18
jinlian 138
dalang 8
​
#获取到柳岩的id
cat cut.txt | grep liuyan
001 liuyan 38 nv
cat cut.txt | grep liuyan | cut -d " " -f 1
001
​
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/apps/jdk1.8.0_191/bin:/root/bin
选取系统PATH变量值,第2个“:”开始后的所有路径:
echo $PATH | cut -d ":" -f 2-
​
ifconfig ens33 | grep "inet "| cut -d "i" -f 2-|cut -d " " -f2

 sed

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出

sed [选项参数]  ‘command’  filename
​
vi sed.txt 
001 liuyan 38 nv
002 tangyan 18 nv
003 jinlian 138 nv
004 dalang 8 nan
​
#显示的时候在第二行后插入 003 ximenqing 100 nan   a 新增,a的后面可以接字串,在下一行出现 
sed '2a 003 ximenqing 100 nan' sed.txt
​
#删除包含001的记录  d 删除
sed '/001/d' sed.txt 
​
查找替换 sed 's/要被取代的字串/新的字串/g'  文件名
#将所有00 替换成 ""
sed 's/nv/女/g' sed.txt
sed 's/0//g' sed.txt
​
# 删除第二行  并将所有00 替换成""  -e同时执行多个指令
sed -e '2d' -e 's/0//g' sed.txt
​
#显示时去除空行
sed '/^$/d' sed.txt 
#修改文件 -i 删除文件中所有空行
sed -i '/^$/d' sed.txt 
​
#给指定1-3行范围添加注释
sed -i '1,3s/^/#/g' sed.txt
#将所有的注释删除
sed -i 's/^#//g' sed.txt
​
​
#在001开头这一行下 加入 002
sed -i '/^001/a\002' sed.txt
#在001开头这一行 上面 加入 0000
sed -i '/^001/i\0000' sed.txt
每一行之间都必须要以反斜杠 \ 来进行新行标记
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

awk

一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。

awk [选项参数] ‘pattern1{action1}  pattern2{action2}...’ filename
pattern:表示AWK在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令
​
-F  指定输入文件折分隔符
-v  赋值一个用户定义变量
​
vi awk.txt
001 liuyan 38 nv
002 tangyan 18 nv
003 jinlian 138 nv
004 dalang 8 nan
​
#以空格进行切割 查找以001开头的所有行 打印第2列
awk -F " " '/^001/{print $2}' awk.txt
#以空格进行切割 查找以001开头的所有行 打印第2列 第3列 用,分隔
awk -F " " '/^001/{print $2 "," $3}' awk.txt
#在查找的内容之前打印 hello 在结尾打印 world
awk -F " " 'BEGIN{print "hello"}/^001/{print $2 "," $3}END{print "world"}' awk.txt
​
#给所有用户的年龄+10在输出
awk -F " " -v i=10 '{print $3+i}' awk.txt
​
内置变量
FILENAME    文件名
NR  已读的记录数 第几行 
NF  浏览记录的域的个数(切割后,列的个数) 切割的列数
​
awk -F " " '{print FILENAME,NR,NF}' awk.txt
​
#打印所有空行号
awk '/^$/{print NR}' awk.txt 
​
ip
ifconfig ens33 | grep "inet " |awk -F " " '{print "ip地址是:"$2}' 
​

sort

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。

sort 参数  文件 
-n 以数值的方式排序  不指定以字符串形式排序 1 11 111 2 22
-r 逆序
-t 指定分隔符
-k 指定列
​
vi sort.txt
001 liuyan 38 nv
002 tangyan 18 nv
003 jinlian 138 nv
004 dalang 8 nan
​
sort -t " " -nk 3 sort.txt
sort -t " " -nrk 3 sort.txt
sort -t " " -nk 3 sort.txt >> 1.txt

Hadoop

大数据简介

最早提出“大数据”时代到来的是全球知名咨询公司麦肯锡,其称∶“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”

2019年,央视推出了国内首部大数据产业题材纪录片《大数据时代》,节目细致而生动地讲述了大数据技术在政府治理、民生服务、数据安全、工业转型、未来生活等方面给我们带来的改变和影响。

大数据的5v特征

一、Volume:数据量大,包括采集、存储和计算的量都非常大。大数据的起始计量单位至少是P(1000个T)、E(100万个T)或Z(10亿个T)。

二、Variety:种类和来源多样化。包括结构化、半结构化和非结构化数据,具体表现为网络日志、音频、视频、图片、地理位置信息等等,多类型的数据对数据的处理能力提出了更高的要求。

三、Value:数据价值密度相对较低,或者说是浪里淘沙却又弥足珍贵。随着互联网以及物联网的广泛应用,信息感知无处不在,信息海量,但价值密度较低,如何结合业务逻辑并通过强大的机器算法来挖掘数据价值,是大数据时代最需要解决的问题。

四、Velocity:数据增长速度快,处理速度也快,时效性要求高。比如搜索引擎要求几分钟前的新闻能够被用户查询到,个性化推荐算法尽可能要求实时完成推荐。这是大数据区别于传统数据挖掘的显著特征。

五、Veracity:数据的准确性和可信赖度,即数据的质量。

简而言之,大数据指非常庞大、复杂的数据集,特别是来自新数据源的数据集,其规模之大令传统数据处理软件束手无策,却能帮助我们解决以往非常棘手的业务难题.

应用领域

  • 电商领域

    精准广告定位,个性化推荐,大数据杀熟

  • 传媒领域

    精准营销,才你喜欢,交互推荐

  • 金融领域

    理财投资,通过对个人的信用评估,风险承担能力评估,集合众多理财产品、推荐响应的投资理财产品。

  • 交通领域

    拥堵预测、智能红绿灯、导航最优规划

  • 电信领域

    基站选址优化、舆情监控、客户用户画像

  • 安防领域

    犯罪预防、天网监控

  • 医疗领域

    智慧医疗、疾病预防、病源追踪

思考

大数据场景下

1.海量数据如何存储?

2.海量数据如何计算?

1.Hadoop简介

1.1 组件

Hadoop由4部分组成

1)HDFS:(Hadoop Distribute File System)分布式文件系统,海量数据存储解决方案
2)MapReduce:Hadoop的分布式运算编程框架
3)Yarn:分布式资源调度平台和任务监控平台
4)Commons: HADOOP底层技术支持  

主要用来解决:大数据存储,大数据分析. 核心组件:HDFS,MapReduce

1.2 特点

(1) 高可靠性  :Hadoop底层将数据以多个副本的形式存储在不同的机器上,保证数据的安全可靠。
(2) 高扩展性 :当存储hdp集群的存储能力和运算资源不足时,可以横向的扩展机器节点来达到扩容和增强运算能力 。
(3) 高效性 :在MapReduce的思想下能够在节点之间动态地移动运算,且是分布式并行工作的,所以运海量数据非常高效。
(4) 高容错性 : Hadoop能够自动保存数据的多个副本,当有存储数据的节点宕机以后, 会自动的复制副本维持集群中副本的个数 ,并且能够自动将失败的任务重新分配。
(5) 低成本 :hadoop可以运行在廉价的机器上并行工作,达到高效,安全,效率于一身目的。

2.HDFS分布式文件系统

(Hadoop Distribute File System )分布式文件系统,解决了海量数据无法单台机器存储的问题,将海量的数据存储在不同的机器中 ,由HDFS文件系统统一管理和维护, 提供统一的访问目录和API !

安装

 安装环境和整体步骤

环境
    java环境 
    集群中的每台机器的ip  
    主机名
    域名映射
    关闭防火墙 
    时间同步
    ssh免密
步骤 
    上传
    解压
    配置
    分发
    初始化
    启动

 安装过程

1.上传

rz 命令上传 将hadoop-3.1.1.tar.gz 上传到/opt/apps
​
cd /opt/apps
rz 上传

2.解压

tar -zxvf hadoop-3.1.1.tar.gz 

bin 主要是一些可执行文件命令 etc 主要是一些Hadoop配置文件 sbin 超级命令 集群启动 share 共享目录 帮助文档

删除文档 rm -rf share/doc

3.配置

配置JavaHome
进入环境
 cd opt/apps/hadoop-3.1.1/etc/hadoop/hadoop-env.sh
打开VI编辑
vi hadoop-env.sh
shift + G 最后一行 o 下一行插入
​
export JAVA_HOME=/opt/apps/jdk1.8.0_191
配置namenode
进入环境
/opt/apps/hadoop-3.1.1/etc/hadoop/hdfs-site.xml
进入VI编辑
vi hdfs-site.xml
​
将复制的内容粘贴到<configuration>与</configuration>标签中间
注意 先进入到插入模式 按i 再粘贴
​
​
   <!-- 集群的namenode的位置  datanode能通过这个地址注册-->
    <property>
         <name>dfs.namenode.rpc-address</name>
         <value>linux01:8020</value>
    </property>
     <!-- namenode存储元数据的位置 -->
    <property>
         <name>dfs.namenode.name.dir</name>
         <value>/opt/hdpdata/name</value>
    </property>
     <!-- datanode存储数据的位置 -->
    <property>
         <name>dfs.datanode.data.dir</name>
         <value>/opt/hdpdata/data</value>
    </property>
     <!-- secondary namenode机器的位置-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>linux02:50090</value>
    </property>
​

4.分发安装包

进入到apps文件夹中 
cd /opt/apps
将hadoop文件远程复制linux02 linux03
scp -r  hadoop-3.1.1  linux02:$PWD
scp -r  hadoop-3.1.1  linux03:$PWD

5.初始化

进入到hadoop的bin文件夹下 进行初始化   linux01
./hadoop   namenode   -format

初始化后 opt下会多出一个文件夹hdpdata

6.启动

单节点启动

先启动namenode
进入到hadoop的sbin目录下   linux01
./hadoop-daemon.sh   start  namenode      单个启动namenode

启动成功后可以访问页面
http://linux01:9870

启动datanode
进入到hadoop的sbin目录下  linux01 linux02 linux03
./hadoop-daemon.sh  start  datanode 

启动成功后页面可以看到对应节点的信息

一键启停

为了方便今后启动我们将sbin目录配置到环境变量中
vi  /etc/profile  
export  JAVA_HOME=/opt/apps/jdk1.8.0_191
export  HADOOP_HOME=/opt/apps/hadoop-3.1.1
export  PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存后 
source /etc/profile
配置集群文件  hadoop的etc/hadoop/目录下workers 告知有哪些机器
vi workers

linux01
linux02
linux03

修改hadoop的sbin下的 start-dfs.sh stop-dfs.sh
vi start-dfs.sh 
在第一行后插入
HDFS_DATANODE_USER=root 
HADOOP_SECURE_DN_USER=hdfs 
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root

vi stop-dfs.sh
在第一行后插入
HDFS_DATANODE_USER=root 
HADOOP_SECURE_DN_USER=hdfs 
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root 

配置后 可以在任意目录下 
stop-dfs.sh 停止
start-dfs.sh 启动

 常用客户端命令

hdfs dfs  回车 查看指令

[root@linux01 hadoop-3.1.1]# hdfs dfs
Usage: hadoop fs [generic options]
        [-appendToFile <localsrc> ... <dst>]
        [-cat [-ignoreCrc] <src> ...]         
        [-checksum <src> ...]
        [-chgrp [-R] GROUP PATH...]
        [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]   
        [-chown [-R] [OWNER][:[GROUP]] PATH...]
        [-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>] 
        [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] <path> ...]
        [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]  
        [-createSnapshot <snapshotDir> [<snapshotName>]]
        [-deleteSnapshot <snapshotDir> <snapshotName>]
        [-df [-h] [<path> ...]]
        [-du [-s] [-h] [-v] [-x] <path> ...]
        [-expunge]
        [-find <path> ... <expression> ...]
        [-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-getfacl [-R] <path>]
        [-getfattr [-R] {-n name | -d} [-e en] <path>]
        [-getmerge [-nl] [-skip-empty-file] <src> <localdst>]
        [-head <file>]
        [-help [cmd ...]]
        [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...]]
        [-mkdir [-p] <path> ...]
        [-moveFromLocal <localsrc> ... <dst>]
        [-moveToLocal <src> <localdst>]
        [-mv <src> ... <dst>]
        [-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
        [-renameSnapshot <snapshotDir> <oldName> <newName>]
        [-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
        [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
        [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
        [-setfattr {-n name [-v value] | -x name} <path>]
        [-setrep [-R] [-w] <rep> <path> ...]
        [-stat [format] <path> ...]
        [-tail [-f] <file>]
        [-test -[defsz] <path>]
        [-text [-ignoreCrc] <src> ...]
        [-touchz <path> ...]
        [-truncate [-w] <length> <path> ...]
        [-usage [cmd ...]]
很多指令和linux相同 我们在使用时 只要前面加上hdfs  dfs 即可 
例如 创建文件夹
hdfs dfs -mkdir -p /aaa/bbb/ccc
但是我们发现 这样创建 只是在本机上创建了文件夹 并没有在分布式文件系统上创建 
如果想在分布式文件系统上创建  
hdfs dfs -mkdir -p hdfs://linux01:8020/aaa/bbb/ccc

由于默认是在本机上操作 我们如果使用指令每次都需要加上 hdfs://linux01:8020
比较麻烦 那么可以进行配置 将默认操作设置为 分布式文件系统上 
修改hadoop的etc/hadoop下的文件 core-site.xml
将下面内容放入到<configuration></configuration>标签中
  <property>
     <name>fs.defaultFS</name>
     <value>hdfs://linux01:8020</value>
  </property>
这样 我们就不需要每次都加上hdfs://linux01:8020了
hdfs dfs -mkdir -p /zs/li/ww

创建文件夹 
hdfs dfs -mkdir -p /abc
创建文件
hdfs dfs -touchz /abc/a.txt
查看
hdfs dfs -ls /

本地创建文件 
echo  "hello" >> b.txt 
将b.txt上传到 分布式文件系统上 /abc下
hdfs dfs  -put    本地文件  目标目录
hdfs dfs  -put   b.txt    /abc/
hdfs dfs  -put   b.txt   /abc/aa.txt   上传并改名

将 /abc/aa.txt 下载到本地根目录下
hdfs  dfs -get  数据源  数据目的
hdfs dfs  -get   /abc/aa.txt  /   
hdfs  dfs -get   /abc/aa.txt   /cc.txt  下载并改名

修改abc文件夹的的权限  
hdfs dfs -chmod  777  /abc

删除abc文件夹的 a.txt
hdfs dfs -rm -r /abc/a.txt
删除abc文件夹下的所有内容
hdfs dfs -rm -r /abc/*

节点交互原理

我们将JDK压缩上传到文件系统上
tar -zcvf my.tar.gz  jdk1.8.0_191
创建一个文件夹
hdfs dfs -mkdir -p /java/se
上传
hdfs dfs -put my.tar.gz /java/se

这个文件的总大小为182.87MB 我们说HDFS会进行分块存储 每块大小默认128MB 那么这个文件存储时应该应该分为两块,一个为128MB,一个为54.87MB
文件的存储位置为 
/opt/hdpdata/data/current/BP-2080298671-192.168.133.33-1638430574514/current/finalized/subdir0/subdir0

linux01 linux02 linux03 都是相同位置

酬乐天扬州初逢席上见赠

【唐】刘禹锡

巴山楚水凄凉地,二十三年弃置身。

怀旧空吟闻笛赋,到乡翻似烂柯人。

沉舟侧畔千帆过,病树前头万木春。

今日听君歌一曲,暂凭杯酒长精神。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值