Linux总结:
Linux主要的内容有:centos7.5的安装,配置内部的网卡,网络适配器,以及安装push,Redis,jkd1.8,mysql等软件的安装和各种不同的安装命令。以及Linux常用的命令。
Hadoop总结:
Hadoop的核心组件有HDFS、MapReduce和Yarn,以及其他常用组件如:HBase、Hive、Hadoop Streaming、Zookeeper等。具体如下图:
HDFS:分布式海量数据存储功能
Yarn:提供资源调度与任务管理功能
资源调度:根据申请的计算任务,合理分配集群中的计算节点(计算机)。
任务管理:任务在执行过程中,负责过程监控、状态反馈、任务再调度等工作。
MapReduce:分布式并行编程模型和计算框架。解决分布式编程门槛高的问题,基于其框架对分布式计算的抽象map和reduce,可以轻松实现分布式计算程序。
Hive:提供数据摘要和查询的数据仓库。解决数据仓库构建问题,基于Hadoop平台的存储与计算,与传统SQL相结合,让熟悉SQL的编程人员轻松向Hadoop平台迁移。
Streaming:解决非Java开发人员使用Hadoop平台的语言问题,使各种语言如C++、python、shell等均可以无障碍使用Hadoop平台。
HBase:基于列式存储模型的分布式数据库。解决某些场景下,需要Hadoop平台数据及时响应的问题。
Zookeeper:分布式协同服务。主要解决分布式下数据管理问题:统一命名、状态同步、集群管理、配置同步等。
Hdfs架构设计图及各主要模块和运行流程:
Hdfs主要有:namenode:管理元数据,DataNode:储存数据,client 和客户端交互。有两个模块 一个是读文件 一个是写文件。
读文件的流程:client 接收到请求,client 请求namenode获取文件的位置,然后client读取DataNode上的数据,在客户端处理好之后给用户。
写文件的流程:client接收到请求,client 请求namenode询问应该把数据放到哪里。然后client流式储存这个数据到block上,然后这个数据复制到备份机上,备份机存好之后。另外一台备份机上再存储一次。
HDFS高可用性措施
1 冗余备份 2 跨机架副本存放 3 心跳检测 4 数据完整性检测 5 安全模式 6 核心文件备份 7 空间回收。
HDFS的主要命令有:
Hdfs dfs -ls
Hdfs dfs -put
Hdfs dfs -mkdir
Hdfs dfs -get
Hdfs dfs -help
Hdfs dfs -cat
Hdfs dfs -rm
Hdfs dfs -text
Hdfs dfs -touch
Hdfs dfs -cp
HDFS数据格式详解:
文件格式:文件格式按面向的存储形式不同,分为面向行和面向列的两大类文件格式。
压缩格式:压缩格式按其可切分计算性,分为可切分计算和不可切分计算两种
MapReducer的流程:Pre-map 对数据进行切割,分成多个split。Map 把数据转换成K,V形式,然后进行partition分区并且排序,然后进行combine本地聚合,然后到shuffle ,拷贝map节点的数据,然后进行文件合并,然后sort排序,然后到reducer阶段,对数据聚合,然后输出到hdfs上。
流程图如下:
在平台上运行 yarn jar testhdfs-jar-with-dependencies.jar 类名 +文件地址;
MapReduce技术特征
1向“外”横向扩展,而非向“上”纵向扩展
2失效被认为是常态
3移动计算,把处理向数据迁移(数据本地性)
4顺序处理数据、避免随机访问数据
5推测执行
6平滑无缝的可扩展性
7为应用开发隐藏系统底层细节
Yarn双层调度架构设计图及各模块的主要作用和运行流程:
Yarn 主要是由resourcemanager,nodemanager,applicationmaster和container组成。
Resourcemanager的作用有:1处理客户端的请求,2监控nodemanager,3启动applicationmaster。4资源分配与调度。
Nodemanager的主要作用有:1管理单个节点上的资源,2处理resourcemanager的命令,3处理applicationmaster的命令。
Applicationmaster的作用有:1向resourcemanager汇报心跳,2向resourcemanager申请资源,开启任务,3 Applicationmaster负责task的管理。
Container的作用有:1是yarn中资源的抽象,Applicationmaster和task都运行在这里。要注意的是:使用Container可能会导致数据出现不一样的情况。
运行流程图如下:
Yarn特点:
资源管理与计算框架解耦设计,一个集群资源共享给上层各个计算框架,按需分配,大幅度提高资源利用率
运维成本显著下降,只需运维一个集群,同时运行满足多种业务需求的计算框架
集群内数据共享一致,数据不再需要集群间拷贝转移,达到共享互用
避免单点故障、集群资源扩展得到合理解决
Yarn常用调度策略:
1先进先出:排队进行任务的处理,先到先做
2容器调度器:允许多用户共享整个集群,每个用户或组织分配专门的队列,不支持抢占式。队列内部默认使用FIFO,也支持Fair调度
3公平调度器:目标是为所有用户分配公平的资源。也支持多用户共享集群,也可划分多队列。队列内部不是FIFO,而是采用公平分配的方式。
Yarn容错性说明
ResourceManager(RM) Failure
同时启动多个RM,基于Zookeeper实现HA避免单点故障,但同时只有一个是active状态
ApplicationMaster(AM) Failure
ApplicationMaster挂掉后,由ResourceManager负责重启。ResourceManager的ApplicationsManager模块会保存已经完成的Task,重启后无需重新运行。ApplicationMaster需要处理内部任务的容错问题,如Task Failure。
NodeManager(NM) Failure
若包含Task计算任务执行失败后,ApplicationMaster决定处理方法。若包含AM任务,则由RM重启一个新的Container运行AM。
Task Failure
通过心跳把信息反馈给AM,或者心跳超时被AM感知,由AM通过重试恢复Task。
hive总结:
1.hive数据模型:
数据类型:
数值型:
日期类型:
字符串:
字节数组:
复杂(集合)数据类型:
数据操作分类:
操作分类 | 具体操作 | sql备注 |
DDL(数据定义语言) | •创建数据库 •建/删除表 •修改表结构 •创建/删除视图 •显示命令 | Create/Drop/Alter Database Create/Drop/Truncate Table Alter Table/Partition/Column Create/Drop/Alter View Create/Drop Index Create/Drop Function Show functions; Describe function; |
DML(数据操作语言) | •数据插入(insert,load) | load data...into table insert overwrite table |
DQL(数据查询语言) | •数据查询(select) |
|
DDL:
- 关键词解释
- external: 创建内部表还是外部表,此为内外表的唯一区分关键字。
- comment col_comment: 给字段添加注释
- comment table_comment: 给表本身添加注释
- partitioned by: 按哪些字段分区,可以是一个,也可以是多个
- clustered by col_name... into num_buckets BUCKETS:按哪几个字段做hash后分桶存储
- row format:用于设定行、列、集合的分隔符等设置
- stored as : 用于指定存储的文件类型,如text,rcfile等
- location : 设定该表存储的hdfs目录,如果不手动设定,则采用hive默认的存储路径
示例:
CREATE TABLE practice_student_base_info(
stdno string,
name string,
gender int,
age int,
birthday string,
province string,
city string,
area string,
tags string
)
comment '学生信息主表'
partitioned by (come_date string comment '按入创建时间分区')
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS textfile;
- 查看已存在表的详细信息
show create table或者desc tablename/desc formatted tablename
- 加载HDFS数据文件的脚本
-
LOAD DATA INPATH '/tmp/fanyuanhui/practice_student_base_info.txt' OVERWRITE INTO TABLE practice_student_base_info PARTITION (come_date=20220504);
关于外表的说明和使用
- 内外表的唯一区分标识,即为external关键字。创建表时候有,则为外表,没有则默认均为内表。
- 内表和外表的hdfs目录,均可以自由指定location,如不指定,则数据存储在hive的默认hdfs目录中,且后续均可以自由改变,但改变的场景不多,一般为了省事都不会轻易改变存储目录。
- 应用场景
- 如果表数据是外部load过来的,即为不可hive内部自生成,此时的表必须是外表。
-
如果表数据是hive内部可以自生成的,即不需要依赖外部的load数据,则此时的表应该是内表。
Hive系统函数:
- 查看所有系统函数
show functions