
NoSQL 不只是 SQLNoSQL的全名是“Not Only SQL”不仅仅是 SQL。我们平时熟悉的MySQL / Excel 表格是关系型数据库像严格的“网格座位表”每一行每一列都必须固定。而NoSQL更灵活可以存储各种各样格式的数据不用死板的表格生活比喻关系型数据库 学校里固定的座位表每个人必须坐自己编号的位置不能乱放书包。NoSQL 你的手账本/日记本可以贴照片、画画、写文字甚至夹电影票完全随心所欲NoSQL 四大金刚4种主要类型文档型像 JSON 文件例如 MongoDB。存放“简历”一样灵活的文档。键值型最简单的“绰号→本人”例如 Redis。 超快查找。列族型HBase 属于这一类 下面会详细介绍 图类型存储人和人之间的关系比如社交网络好友推荐。NoSQL 的优点为什么需要它数据量巨大时也能飞快读写 (海量数据)可以随时增加新的字段不用改动旧结构容易在多台机器上“分布式”运行成本低很适合存储图片、评论、游戏数据、物联网信息等HBase 列族数据库 · 大数据明星HBase是 Apache 开源的一个NoSQL 列式存储数据库它建立在 Hadoop大数据技术家族之上可以存储几十亿行 × 几百万列的超大表格超级图书馆类比普通图书馆SQL每本书要按编号放好改位置很麻烦。HBase 图书馆有无数个书架你可以按“读者ID时间戳”快速找到任何一本书还能存不同版本的笔记。特别适合存储互联网公司每天产生的海量日志、推荐数据HBase 核心特点列式家族存储数据按“列族”分组比如“个人信息”列族包含姓名、年龄“成绩”列族包含数学、语文。不用的列不占用空间。水平扩展加一台普通电脑就能存储更多数据性能几乎线性增长。自动版本管理每个单元格可以保存多个历史版本像“时光机”。强一致性读到的永远是最新写入的数据不会混乱。随机读写 范围扫描可以精确查找某一行也可以扫描一个范围的数据。NoSQL vs 传统SQL餐厅点菜对比对比图HBase 怎么工作的(架构小漫画)HBase 采用主从架构主要有三个角色HMaster 总管理员负责分配数据到哪台机器处理失败节点。RegionServer 工作小弟负责真正的读写数据每个 RegionServer 管理若干“Region”(数据分片)。HDFS 底层仓库数据最终存在硬盘上且自动复制多份保证安全。工作流程图现实生活里 HBase 用来做什么许多世界500强公司都在用 HBase 来存储海量数据小米 / 快手存储用户行为日志、推荐系统特征。Facebook消息系统和海量指标监控早期消息组件用HBase。阿里巴巴存储商品交易记录、用户历史浏览等。电信运营商话单查询、位置信息存储一秒内查询上亿条数据。NoSQL 与 HBase 的关系图NoSQL 是一个大家族HBase 是这个家族里特别能打的一位成员 ——列族数据库代表。就像 “水果”包含苹果、香蕉而 HBase 就是那个“大榴莲” 外表可能有点复杂但内在无敌海量存储关系图实验内容在已安装好的Hadoop环境基础上安装并配置HBase。实验步骤1.首先在Linux本地新建/data/hbase1目录用于存放所需文件。mkdir -p /data/hbase1切换目录到/data/hbase1下使用wget命令下载HBase所需安装包hbase-1.0.0-cdh5.4.5.tar.gz。cd /data/hbase1 wget http://192.168.1.150:60000/allfiles/hbase1/hbase-1.0.0-cdh5新建/切换目录下载安装包2.将/data/hbase1目录下HBase的安装包hbase-1.0.0-cdh5.4.5.tar.gz解压缩到/apps目录下。tar -xzvf /data/hbase1/hbase-1.0.0-cdh5.4.5.tar.gz -C /apps再切换到/apps目录下将/apps/hbase-1.0.0-cdh5.4.5/重命名为hbase。cd /apps mv /apps/hbase-1.0.0-cdh5.4.5/ /apps/hbase解压并且重命名3.添加HBase的环境变量。首先使用vim打开用户环境变量文件。sudo vim ~/.bashrc在环境变量文件末尾位置追加HBase的bin目录路径相关配置并保存退出。即下列内容#hbase export HBASE_HOME/apps/hbase export PATH$HBASE_HOME/bin:$PATH执行source命令使环境变量生效。source ~/.bashrc此时就可以调用HBase的bin目录下的脚本了。先来查看一下HBase的版本信息。hbase version进入编辑4.下面开始配置HBase。切换目录到/apps/hbase/conf目录下并使用vim编辑hbase-env.sh文件。cd /apps/hbase/conf vim hbase-env.sh追加配置内容到hbase-env.sh中并保存退出。export JAVA_HOME/apps/java export HBASE_MANAGES_ZKtrue export HBASE_CLASSPATH/apps/hbase/conf很明显JAVA_HOME为java程序所在位置HBASE_MANAGES_ZK表示是否使用HBase自带的zookeeper环境HBASE_CLASSPATH指向hbase配置文件的路径。配置5.下面使用vim打开hbase-site.xml文件。vim hbase-site.xml在两个configuration之间添加如下内容并保存退出。property namehbase.master/name valuelocalhost/value /property property namehbase.rootdir/name valuehdfs://localhost:9000/hbase/value /property property namehbase.cluster.distributed/name valuetrue/value /property property namehbase.zookeeper.quorum/name valuelocalhost/value /property property namehbase.zookeeper.property.dataDir/name value/data/tmp/zookeeper-hbase/value /property配置项说明hbase.masterHBase主节点地址。hbase.rootdirHBase文件所存储的位置。hbase.cluster.distributedHBase是否为分布式模式。hbase.zookeeper.quorum这里是配置ZooKeeper的服务器的地方。hbase.zookeeper.property.dataDir这里表示HBase在ZooKeeper上存储数据的位置。注意这里hbase.zookeeper.property.dataDir目录需要提前创建。sudo mkdir -p /data/tmp/zookeeper-hbase将/data/tmp/zookeeper-hbase目录切换所属用户为zhangyu及用户组为zhangyu。sudo chown -R zhangyu:zhangyu /data/tmp/zookeeper-hbase6.使用vim编辑/apps/hbase/conf/regionservers文件此文件存储了HBase集群节点的ip地址目前只有一台节点所以只需要填写localhost即可。vim /apps/hbase/conf/regionservers修改文件内容为localhost修改内容为locaalhost7.下面输入jps查看当前进程Hadoop进程是否已经启动。jps若未启动则切换到/apps/hadoop/sbin目录下启动Hadoop。cd /apps/hadoop/sbin ./start-all.sh当Hadoop相关进程启动后进入HBase的bin目录下启动HBase服务。cd /apps/hbase/bin/ ./start-hbase.sh8.输入jps查看HBase相关进程是否存在。jps输出结果为可以看到HMaster、HRegionServer、HQuorumPeer进程都已启动。为了进一步测试HBase安装是否正常进入HBase Shell接口。hbase shell注意如果我们使用SecureCRT这样的远程访问工具输错命令时直接按Backspace键是不能删除掉前面的文字的。在这里可以使用Ctrl键Backspace键来删除前面输错的文字。输入list的命令查看当前有哪些HTable表。list创建一张表tb表中含有一个列簇mycf。create tb,mycf再次输入list列出HBase中的表。到此hbase的安装测试都已完毕