Mac系统安装Hadoop:
Mac系统安装Hadoop:单机模式和伪分布式模式
HDFS
分布式存储框架
YARN:
分布式计算框架:资源调度
MapReduce:
离线计算,批处理
Tez:
获得最好的处理效率,DAG计算,哪个先做,哪个后做,不重复做,
Spark:
内存计算
Hive:
数据仓库,用于企业决策分析
Pig:
轻量级脚本语言
Oozie:
作业流调度系统
Zookeper:
分布式协调服务
Hbase:
分布式数据库
Flume:
日志收集(美团在用)
Sqoop:
关系型数据库 导入导出工具
Ambari:
安装部署工具
一个基本的Hadoop集群中的节点主要有:
NameNode:负责协调接群众的数据存储
DataNode:存储被拆分的数据块
JobTracker:协调数据计算任务
TaskTracker:负责执行由JobTracker指派的任务
SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息
自动化部署工具:
Kickstart、debian、Docker
HDFS主要概念:
块
NameNode:
存储元数据:名字是什么,存了多少块,存储到了哪里
元数据存储在内存中
数据结构:
FsImage:
用于维护文件系统树及文件树中所有的文件和文件夹的元数据
访问权限,块大小及组成文件的块
EditLog:
记录了所有针对文件的创建、删除、重命名等操作
名称节点的启动:
1 启动时,将FsImage文件内容加载到内存中,之后执行Editlog中的文件操作,是的内存中的元数据和实际的同步
2 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage和EditLog
3 启动起来之后,HDFS中的更新操作会写入到EditLog文件中。
EditLog不断变大的解决方法:
1 SecondaryNameNode定期和NameNode通信,请求停止使用Editlog,暂时将新的写操作写到新的Edit.new上来,而且是瞬间完成
2 SecondaryNameNode将从NameNode获取到的FsImage和我EditLog文件,下载到本地相应目录下
3 合并FsImage和EditLog。SecondaryNameNode将下载的FsImage载入内存,然后一条条执行EditLog的各项更新操作,是的内存中的FsImage保持最新。
4 SecondaryNameNode执行完(3)操作,通过post将新的FsImage发送到NameNode节点上
5 NameNode接收到的新FsImage替换旧的FsImage,同时将edit.new替换成EditLog。
6 到此结束,EditLog就变小了
DataNode
存储文件内容
文件内容存储在磁盘中
HDFS
1 数据冗余保存:
好处:
加快数据传输速度
容易检查数据错误
保证数据可靠性
2 数据存取策略
2.1数据存放:
第一副本:放置在上传文件的DataNode上
第二副本:放置在与第一个副本不同的机架的节点上
第三副本:与第一个副本相同机架的其他节点上
更多副本:随机节点
2.2 数据读取:
HDFS提供API确定一个数据节点机架ID,客户端获取自己所属的机架ID,如果属于同一个机架,则在此机架读取,否则随机读取
3 数据错误和恢复:
1 名称节点出错:
根据备份服务器SecondaryNameNode中的FsImage和EditLog数据进行恢复
2 数据节点出错:
2.1 数据节点定期想NameNode发送心跳信息,报告自己的状态
2.2 长期未收到心跳,即故障,NameNode把此节点标志为"宕机",NameNode不会再给他们发送任何IO请求
2.3 启动数据冗余复制,为它生成新的副本
3 数据出错:
客户端在读到数据后,会采用md5和sha1对数据进行校验,以确定读取到正确的数据。
如果发现错误,则向NameNode报告这个文件块有错误,NameNode会定期检查并重新复制这个块
数据的读取过程
HBase
定义:
是一个高可靠,高性能,面向列,可伸缩的分布式数据库,是BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。
– | BigTable | HBase |
---|
文件存储系统 | GFS | HDFS |
海量数据处理 | MapReduce | Hadoop MapReduce |
协同服务管理 | Chubby | Zookeeper |
HBase与关系型数据库区别:
1 数据类型:
HBase采用了简单的数据类型,存储为未经解释的字符串
2 数据操作:
不错在复杂的表与表之间的关系,只有插入,查询,删除,清空等,避免了多表操作
3 存储模式:
HBase基于列存储
关系基于行存储
4 数据索引:
HBase只有一个索引--行键
5 数据维护:
HBase执行更新操作时,,不会删除旧的版本,而是生成一个新的版本
6 可伸缩性:
HBase轻松实现扩展,在集群中添加或者减少硬件数量来实现性能的伸缩
数据定位:四维坐标定位(行键、列族、列限定符,时间戳)