HBase实战

HBase 命令操作

// hbase 服务
start-hbase.sh
stop-hbase.sh

HBase Shell的常见命令

help
create 'tbName','cf1;'cf2' 
list //显示表
describe 'tbname'

put 'tb_name','rowkey','cf_1:msg','cf_2:msg'

put 'tb_name','rowkey','column','value',timestamp
put 'ns:table','rowkey','family:column','value',timestamp
put 'ns1:t1', 'r1', 'c1', 'value'
put 't1', 'r1', 'c1', 'value'


// 删除表
disable 'tb_name'
drop 'tb_name'
exist 'tb_name'

``


# HBase的启动脚本和源码

### start-hbase.sh

. "$bin"/hbase-config.sh

commandToRun="start"

查看是否是分布式: 配置distributed 是否为ture;

distMode=$bin/hbase --config "$HBASE_CONF_DIR" org.apache.hadoop.hbase.util.HBaseConfTool hbase.cluster.distributed | head -n 1

if [ "distMode" == 'false' ] then "bin"/hbase-daemon.sh --config "{HBASE_CONF_DIR}"commandToRun master @ else "bin"/hbase-daemons.sh --config "{HBASE_CONF_DIR}"commandToRun zookeeper
"bin"/hbase-daemon.sh --config "{HBASE_CONF_DIR}" commandToRun master "bin"/hbase-daemons.sh --config "{HBASE_CONF_DIR}" \ --hosts "{HBASE_REGIONSERVERS}" commandToRun regionserver "bin"/hbase-daemons.sh --config "{HBASE_CONF_DIR}" \ --hosts "{HBASE_BACKUP_MASTERS}" $commandToRun master-backup
fi

// 正常的话, 启动脚本会触发这4 条命令:

hbase-daemons.sh --config "{HBASE_CONF_DIR}" start zookeeper hbase-daemon.sh --config "{HBASE_CONF_DIR}" start master
hbase-daemons.sh --config "{HBASE_CONF_DIR}" --hosts ldsver53 start regionserver hbase-daemons.sh --config "{HBASE_CONF_DIR}" --hosts ldsver53 start master-backup



### hbase-daemon.sh和 hbase-daemons.sh
1. 启动单个服务: hbase-daemon.sh

thiscmd="bin/(basename {BASH_SOURCE-0})"

(start)
check_before_start
hbase_rotate_log HBASE_LOGOUT hbase_rotate_logHBASE_LOGGC
echo starting command, logging toHBASE_LOGOUT
thiscmd --config "{HBASE_CONF_DIR}"
foreground_start commandargs < /dev/null > {HBASE_LOGOUT} 2>&1 & disown -h -r sleep 1; head "{HBASE_LOGOUT}"
;;


hbase 命令的

"JAVA" -Dproc_COMMAND -XX:OnOutOfMemoryError="kill -9 %p" HEAP_SETTINGSHBASE_OPTS CLASS "@"

// 该命令的最终执行java命令如下:
hbase脚本: Java=/usr/java/jdk-release/bin/java, -Dproc_COMMAND=Dproc_master, HEAP_SETTINGS= , HBASE_OPTS=-XX:+UseConcMarkSweepGC -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=35040 -Dhbase.log.dir=/home/bigdata/log/hbase -Dhbase.log.file=hbase-bigdata-master-ldsver55.log -Dhbase.home.dir=/home/bigdata/app/hbase-release -Dhbase.id.str=bigdata -Dhbase.root.logger=INFO,RFA -Djava.library.path=/home/bigdata/app/hadoop-release/lib/native:/home/bigdata/app/hbase-release/lib/native/Linux-amd64-64 -Dhbase.security.logger=INFO,RFAS, CLASS=org.apache.hadoop.hbase.master.HMaster, 入参=start



// 2. 启动多个服务: hbase-daemons.sh


# HBase的部署和实战

HBase是分布式的实时数据库, 需要zk来做集群消息协调组件;

### 相关zk版本的安装:

// 查看该HBASE对应的zookeeper版本;
find -name "zookeep" ./HBASE_HOME ,

// 将报名拼接到 archive.cloudera.com/cdh5/cdh/5/后面;
wget http://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.16.2.tar.gz


2. 配置 hbase-env.sh

export HBASE_LOG_DIR=${HBASE_HOME}/logs

使用外部zk,true表示使用hbase自带的zk

export HBASE_MANAGES_ZK=false

创建pids目录

export HBASE_PID_DIR=/opt/hbase/pids
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
export JAVA_HOME=/home/app/java/jdk1.8.0_65


3.  配置hbase-site.xml



<property>
<name>hbase.rootdir</name>
<value>hdfs://ldsver02:9000/hbase</value>
</property>


<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>


<property>
<name>hbase.tmp.dir</name>
<value>/opt/hbase/tmpDir</value>
</property>


<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>


<property>
<name>hbase.regionserver.restart.on.zk.expire</name>
<value>true</value>
</property>


<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/zk/data</value>
</property>


<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>


集群模式的HBase配置

<configuration>

<property>
<name>hbase.rootdir</name>
<value>hdfs://ldsver55:9000/hbase</value>
</property>


<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>


<property>
<name>hbase.tmp.dir</name>
<value>/home/bigdata/tmp/hbase</value>
</property>


<property>
<name>hbase.zookeeper.quorum</name>
<value>ldsver53,1dsver54,ldsver55</value>
</property>


<property>
<name>hbase.regionserver.restart.on.zk.expire</name>
<value>true</value>
</property>


<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>

</configuration>

// 配置slave节点
vim regionservers
ldsver53
ldsver54





4. 运行测试hbase命令

hbase version
hbase shell




# 问题记录

### hbase shell 命令行中国年不会回车
设置一下xshell的相关属性就好了
* DEL -> ASCII 127
* BACKSPACE -> ASCII 127

![图片.png](https://upload-images.jianshu.io/upload_images/22695602-ba34b1651caec038.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。