hadoop权威 指南阅读笔记
MapReduce 是一个批量查询处理器,能够在合理的时间范围内处理针对整个数据集的动态查询。适用于解决需要以批处理方式分析整个数据集的问题,建立索引的数据库系统能够对小规模数据的低延迟数据检索和快速更新。适合一次写入、多次读取的应用;关系型数据库更适合持续更新的数据集。移动计算比移动数据更划算。P9有关系型数据库和MapReduce的比较。
MapReduce分布式并行计算,离线数据存储和离线数据计算。任务分为map阶段和reduce阶段进行处理,在P23。
HBase是一种使用HDFS做底层存储的减值存储模型,提供在线访问。HBase不仅提供对单行的在线读写访问,还提供对数据块读写的批操作。
HDFS以流式数据访问模式来存储超大文件,运行于商用硬件集群上。读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。为高数据吞吐量应用优化的,可能会以提高时间延迟为代价。对于低延迟的访问需求,可以考虑HBase。
HIVE与传统数据库库相比 P480
spark没有以mapreduce作为执行引擎,而是使用了它自己的分布式运行环境在集群上执行工作。
Hbase 解决存储和数据访问,大表计算。HBase是一个再HDFS上开发的面向列的分布式数据库,如果需要实时的随机访问超大规模数据集,就可以使用HBase这一Hadoop应用。
跳表结构:建索引 多级索引
Hbase:布隆过滤器+跳表 每个索引范围的数据存储在不同节点上
原始数据放在HDFS,索引存放在HDFS上,顶级索引存储在HDFS,各个节点都可以访问到。zookeeper存储索引入口。
hbase需要依赖于zookeeper
安装hbase 需要 jdk zookeeper hadoop
选择版本的时候需要考虑和其他组件的兼容性问题。
1) 上传安装包
2) 解压
3)配置环境变量 sudi vi export HBASE_HOME= /安装目录 PATH= :$HBASE_HOME /bin source /etc/profile hbase version 验证
4)修改配置文件 hbase_home/conf vi hbase-env.sh export JAVA_HOME=/home/hadoop/jdk1.8.0_73
export HBASE_MANAGES_ZK= false true:代表使用自带的zookeeper 只适合单机模式,不适合分布式模式
hbase-site.xml 需要添加zookeeper地址 vi hbase_site.xml
regionservers 配从节点的主机名
vi backup-masters 配置hmaster的备份节点
5) 将hadoop的hdfs-site.xml core-site.xml放在hbase的conf 下
6) 将hbase的安装包发送到其他节点
7) 启动 启动hadoop ha 1.zookeeper zkServer.sh start 每个节点单独启动 检查状态 zkServer.sh status
2. hdfs start-dfs.sh jps检查
3. yarn start-yarn.sh 主节点单独启动 yarn-daemon.sh start resourcemanager
启动hbase start-habse.sh tail -100 /日志存放路径
HBase架构是主从架构,一主(Hmaster)多从(Hregionserver) 安装3个节点
hbase依赖于HDFS做底层数据存储,依赖于MapReduce做数据计算,依赖于zooKeeper做服务协调
noSQL: 不支持SQL,可以通过phoenix工具
特点:
仅能通过主键(rowkey)和主键的范围来检索数据
只支持简单查询,不支持join等复杂操作
不支持复杂的食物,只支持行级事物(可通过hive进行Join)
支持的数据类型:byte[]
主要用来存储结构化和半结构化的松散数据(音频图片视频)
表的特点: 大、面向列、稀疏(空值不占用存储空间)、无模式
hbase 中的相关概念:
行键:rowkey: 一行数据的标志,类似于Mysql中国的ID
1)行键不易过大,通常10-100byte 最好是16
2)存储中默认会按照rowkey的字典顺序进行升序
列簇: 包含一个或多个列
通常一个表中的列簇个数不要超过3个
列簇是hbase存储的物理切分单位 ,具有相同IO特性(业务)的,通常情况下会一起访问放在一个列簇里
列簇越多,存储的文件个数越多
没有严格的表结构,列簇是在建表的时候执行的,列是在数据插入的时候指定的,以及列值。
时间戳:
每插入一条数据就会自动生成一个时间戳,作用是记录数据的版本。Hbase中可以存储多个版本的数据。
单元格cell:
指一条数据某一列的某个一值
定位一个单元格需要: 行键+列簇+时间戳
数据查询的方式:
全表扫描
通过rowkey查询 范围
查询单个rowkey的数据
架构和存储: 主从架构 寻址路径在zookeeper中
主: hmaster 从:hregionserver(用于管理region的,即hbase在行方向上的逻辑切分概念)
一个hbase的表,在最开始的时候只有一个region,面向行的,随着数据的增加,region会分裂,依然按照行方向进行分裂,取中间 意义是便于查询建索引。
shell 常用命令:
HBASE中弱化库的概念,namespace
help +命令
create_namespace 建库
hbase-daemon.sh start master 启动一个hmaster
jps 查看启动程序
tail -100 日志文件路径.log 查看日志是否成功启动 最后可以通过网页版访问hadoop服务器查看
表相关命令:
创建表 help ddl , create 't1', {NAME = > 'f1'}, {NAME => 'f2'} t1是表名,f是列簇名/ creat '表名', '列簇1', ' 列簇2'
list 查看所有列表信息
describe '表名' 查看表的描述信息 TTL 生命周期 VERSION 保存版本默认是1,建表的时候可以修改信息,>是赋值的意思
增 dml
put '表名' , '行键', ' 列簇 : 列名', '值' 行键相同的会被认为是同一行
全表扫描: scan '表名'
删
delete
清空表数据 truncate '表名' 先禁用再清空又启用
删除表 disable '表名' drop '表名' 先禁用才能删除
改
alter '表名' , NAME => '列簇名', VERSION = > 版本 存在列簇的情况下,修改版本;如果不存在列簇就回添加列簇
查
get
scan