目录
1.分布式和集群
分布式:多台服务台协同配合完成同一个大任务
集群:多台服务台联合起来独立做相同的任务
2.Hadoop架构【重点】
Hadoop的三大主件——HDFS、YARN、MapReduce
HDFS:(分布式文件系统)做海量数据的存储
元数据:描述核心数据的数据(比如文件的大小、文件的创建时间)
NameNode:集群当中的主节点,主要用于管理集群当中的各种数据
SecodaryNamenode:主要能用于辅助NameNode进行文件块元数据存储
DataNode:集群当中的从节点,主要用于存储真实海量的业务数据
YARN:(作业调度和集群资源的框架),解决资源的任务调度
ResourceManage:接收用户的计算请求任务,并负责集群的资源管理和分配
NodeManage:负责执行主节点分配的任务(给MR的计算程序提供资源)
MapReduce:(分布式运算编程框架),解决资源的计算问题
map负责分
Reduce负责合并
MapReduce计算需要的数据和产生的结果需要HDFS来进行存储
MapRedeuce的运行需要由Yarn集群来提供资源调度
3.Hadoop集群启动【练习】
启动命令
# 一键启动hdfs和yarn集群
start-all.sh
# 单独启动mr计算任务历史
mapred --daemon start historyserver
4.Hadoop-HDFS
特点
HDFS存储大文件,把大文件默认切割成128M大小的block块,进行存储
HDFS存储块的时候,会给每个块进行备份(一共三份)
HDFS文件系统可存储超大文件,时效性稍差
HDFS具有硬件故障检测和自动快速恢复功能
HDFS为数据存储提供扩展能力
HDFS存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改
HDFS可在普通廉价的机器运行
架构
1. client
发请求就是客户端
文件切分。文件上传HDFS的时候,client会把文件切分成一个个block块,然后进行存储
与NameNode交互,获取文件的位置信息。
与DataNode交互,读取或者写入数据
2.NameNode
就是master,它是一个主管、管理者。
处理客户端读写请求。
管理HDFS元数据(文件路径、文件的大小,文件的名字,文件权限,文件切割后的(block)
信息)。
配置3副本备份机制
3.DataNode
就是Slave。NameNode下达命令,DataNode执行实际的操作
存储实际额数据块(block)。
执行数据块的读/写操作
定时向namenode汇报block信息
4.Secondary NameNode
只是辅助NameNode,对HDFS元数据进行合并,合并后再交给NameNode。
在紧急情况下,可辅助恢复NameNode的部分数据
副本
block块:HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件拆分成一系列的数据块进行存储,这个数据块被称为block,除了最后一个,所有的数据块都是同样大小的
block块大小默认:128M
为了容错,文件的所有block都会有副本,每个文件的数据块大小和副本系数都是可配置的
副本系数默认3个
shell命令
hdfs的shell命令格式1:hadoop fs -命令 参数
hdfs的shell命令格式2:hdfs dfs -命令 参数
hdfs的家目录默认:/user/root
查看目录下的内容:hdfs dfs -ls 目录的绝对路径
创建目录:hdfs dfs -mkdir 目录的绝对路径
创建文件:hdfs dfs -touch 文件的绝对路径
移动目录/文件:hdfs dfs -mv 要移动的目录或者文件的绝对路径
复制目录/文件:hdfs dfs -cp 要复制的目录或者文件的绝对路径
删除目录/文件: hdfs dfs -rm [-r] 要删除的目录或者文件的绝对路径
查看文件的内容:hdfs dfs -cat要查看的文件的绝对路径
查看hdfs其他shell命令帮助:hdfs dfs --help
把本地文件内容追加到hdfs指定文件中:hdfs dfs -appendToFile 本地文件路径 hdfs文件绝对路径
Linux本地上传文件到hdfs中:hdfs dfs -put linux本地要上传的目录或者文件路径
hdfs中下载文件到linux本地:hdfs dfs -get hdfs中要下载的目录或者文件的绝对路径 Linux本地目标位置路径
5.Hive环境准备
配置Hive环境变量
# vim /etc/profile
# source /etc/profile
先启动hive服务
后台启动metastore服务:nohup hive --service metastore &
后台启动hiveserver2服务:nohup hive --service hiveserver2 &
查看metastore和hiveserver进程是否启动:jps
注意:服务名都叫RunJar,可以通过进程编号区分
服务启动需要一定的时间可以使用lsof查看:lsof -i:10000
注意:如果无内容继续等待,如果有内容代表启动成功
再连接hive服务
一代客户端连接命令:hive
二代客户端连接命令:beeline
二代客户端连接命令:!connect jdbc:hive2://node1:10000