一个初学者的大数据学习过程
HBase是Java 编写的,需要支持当前的Java运行时环境。Region服务器的内存主要服务于内部数据结构,例如MemStore和BlockCache,因此需要安装64位操作系统才能分配和使用大于4G的内存空间。HBase与Hadoop安装在一起,能实现数据本地化,很大程度地减少网络I/O的需求,同时加快处理速度。要有效运行所有Hadoop和HBase进程,需要拥有一定数量的磁盘、CPU和内存资源。
HBase有两种运行模式:单机模式和分布式模式。
Apache 版本:http://archive.apache.org/dist/hbase/
CDH 版本:http://archive-primary.cloudera.com/cdh5/cdh/5/
这里选择下载 hbase-1.2.0-cdh5.10.0.tar.gz 版本的安装包,上传至主节点 app 目录。
使用如下命令解压 HBase 安装包:
tar -zxvf hbase-1.2.0-cdh5.10.0.tar.gz
为了方便操作,使用如下命令创建软连接:
ln -s hbase-1.2.0-cdh5.10.0 hbase
因为 HBase 启动依赖 hdfs 配置信息,需要将 hdfs 配置文件拷贝到主节点 hbase 的 conf 目录下
cp core-site.xml /home/hadoop/app/hbase-1.2.0-hadoop5.10.0/conf/
cp hdfs-site.xml /home/hadoop/app/hbase-1.2.0-hadoop5.10.0/conf/
将主节点下的 hbase 安装目录分发到其他节点
deploy.sh hbase-1.2.0-cdh5.10.0 /home/hadoop/app/ slave
然后分别创建软链接
ln -s hbase-1.2.0-cdh5.10.0 hbase
在所有节点创建之前规划好的目录。
runRemoteCmd.sh “mkdir -p /home/hadoop/data/hbase/logs” all
集群依赖 Zookeeper 集群,所以需要先启动 Zookeeper
runRemoteCmd.sh “/home/hadoop/app/zookeeper/bin/zkServer.sh start” all
Hbase 数据都存储在 hdfs 上,它依赖与 hdfs 集群,所以先启动 hdfs。
sbin/start-dfs.sh
通过如下命令启动 hbase。
bin/start-hbase.sh
备注:也可以换一个节点启动 HBase,在哪个节点启动 HBase,哪个节点就是 master 角色。
运行以下命令可以停止 HBase 集群,一旦启动了这个脚本,我们将会看到一条描述集群正在停止的信息,该信息会周期性地打印”. ”字符。(这仅仅表明脚本正在运行,并不是进度的反馈或者隐藏有用的信息)
$bin/stop-hbase.sh
stopping hbase…
关闭脚本大概需要几分钟完成,如果集群机器比较多,需要执行更长的时间。如果用户运行的是分布式集群,在关闭 hadoop 集群之前一定要确认 hbase 已经被正常关闭。
访问地址:http://master:60010 查看 hbase 相关信息。
HBase 为用户提供了一个非常方便的使用方式, 我们称之为“HBase Shell”。HBase Shell 提供了大多数的 HBase 命令, 通过 HBase Shell 用户可以方便地创建、删除及修改表, 还可以向表中添加数据、列出表中的相关信息等。
bin/hbase shell
#查看命令组
hbase>help
#查询 HBase 服务器状态
hbase>status
#查看 HBase 版本
hbase>version
Ddl 操作(Data Definition Language)数据定义语言
#创建一个表
hbase(main):002:0> create ‘myhbase’,‘cf’
#查看 HBase 所有表
hbase(main):003:0> list
#描述表结构
hbase(main):004:0> describe ‘myhbase’
#删除表
hbase(main):005:0> disable ‘myhbase’
hbase(main):006:0> drop ‘myhbase’
hbase(main):007:0> list
Dml 操作(Data Manipulation Language)是数据操纵语言
#创建一个表
hbase(main):002:0> create ‘user’,‘cf’
#插入数据
put ‘user’, ‘1’, ‘cf:name’, ‘xiaoli’
put ‘user’, ‘1’, ‘cf:age’, ‘24’
put ‘user’, ‘1’, ‘cf:birthday’, ‘1987-06-17’
put ‘user’, ‘1’, ‘cf:company’, ‘alibaba’
put ‘user’, ‘1’, ‘cf:contry’, ‘china’
put ‘user’, ‘1’, ‘cf:province’, ‘zhejiang’
put ‘user’, ‘1’, ‘cf:city’, ‘hangzhou’
#扫描表所有数据
hbase(main):011:0> scan ‘user’
#根据 rowkey 获取数据
hbase(main):012:0> get ‘user’,‘1’
#根据 rowkey 更新一条数据
hbase(main):013:0>put ‘user’, ‘1’, ‘cf:age’, ‘28’
hbase(main):014:0> get ‘user’,‘1’
#查询表中总记录数据
hbase(main):015:0> count ‘user’
#删除某一列数据
hbase(main):016:0> delete ‘user’, ‘1’, ‘cf:age’
hbase(main):017:0> get ‘user’,‘1’
#清空 hbase 表数据
hbase(main):018:0> truncate ‘user’
hbase(main):019:0> scan ‘user’
根据项目业务需求创建表结构
业务数据下载地址:http://www.sogou.com/labs/resource/q.php
数据格式为:访问时间\t 用户 ID\t[查询词]\t 该 URL 在返回结果中的排名\t 用户点击的顺序号\t 用户点击的 URL
其中,用户 ID 是根据用户使用浏览器访问搜索引擎时的 Cookie 信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户 ID
创建 hbase 业务表:create ‘sogoulogs’,‘info’